Ansible 是一种简单高效的自动化运维工具,可以用于批量配置管理服务器。以下是使用 Ansible 实现批量配置管理服务器的步骤和一个简单的 Ansible playbook 示例。
### 使用 Ansible 批量配置管理服务器步骤
1. **安装 Ansible**
* 在控制主机(用于运行 Ansible 命令的机器)上安装 Ansible。对于基于 RedHat 的系统,可以使用以下命令安装: * `# yum install epel – release`(启用 EPEL 仓库) * `# yum install ansible`(安装 Ansible)
* 对于基于 Debian 的系统: * `# apt – update` * `# apt – install ansible`
2. **配置被管理主机列表(Inventory)**
* Ansible 通过 Inventory 文件来指定被管理的主机。默认的 Inventory 文件位置是`/etc/ansible/hosts`。可以在这个文件中定义主机和主机组。例如: * ``` [webservers] web1 ansible_host=192.168.1.10 web2 ansible_host=192.168.1.11
[dbservers] db1 ansible_host=192.168.1.20 ```
* 这里定义了两个主机组`webservers`和`dbservers`,每个组包含两台服务器。
3. **配置 SSH 访问权限**
* Ansible 通常通过 SSH 连接被管理主机来执行任务。需要确保控制主机能够通过 SSH 无密码登录到被管理主机。可以使用 SSH 密钥认证来实现。在控制主机上生成 SSH 密钥对(如果没有): * `ssh-keygen`(按照提示操作,通常可以直接回车使用默认设置) * 然后将公钥复制到被管理主机上,例如对于`web1`: * `ssh-copy-id user@192.168.1.10`(假设用户为`user`)
4. **编写 Ansible playbook**
* Ansible playbook 是一个 YAML 格式的文件,用于定义要执行的任务。下面是一个简单的 playbook 示例,用于在被管理的 Web 服务器上安装 Nginx 并启动服务。
### Ansible playbook 示例
```` — – name: Install and configure Nginx on web servers hosts: webservers become: yes # 需要以 root 权限执行任务 tasks: – name: Install Nginx package apt: # 对于基于 Debian 的系统使用 apt 模块 name: nginx state: present # yum: # 对于基于 RedHat 的系统使用 yum 模块 # name: nginx # state: present
– name: Start Nginx service service: name: nginx state: started enabled: yes
– name: Open Nginx default port in firewall ufw: rule: allow port: '80' proto: tcp ````
### Ansible playbook 示例说明
1. **hosts 指定主机组** * 在`hosts: webservers`这一行指定了这个 playbook 是针对`webservers`主机组中的主机执行任务。
2. **become 参数** * `become: yes`表示需要以具有更高权限(通常是`root`)的用户身份来执行后续的任务。这是因为安装软件包和管理服务等操作通常需要管理员权限。
3. **任务定义** * **安装 Nginx 包** :`apt:name: nginx state: present`(对于基于 Debian 的系统)或`yum:name: nginx state: present`(对于基于 RedHat 的系统)会根据系统类型安装 Nginx 软件包。`state: present`表示确保软件包处于安装状态。 * **启动 Nginx 服务** :`service:name: nginx state: started enabled: yes`会启动 Nginx 服务,并设置为开机自启。 * **开放防火墙端口** :`ufw:rule: allow port: '80' proto: tcp`用于在防火墙中允许外部访问 Nginx 的默认端口 80。
4. **运行 playbook** * 在控制主机上运行以下命令来执行 playbook: * `ansible – playbook nginx – playbook.yml`(假设 playbook 文件名为`nginx – playbook.yml`)
通过这种方式,Ansible 就可以批量地在多台被管理的 Web 服务器上执行安装和配置 Nginx 的任务,大大提高了配置管理的效率。
评论前必须登录!
注册