Ansible剧本(Playbook)是用来定义和执行一系列任务的文件,通常使用YAML格式编写。一个典型的Ansible剧本包括以下几个部分:
1. 剧本的开始
剧本文件以三个连字符开头(---
),表示YAML文档的开始。
---
2. 名称(可选)
剧本可以指定一个名称,描述剧本的用途或功能。
- name: Install and configure web server
3. 主机/主机组
指定剧本将在哪些主机或主机组上执行任务。
hosts: web_servers
4. 变量(可选)
可以在剧本中定义变量,用于在任务中使用。
vars:
http_port: 80
max_clients: 200
5. 任务
剧本的核心部分是任务列表。每个任务描述了在远程主机上执行的具体操作。
tasks:
- name: Ensure Apache is installed
package:
name: apache2
state: present
- name: Ensure Apache is running and enabled
service:
name: apache2
state: started
enabled: yes
6. 处理错误和条件执行(可选)
你可以定义任务的错误处理方式,并根据条件决定是否执行任务。
ignore_errors: yes
when: ansible_distribution == 'Ubuntu'
7. 外部变量(可选)
可以引用外部变量文件,这些变量文件可以包含在剧本中使用的变量。
vars_files:
- vars/main_vars.yml
8. 处理任务结果(可选)
可以定义处理任务结果的处理器,如收集日志或发送通知。
handlers:
- name: restart apache
service:
name: apache2
state: restarted
9. 结尾
剧本以三个点号结尾(...
),表示YAML文档的结束。
...
完整示例
以下是一个完整的Ansible剧本示例:
---
- name: Install and configure web server
hosts: web_servers
vars:
http_port: 80
max_clients: 200
tasks:
- name: Ensure Apache is installed
package:
name: apache2
state: present
- name: Ensure Apache is running and enabled
service:
name: apache2
state: started
enabled: yes
handlers:
- name: restart apache
service:
name: apache2
state: restarted
...
这个示例剧本安装并配置一个Apache web服务器,定义了变量(http_port
和max_clients
),执行了安装Apache软件包、启动并启用Apache服务的任务,并定义了在需要时重启Apache服务的处理器。