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 相关的操作