CentOS 7 部署 Ansible 集群实战教程

  • A+

Ansible 简介

Ansible 是一款开源的 自动化运维工具,由 Python 开发,核心通过 SSH 协议(无需客户端)实现批量主机管理,支持任务编排、应用部署、配置管理、云资源操作等功能。其设计理念是“简单即正义”,通过声明式 YAML 语法降低自动化门槛,适合从中小规模到企业级环境的运维场景。

核心特性与优势

  1. 无代理架构(Agentless)
    • 直接通过 SSH 连接目标主机,无需提前安装客户端(对比 SaltStack/Puppet 更轻量)。
    • 适用场景:快速部署、临时任务、多云/混合云环境。
    • 我的实践:在河北祥辉电子科技工作时,用 Ansible 批量配置 50+ 台服务器的 Nginx 参数,10 分钟完成原本需 2 天的人工操作。
  2. 声明式 YAML 语法(Playbook)
    • 通过 YAML 文件定义任务(如安装软件、修改配置),逻辑清晰且可复用。
  3. 模块化设计
    • 提供 7500+ 内置模块(如 copytemplateservice),覆盖文件传输、服务管理、数据库操作等场景。
    • 扩展性:支持自定义模块开发(Python)。
    • 个人优化:结合 Shell 脚本封装 MongoDB 集群扩容模块,效率提升 60%。
  4. 幂等性(Idempotence)
    • 重复执行 Playbook 不会重复触发操作(如软件已安装则跳过),确保环境一致性。
    • 价值:避免因人工重复操作导致的配置漂移。

典型应用场景

场景Ansible 实现方式
批量配置管理通过 Playbook 修改多台主机的 Nginx 配置
应用部署结合 git 模块拉取代码,template 渲染配置文件
云资源操作通过 aws_ec2gcp_compute 等模块管理云实例
安全合规使用 user 模块管理权限,firewalld 配置规则

与其他工具对比

工具架构学习曲线适用场景
Ansible无代理(SSH)快速部署、中小规模环境
SaltStack代理+零MQ高性能、大规模集群
Puppet客户端-服务端企业级强管控、配置合规

一、环境规划

服务器角色主机名IP 地址
控制节点ansible-master192.168.22.11
被管理节点ansible-node1192.168.22.12
被管理节点ansible-node2192.168.22.13

二、安装 Ansible(仅控制节点操作)

  1. 配置 EPEL 源
yum install -y epel-release
  1. 安装 Ansible
yum install -y ansible
  1. 验证安装
ansible --version

三、配置 SSH 密钥认证

  1. 生成密钥
ssh-keygen -t rsa -b 2048        //回车按y,一直回车
  1. 分发公钥到节点
ssh-copy-id root@192.168.22.12
ssh-copy-id root@192.168.22.13
  1. 验证无密码登录
ssh root@192.168.22.12
ssh root@192.168.22.13

四、配置主机清单

编辑/etc/ansible/hosts

[webservers]  
192.168.22.12
192.168.22.13

[all:vars]  
ansible_connection=ssh
ansible_user=root

五、测试连接

ansible all -m ping  

执行命令后输出

192.168.22.12 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}
192.168.22.13 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}

六、执行命令测试

CentOS 7 部署 Ansible 集群实战教程
xxx