Ⅰ. Playbook介绍
Playbook其实就是ansible的一个任务列表,各任务按次序逐个在hosts中指定的所有主机上执行,即在所有主机上完成第一个任务后再开始第二个。在顺序运行某playbook时,如果中途发生错误,所有已执行任务都将回滚,多次执行是安全的,因为其结果均一致。使用YAML语法结构。
Ⅱ. Playbook 的组成结构
target section #定义将要执行playbook的远程主机组
variable section #定义playbook运行时需要使用的变量
task section #定义将要在远程主机上执行的任务列表
handler section #定义task执行完成以后需要调用的任务
Ⅲ. Playbook示例
# cat test.yml
---
- hosts: all #指定所有主机组
vars: #指定变量
http_dir: /etc/httpd/conf
remote_user: root #指定root执行
tasks:
- name: Install NTP #安装NTP服务
yum: name=ntp state=installed - name: Enable NTP #开启NTP服务
service: name=ntpd state=started enabled=yes - name: CP files #通过执行cp语句拷贝文件
command: cp /etc/hosts /etc/hosts.bk - name: copy module #通过copy module复制配置文件
copy:
src: "{{ item.src }}"
dest: "{{ item.dest }}"
owner: root
group: root
mode:
with_items:
- {
src: "/tmp/httpd.conf",
dest: "/etc/httpd/conf/httpd.conf"
}
- {
src: "/tmp/httpd-vhosts.conf",
dest: "/etc/httpd/conf/httpd-vhosts.conf"
} - name: copy file and restart httpd #备份文件,成功后通过notify触发handlers重启HTTPD
copy: "src={{http_dir}}/httpd.conf dest=/tmp/httpd.conf.bk"
notify:
- restart httpd service
handlers:
-name: restart httpd service
service: name=httpd state=restarted
通过以下命令检查playbook是否有语法错误:
# ansible-playbook test.yml --syntax --check
执行playbook:
# ansible-playbook test.yml