Ansible之playbook剧本简单实践

/ Ansible / 没有评论 / 1501浏览

简介

Playbooks 与 adhoc 相比,是一种完全不同的运用 ansible 的方式,是非常之强大的. 简单来说,playbooks 是一种简单的配置管理系统与多机器部署系统的基础.与现有的其他系统有不同之处,且非常适合于复杂应用的部署. Playbooks 可用于声明配置,更强大的地方在于,在 playbooks 中可以编排有序的执行过程,甚至于做到在多组机器间,来回有序的执行特别指定的步骤.并且可以同步或异步的发起任务

playbook语法规则

  1. :缩进 yaml使用一个固定的缩进风格表示数据层结构关系,Saltstack需要每个缩进级别由两个空格组成。一定不能使用tab键(tab在vim编辑中是8个空格)

  2. :冒号 每个冒号后面一定要有一个空格(以冒号结尾不需要空格,表示文件路径的模版可以不需要空格)

  3. :短横线 想要表示列表项,使用一个短横杠加一个空格。多个项使用同样的缩进级别作为同一个列表的一部分。 核心规则:有效的利用空格进行剧本的编写,剧本编写是不支持tab的。

重点 剧本编写是不支持tab的

playbook编写格式

剧本开头,可以不写

这两项必须要写:

剧本编写方式

01.多主机单任务编写方式

02.多主机多任务编写方式

03.不同主机多任务编写方式

多主机单任务编写方式示范

[root@pa1 ~]#ansible-playbook test.yml

PLAY [all] ******************************************************************** 

GATHERING FACTS *************************************************************** 
ok: [58.87.104.81]
ok: [120.78.202.71]

TASK: [add user lijinghua] **************************************************** 
ok: [58.87.104.81]
changed: [120.78.202.71]

PLAY RECAP ******************************************************************** 
120.78.202.71              : ok=2    changed=1    unreachable=0    failed=0   
58.87.104.81               : ok=2    changed=0    unreachable=0    failed=0  

脚本示范

[root@pa1 ~]#cat test.yml
 - hosts: all
   tasks:
    - name: del user lijinghua
      user: name=lijinghua  state=absent

多主机多任务编写方式

[root@pa1 ~]#ansible-playbook test.yml

PLAY [58.87.104.81] *********************************************************** 

GATHERING FACTS *************************************************************** 
ok: [58.87.104.81]

TASK: [del user lijinghua] **************************************************** 
changed: [58.87.104.81]

PLAY [120.78.202.71] ********************************************************** 

GATHERING FACTS *************************************************************** 
ok: [120.78.202.71]

TASK: [del user lijinghua] **************************************************** 
changed: [120.78.202.71]

PLAY RECAP ******************************************************************** 
120.78.202.71              : ok=2    changed=1    unreachable=0    failed=0   
58.87.104.81               : ok=2    changed=1    unreachable=0    failed=0  

脚本示范
[root@pa1 ~]#cat test.yml
 - hosts: 58.87.104.81
   tasks:
    - name: del user lijinghua
      user: name=lijinghua  state=absent
 - hosts: 120.78.202.71
   tasks:
    - name: del user lijinghua
      user: name=lijinghua  state=absent

playbook的其他辅助参数:

    ansible-playbook  --check
        测试,只检测可能会发生的改变,但不真正执行操作;
    ansible-playbook  --list-hosts
        列出运行任务的主机;
    ansible-playbook  --list-tasks
        列出要运行的任务列表
    ansible-playbook --syntax-check 
        语法检查