name: ansible-playbooks user-invocable: false description: 用于编写和组织Ansible剧本,以实现自动化配置管理和基础设施编排。 allowed-tools: []
Ansible剧本
编写和组织Ansible剧本进行配置管理。
基本剧本
---
- name: 配置Web服务器
hosts: webservers
become: yes
vars:
http_port: 80
app_version: "1.0.0"
tasks:
- name: 安装nginx
apt:
name: nginx
state: present
update_cache: yes
- name: 启动nginx
service:
name: nginx
state: started
enabled: yes
- name: 部署应用程序
copy:
src: ./app
dest: /var/www/html
owner: www-data
mode: '0755'
库存
[webservers]
web1.example.com
web2.example.com
[databases]
db1.example.com
[production:children]
webservers
databases
常用模块
包管理
- name: 安装包
apt:
name:
- nginx
- git
- python3
state: present
文件操作
- name: 复制配置
template:
src: nginx.conf.j2
dest: /etc/nginx/nginx.conf
backup: yes
notify: 重启nginx
处理器
handlers:
- name: 重启nginx
service:
name: nginx
state: restarted
最佳实践
使用角色
roles/
├── webserver/
│ ├── tasks/
│ │ └── main.yml
│ ├── handlers/
│ │ └── main.yml
│ └── templates/
│ └── nginx.conf.j2
幂等性
- name: 确保目录存在
file:
path: /opt/app
state: directory
mode: '0755'