HCRM博客

CentOS系统自动化管理攻略,Ansible实战教程

CentOS Ansible 使用详解:开启高效自动化运维之路

Ansible:自动化运维的利器 在管理多台CentOS服务器的复杂环境中,手动执行重复任务效率低下且易出错,Ansible应运而生,这款基于Python的开源工具,凭借其无代理架构、声明式语言强大的模块化设计,成为自动化配置管理、应用部署和任务编排的首选,其核心魅力在于使用SSH协议进行通信,无需在目标服务器安装额外代理,大大简化了部署和管理流程。

CentOS系统Ansible环境部署

CentOS系统自动化管理攻略,Ansible实战教程-图1
  1. 管理节点安装: 在作为控制中心的CentOS机器上,启用EPEL仓库并安装Ansible:

    # CentOS 7
    sudo yum install epel-release
    sudo yum install ansible
    # CentOS 8
    sudo dnf install epel-release
    sudo dnf install ansible

    验证安装:ansible --version

  2. 受控节点准备:

    • SSH访问: 确保管理节点可通过SSH密钥(推荐)或密码连接到所有目标CentOS服务器,生成并分发SSH密钥是更安全高效的方式:
      ssh-keygen -t rsa  # 在管理节点生成密钥
      ssh-copy-id user@target_server_ip  # 将公钥复制到目标服务器
    • Python环境: Ansible模块运行需要Python,CentOS 7/8 默认安装Python 2.7或3.6+,基本满足要求,若需更新,请谨慎操作。

核心组件与基础操作

  1. 清单文件:定义管理对象 创建/etc/ansible/hosts或自定义清单文件(如my_inventory.ini),组织服务器:

    [web_servers]
    web1.example.com ansible_user=admin
    web2.example.com
    [db_servers]
    db1.example.com
    db2.example.com
    [datacenter:children]  # 分组嵌套
    web_servers
    db_servers
  2. Ad-Hoc命令:快速执行任务 无需编写剧本,直接在命令行执行简单任务:

    CentOS系统自动化管理攻略,Ansible实战教程-图2
    # 检查所有web服务器连通性
    ansible web_servers -m ping
    # 在db服务器上安装最新安全补丁
    ansible db_servers -m dnf -a "name=* state=latest update_cache=yes" --become
    # 重启web分组中所有机器的httpd服务
    ansible web_servers -m service -a "name=httpd state=restarted" --become
    • -m: 指定模块(如 ping, dnf/yum, service, copy等)。
    • -a: 提供模块参数。
    • --become-b: 提权执行(通常需要sudo权限)。
  3. Playbook:自动化蓝图 Playbook是Ansible的核心,采用YAML格式定义复杂、可重复的自动化流程。 示例:部署Nginx (deploy_nginx.yml)

    ---
    - name: Ensure Nginx is installed and running
      hosts: web_servers  # 目标主机组
      become: yes         # 提权操作
      tasks:
        - name: Install EPEL repository (CentOS 7)
          yum:
            name: epel-release
            state: present
          when: ansible_distribution_major_version == "7"
        - name: Install Nginx
          package:
            name: nginx
            state: latest
        - name: Copy custom index.html
          copy:
            src: files/index.html
            dest: /usr/share/nginx/html/index.html
            owner: root
            group: root
            mode: '0644'
        - name: Ensure Nginx service is enabled and started
          service:
            name: nginx
            state: started
            enabled: yes
        - name: Open HTTP port in firewall
          firewalld:
            service: http
            permanent: yes
            state: enabled
          notify: Reload firewall  # 触发handler
      handlers:
        - name: Reload firewall
          systemd:
            name: firewalld
            state: reloaded

    执行Playbook:

    ansible-playbook deploy_nginx.yml

Ansible核心模块应用(CentOS场景)

  • 包管理:
    • yum (CentOS 7) / dnf (CentOS 8): 安装、更新、移除软件包。state=present/absent/latest
  • 文件管理:
    • copy: 本地文件复制到远程主机。
    • file: 设置权限、属性、创建目录/链接。state=directory/link/touch
    • template: 使用Jinja2模板动态生成配置文件(结合变量)。
  • 服务管理:
    • service / systemd: 管理服务状态(started/stopped/restarted/reloaded)和开机自启(enabled)。
  • 用户与组:
    • user / group: 管理用户账户和组。
  • 系统控制:
    • reboot: 安全重启服务器(通常配合任务等待wait_for_connection)。
    • cron: 管理计划任务。
  • 网络配置:
    • firewalld: 管理firewalld防火墙规则和服务/端口。

高效使用Ansible的建议

  1. 利用变量: 在Playbook或单独的变量文件(group_vars/, host_vars/)中定义变量,提高灵活性和复用性。
  2. 使用Roles组织内容: 将相关的任务、变量、文件、模板等按角色(roles/)组织,使Playbook结构清晰、易于共享,使用ansible-galaxy init role_name初始化角色目录。
  3. 遵循幂等性: Playbook应支持安全地多次运行,结果一致,大部分Ansible模块天生支持幂等性。
  4. 标签(Tags): 给Playbook中的任务打标签,允许选择性运行部分任务(ansible-playbook --tags "setup, deploy")。
  5. 版本控制: 将Playbook和Roles纳入Git等版本控制系统进行管理。
  6. 环境隔离: 为开发、测试、生产环境定义不同的清单文件或变量。
  7. 详实日志与错误处理: 使用-v / -vvv 增加输出详细程度,结合blockrescue处理任务错误。
  8. 定期更新: 保持Ansible版本及模块的更新,获取新功能和修复。

个人观点 在CentOS环境下,Ansible将复杂繁琐的运维操作转化为清晰、可版本控制的代码,其学习曲线平缓,带来的效率提升和错误率降低却是革命性的,无论是管理几台还是上千台服务器,将基础配置、安全加固、应用部署标准化、自动化,是运维工作走向高效、可靠的必经之路,真正掌握Ansible,意味着你拥有了掌控复杂基础设施的主动权,让服务器集群按你的设计意图精准运行。

CentOS系统自动化管理攻略,Ansible实战教程-图3

本站部分图片及内容来源网络,版权归原作者所有,转载目的为传递知识,不代表本站立场。若侵权或违规联系Email:zjx77377423@163.com 核实后第一时间删除。 转载请注明出处:https://blog.huochengrm.cn/pc/36227.html

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
请登录后评论...
游客游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~