playbook的基础组件
name
定义playbook或者task的名称
hosts
用于指定要执行指定任务的主机
user
用于指定远程主机上的执行任务的用户
task
任务列表
vars
定义变量
vars_files
定义变量文件
notify
任务执行结果如果是发生更改的则触发定义在handler的任务
handlers
用于当前关注资源发生变化时采取一定指定的操作
示例1
> # vim test.yml
> - hosts: all
> user: root
> tasks:
> - name: playbook_test
> shell: touch /a.txt
> tags: chuang jian a.txt
参数解释
hosts参数指定了对那些主机进行操作
user参数指定了使用什么用户登陆远程主机操作
tasks指定了一个任务,其下面的name参数同样是对任务的描述,在执行过程中会打印出来
tags给指定的任务定义一个调用标识
语法检测
# ansible-playbook --syntax-check test.yml
测试运行
# ansible-playbook -C test.yml
运行playbook
# ansible-playbook test.yml
只运行指定标记的任务
-t tags
# ansible-playbook -t 标记名称 test.yml
跳过某个被标记的任务
--skip-tags= 标记名称
# ansible-playbook --skip-tags=标记名称 test.yml
从某个任务开始往下运行
--start-at-task 任务名称
# ansible-playbook --start-at-task "任务名称" test.yml
示例2:使用变量
>#vim create_user.yml
>- name: create_user
> hosts: web1
> user: root
> gather_facts: false
> vars:
> - user: "tuerqi"
> tasks:
> - name: create user
> user: name="{{ user }}"
示例3:条件执行
># vim when.yml
>- hosts: web1
> user:root
> gather_facts: True
> tasks:
> - name: use when
> shell: touch /bali.txt
> when: ansible_hostname == "web1"
示例4:条件触发
># vim handlers.yml
>- name: handlers test
> hosts: web1
> user: root
> tasks:
> - name: test copy
> copy: src=/etc/passwd dest=/tmp/handlers.txt
> notify: test handlers
> hanlers:
> - name: test handlers
> shell: echo "www.lala.com" >> /tmp/handlers.txt
解释说明
只有 copy 模块真正执行后,才会去调用下面的 handlers 相关的操作
转载于:https://blog.51cto.com/13523939/2074049