在Linux系统中配置Ansible自动化部署工具,能够有效简化多服务器环境下的应用部署、配置管理等重复性工作,降低人工操作带来的错误风险。Ansible基于SSH协议工作,不需要在目标主机上安装额外的客户端,部署和使用都非常便捷。

环境准备
配置Ansible前需要先确认控制节点和目标节点的环境满足要求,控制节点需要是Linux或者macOS系统,本文以CentOS 7作为控制节点为例,目标节点可以是任意支持SSH的Linux系统。首先需要确保控制节点已经安装了Python 3.6及以上版本,同时能够正常访问目标节点的SSH服务。
安装Ansible
在CentOS 7系统中可以通过yum包管理器安装Ansible,首先需要安装epel源,然后执行安装命令。如果是Ubuntu系统可以使用apt包管理器进行安装,安装完成后可以通过版本查看命令确认是否安装成功。
# 安装epel源 yum install -y epel-release # 安装Ansible yum install -y ansible # 查看Ansible版本 ansible --version
配置主机清单
Ansible通过主机清单文件来管理需要操作的目标主机,默认的主机清单文件路径是/etc/ansible/hosts,也可以自定义清单文件。在主机清单中可以分组管理主机,还可以为不同主机设置变量,方便后续批量操作。
以下是一个简单的主机清单配置示例,将两台目标主机分到web组:
# 定义web服务器组 [web] 192.168.1.10 192.168.1.11 # 可以为组设置变量 [web:vars] ansible_user=root ansible_port=22
配置SSH免密登录
Ansible默认通过SSH连接目标主机,配置控制节点到目标节点的免密登录可以避免每次执行命令都需要输入密码,提升操作效率。首先在控制节点生成SSH密钥对,然后将公钥复制到目标主机的authorized_keys文件中。
# 生成SSH密钥对,一路回车使用默认配置即可 ssh-keygen -t rsa # 将公钥复制到目标主机,替换下面的IP为实际的目标主机IP ssh-copy-id root@192.168.1.10 ssh-copy-id root@192.168.1.11
配置完成后可以测试SSH连接是否正常,直接执行ssh root@192.168.1.10,如果能够直接登录不需要输入密码,说明免密配置成功。
验证Ansible连通性
完成上述配置后,可以使用Ansible的ping模块测试控制节点和目标主机的连通性,确认Ansible能够正常管理目标主机。
# 测试web组所有主机的连通性 ansible web -m ping
如果返回结果中每台主机都显示pong,说明Ansible配置成功,已经可以正常管理目标主机。
编写基础playbook
playbook是Ansible的核心配置语言,使用YAML格式编写,可以定义一系列的任务,实现复杂的自动化部署逻辑。以下是一个简单的playbook示例,用于在目标主机上安装nginx服务:
---
- name: 安装nginx服务
hosts: web
tasks:
- name: 安装nginx
yum:
name: nginx
state: present
- name: 启动nginx服务并设置开机自启
service:
name: nginx
state: started
enabled: yes
保存上述内容为install_nginx.yml,然后执行以下命令运行playbook:
ansible-playbook install_nginx.yml
执行完成后,web组的所有主机都会自动安装并启动nginx服务,实现了自动化的应用部署。
常用配置优化
可以通过修改Ansible的配置文件/etc/ansible/ansible.cfg来优化使用体验,比如设置默认的主机清单路径、调整SSH连接超时时间、开启Facts缓存等。以下是一些常用的配置项:
- inventory:指定默认的主机清单文件路径
- remote_user:指定默认的远程连接用户
- ssh_args:自定义SSH连接参数,比如添加-o ControlMaster=auto开启SSH连接复用
- gathering:设置Facts收集策略,smart表示按需收集,提升执行速度
合理配置这些参数可以让Ansible在大规模主机管理场景下运行更加高效。