Ⅰ. 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: 0644 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