标签:方式 conf water 生效 copy 就是 roo process notify
一、简介playbook是一个非常简单的配置管理和多主机部署系统。可作为一个适合部署复杂应用程序的基础。
playbook可以定制配置,可以按指定的操作步骤有序执行,支持同步和异步方式。
playbook是通过YAML格式来进行描述定义的,可实现多台主机应用的部署,对不同分组的主机执行特定指令步骤。
---
- hosts: all
remote_user: root
tasks:
- name: test yml
command: /usr/bin/wall "hello world"
hosts 行的内容是一个或多个组或主机的 patterns,以逗号为分隔符。通常是/etc/ansible/hosts定义的主机列表。
remote_user 就是远程执行任务的账户名。
---
- hosts: cluster1,cluster2
remote_user: root
任务集
tasks:
- name: install httpd
yum: name=httpd
- name: start httpd
service: name=httpd state=started
- name: check http port
shell: ss -ntl|grep 80 > /tmp/httpd.txt
- name: fetch
fetch: src=/tmp/httpd.txt dest=/tmp
一个yml文件里可以设计多个playbook,不过呢,为了更清晰的管理,建议应该独立存放不同任务需求,方便以后调用。
由特定条件触发的操作,满足条件方才执行,否则不执行。
Handlers也是task列表,这些task与前述的tasks并没有本质上的不同,用于当关注的资源发生变化时,才会采取一定的操作
还是拿上个例子的playbook修改下。
---
- hosts: clutser1
remote_user: root
tasks:
- name: install httpd
yum: name=httpd
- name: change httpd.conf
copy: src=/app/httpd.conf dest=/etc/httpd/conf/ backup=yes
notify: restart httpd # 在 notify 中定义内容一定要和handlers中定义的 - name 内容一样,这样才能达到触发的效果,否则会不生效。
- name: start httpd
service: name=httpd state=started
- name: wall http status
shell: /usr/bin/wall `ss -nltp|grep httpd`
handlers:
- name: restart httpd # 只有接收到通知才会执行这里的任务
service: name=httpd state=restarted
标签:方式 conf water 生效 copy 就是 roo process notify
原文地址:http://blog.51cto.com/wzlinux/2175365