CentOS Ansible 配置
介绍
Ansible 是一款强大的自动化工具,广泛用于配置管理、应用部署和任务自动化。它使用简单的 YAML 语法来描述任务,并通过 SSH 与目标主机通信,无需在目标主机上安装额外的代理程序。本文将指导你在 CentOS 系统上配置和使用 Ansible,帮助你快速上手自动化运维。
安装 Ansible
在 CentOS 上安装 Ansible 非常简单。首先,确保你的系统已经更新到最新版本:
sudo yum update -y
接下来,安装 epel-release
仓库,因为 Ansible 位于 EPEL 仓库中:
sudo yum install epel-release -y
然后,安装 Ansible:
sudo yum install ansible -y
安装完成后,可以通过以下命令验证 Ansible 是否安装成功:
ansible --version
输出应类似于:
ansible 2.9.27
config file = /etc/ansible/ansible.cfg
configured module search path = ['/home/user/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
...
配置 Ansible
Ansible 的配置文件位于 /etc/ansible/ansible.cfg
。你可以根据需要修改此文件,但通常默认配置已经足够满足大多数需求。
配置 Inventory 文件
Inventory 文件用于定义 Ansible 管理的主机。默认的 Inventory 文件位于 /etc/ansible/hosts
。你可以编辑此文件,添加你需要管理的主机。
例如,添加一个名为 webservers
的主机组:
[webservers]
192.168.1.10
192.168.1.11
你还可以为主机指定变量:
[webservers]
192.168.1.10 ansible_user=root ansible_password=your_password
192.168.1.11 ansible_user=root ansible_password=your_password
在生产环境中,建议使用 SSH 密钥认证而不是明文密码。
使用 Ansible
执行 Ad-Hoc 命令
Ansible 允许你通过命令行直接执行任务,这些任务称为 Ad-Hoc 命令。例如,你可以使用以下命令在所有 webservers
主机上执行 ping
操作:
ansible webservers -m ping
输出应类似于:
192.168.1.10 | SUCCESS => {
"changed": false,
"ping": "pong"
}
192.168.1.11 | SUCCESS => {
"changed": false,
"ping": "pong"
}
编写 Playbook
Playbook 是 Ansible 的核心,它使用 YAML 格式描述任务。以下是一个简单的 Playbook 示例,用于在所有 webservers
主机上安装 Apache:
---
- hosts: webservers
become: yes
tasks:
- name: Ensure Apache is installed
yum:
name: httpd
state: present
- name: Ensure Apache is running
service:
name: httpd
state: started
enabled: yes
将此 Playbook 保存为 install_apache.yml
,然后使用以下命令执行:
ansible-playbook install_apache.yml
输出应显示每个任务的执行结果。
实际案例
假设你需要在一个新的 CentOS 服务器上部署一个简单的 Web 应用。你可以使用 Ansible 来自动化以下步骤:
- 安装必要的软件包(如 Apache、PHP)。
- 配置 Apache 虚拟主机。
- 部署 Web 应用代码。
以下是一个示例 Playbook:
---
- hosts: webservers
become: yes
tasks:
- name: Install Apache and PHP
yum:
name:
- httpd
- php
state: present
- name: Configure Apache virtual host
template:
src: /path/to/vhost.conf.j2
dest: /etc/httpd/conf.d/vhost.conf
notify: Restart Apache
- name: Deploy web application
copy:
src: /path/to/webapp/
dest: /var/www/html/
owner: apache
group: apache
mode: '0755'
handlers:
- name: Restart Apache
service:
name: httpd
state: restarted
通过这个 Playbook,你可以轻松地在多台服务器上部署相同的 Web 应用。
总结
通过本文,你已经学习了如何在 CentOS 上安装和配置 Ansible,并使用它来执行 Ad-Hoc 命令和编写 Playbook。Ansible 的强大之处在于它的简单性和灵活性,能够帮助你轻松实现自动化运维。
附加资源
- Ansible 官方文档
- Ansible Playbook 最佳实践
- Ansible Galaxy - 查找和分享 Ansible 角色
练习
- 编写一个 Playbook,用于在 CentOS 服务器上安装和配置 Nginx。
- 使用 Ansible 管理一组服务器,确保所有服务器上的时间同步(提示:使用
ntp
模块)。 - 探索 Ansible 的
roles
功能,并尝试将上述 Playbook 转换为一个可重用的角色。
通过不断练习,你将更加熟练地掌握 Ansible,并能够应对更复杂的自动化任务。