前言

在当今追求高效运维与自动化的时代,手动逐台配置服务器不仅耗时费力,更容易引入人为错误,难以满足快速迭代和规模化管理的要求。Ansible AWX作为一款强大的开源IT自动化平台,正是解决这一痛点的利器。它提供了直观的Web界面、基于角色的访问控制、任务调度以及可视化工作流编排,将Ansible的强大能力封装成易于管理和协作的形式。

批量管理主机和自动化部署软件(如Nginx这样的核心Web服务)是AWX最典型的应用场景之一。掌握如何在AWX中高效、安全地添加目标主机,并利用其能力执行批量部署任务,是提升运维效率、保障环境一致性的关键步骤。


1. 创建凭证

用于连接客户机的凭证,可以使用SSH账号密码连接,但更推荐使用SSH密钥连接

1.1 生成SSH公钥和私钥
ssh-keygen -t rsa -b 4096 -f ~/.ssh/awx_key

1.2 配置公钥

  • 查看SSH公钥内容
ssh-keygen -y -f ~/.ssh/awx_key
  • 客户机配置SSH公钥
echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABCAACAQDlY5KAHVrVuHEFEfIZEvv2aHcvdPngC3GrRrgXqno24aSkttzaS/JOHNYwyZWkJlL9O8//UlbDRRn3sJsrCtPHhyYkswrIXHC1jES5AVYgmAYLGu87SFirb1T9FBj9KWcWXOlDG7sPJ9paxVvqcwkZy9Q5AgDGrhQY5cAHzQzQhy5BUza58JOzbg0pMa9Vl2gXtynPKLatikOaCBPEAOjdiXxb6ZHTbc6H/ENy/eZ0BLWiz4AcAQvf6bIgJWifysqGe/FoDcAEWbK41z3YhtPsEotX19VoLlqURmIlantxyHgPHpVtpycKFU/PuvPpy7N7N5J2DPEcPeWSp5vw3h5bNKfR3MRrd45cL5CSDArafOfUe7LjuRY7p+NW66gPh7uOBhTKWQrTyEYieD5VnKCtTPiMURlwt0ME09QYv0Nf1RT8ZZdhOu/qlMZtCMLsvwy2D6/HuFsns4VMMHvzFx059WdfndZhTFtNoGo4adnJyXmlv+mmG7cJgwyHrltz6FD0MAPsLjJZa/SBVtYKYSG1j7XaoOtajcqSEYylJyzM6DDbUTMuBNfTXWSnAv7hIIqDvWBXR235DpE7tMpa0Pib+yo6H8K0B2c5nVEquiWwUE4eO0L81/6LDpQILWW31NWVQ01TPJPtuDExeV4CLrgq+8ttCsGvtTdhLPNYYHAmrw==" >> ~/.ssh/authorized_keys

1.3 AWX配置SSH私钥

  • 查看SSH私钥内容
cat ~/.ssh/awx_key
  • AWX添加SSH私钥凭证

image-20250612105126326


2. 创建项目

用于存放 ansible playbook 的目录,也可以是通过git仓库来管理playbook,仓库地址:https://github.com/hzbb2221/ansible-application-install-samples.git

image-20250612105643509

  • 状态“成功”表示已经成功拉取playbook


3. 创建清单

创建完清单后,添加主机

image-20250612110131650

image-20250612110055033

---
ansible_host: 192.168.253.147

4. 创建模板

工作模板,用于指定作业

image-20250522165645083

  • 选择要执行任务的主机清单:host
  • 选择要执行的项目:ansible-application-install-samples
  • 选择要执行Playbooknginx-install.yml
  • 选择连接主机的凭证:SSH私钥

5. Playbook 文件内容

---
- name: 安装Nginx
  hosts: all
  become: yes
  vars:
    target_port: 10080
    nginx_conf: "/etc/nginx/nginx.conf"

  tasks:
    # 安装Nginx
    - name: 安装EPEL仓库
      yum:
        name: epel-release
        state: present

    - name: 安装Nginx
      yum:
        name: nginx
        state: present
      notify: 重启Nginx

    # 配置管理
    - name: 修改监听端口
      replace:
        path: "{{ nginx_conf }}"
        regexp: 'listen\s+80;'
        replace: 'listen {{ target_port }};'
        backup: yes
      notify: 重启Nginx

    # 验证配置
    - name: 检查配置语法
      command: nginx -t
      register: nginx_check
      changed_when: false
      failed_when: nginx_check.rc != 0

  handlers:
    - name: 重启Nginx
      service:
        name: nginx
        state: restarted
    1. 客户机是CentOS7系统,可以使用YUM方式安装Nginx
    1. 修改Nginx监听端口为10080
    1. 重启Nginx

6. 启动作业

查看输出,以下结果表示成功

image-20250612115511263


7. 查看客户机Nginx安装结果

image-20250612115634104

文章作者: hzbb
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 运维小记
Ansible 自动化 AWX
喜欢就支持一下吧
打赏
微信 微信
支付宝 支付宝