ansible实战
时间: 2025-03-24 10:06:08 浏览: 26
### 使用 Ansible 进行配置管理的实战教程
以下是关于如何通过 Ansible 实现配置管理的一个实际案例,涵盖了从环境准备到具体任务执行的过程。
#### 1. 准备工作
为了确保能够顺利运行 Playbook 和其他命令,需要先完成以下准备工作:
- **SSH 密钥生成**
在控制节点上创建 SSH 秘钥对以便无密码访问目标主机。可以使用如下命令来生成密钥[^5]:
```bash
ssh-keygen -t rsa -P '' -q -f ~/.ssh/id_rsa
```
- **验证连接**
测试与远程主机 `host1` 的连通性并确认其响应正常[^2]:
```bash
ansible host1 -m ping -o
```
---
#### 2. 创建 Apache Web Server 配置管理示例
##### (a) 编写 Inventory 文件
定义要操作的目标主机列表,在 `/etc/ansible/hosts` 或单独的 inventory 文件中指定目标机器:
```ini
[web_servers]
192.168.1.10
192.168.1.11
```
##### (b) 编写 Playbook (`apache.yaml`)
Playbook 是一组自动化任务集合,下面是一个简单的例子,展示如何安装和启动 Apache HTTP 服务:
```yaml
---
- name: Configure and start the Apache web server on all hosts
hosts: web_servers
become: yes
tasks:
- name: Install Apache package using YUM module
yum:
name: httpd
state: present
- name: Copy custom configuration file to remote servers
copy:
src: /path/to/local/httpd.conf
dest: /etc/httpd/conf/httpd.conf
owner: root
group: root
mode: '0644'
- name: Ensure Apache service is running with Service Module
service:
name: httpd
state: started
enabled: yes
```
上述 playbook 中的任务分别完成了软件包安装、自定义配置文件分发以及服务状态设置的操作[^3]。
##### (c) 查看目标主机范围
在正式运行之前,可以通过以下命令预览哪些主机会被影响[^1]:
```bash
ansible-playbook apache.yaml --list-hosts
```
---
#### 3. 管理用户权限及安全策略
假设我们需要为多个用户分配特定目录下的读取权限,则可利用 File 模块实现这一需求[^4]:
```yaml
- name: Manage authorized keys for users via loop directive
file:
path: "/home/{{ item.name }}/.ssh/authorized_keys"
owner: "{{ item.name }}"
group: "{{ item.name }}"
mode: '0600'
state: touch
vars:
user_list:
- { name: alice }
- { name: bob }
loop: "{{ user_list }}"
```
此部分脚本会遍历给定的用户名字典数组,并针对每位用户的 `.ssh/authorized_keys` 文件设定合适的属主、组和其他属性。
---
#### 总结
以上展示了基于 Ansible 执行基础服务器部署和服务初始化的一系列步骤。它不仅简化了重复性的运维劳动,还提高了跨平台一致性维护效率。
阅读全文
相关推荐


















