Ansible playbook格式
playbook由YMAL语言编写,playbook常用到的YMAL格式:
1、文件的第一行应该以 “- - -” (三个连字符)开始,表明YMAL文件的开始。
2、在同一行中,#之后的内容表示注释,类似于shell,python和ruby。
3、YMAL中的列表元素以”-”开头然后紧跟着一个空格,后面为元素内容。
4、同一个列表中的元素应该保持相同的缩进。否则会被当做错误处理。
5、play中hosts,variables,roles,tasks等对象的表示方法都是键值中间
以":“分隔表示,”:"后面还要增加一个空格。
举例:
---
- hosts: node1
remote_user: root
tasks:
- name: install mysql-server package
解析:
文件名称应该以.yml结尾
①host部分:使用 hosts 指示使用哪个主机或主机组来运行下面的 tasks 每个 playbook
都必须指定 hosts ,hosts也可以使用通配符格式。 ②remote_user:指定远端主机中的哪个用户来登录远端系统,在远端系统执行
task 的用户,可以任意指定,也可以使用 sudo,但是用户必须要有执行相应 task 的权限。
③tasks:指定远端主机将要执行的一系列动作。tasks 的核心为 ansible 的模块,前面已经提到模块的用法。tasks 包含
name 和要执行的模块,name 是可选的,只是为了便于用户阅读,不过还是建议加上去,模块是必须的,同时也要给予模块相应的参数。
输出信息:
使用ansible-playbook运行playbook文件,输出内容为JSON格式。并且由不同颜色组成,便于识别,执行有三个步骤:1、收集facts
2、执行tasks 3、报告结果。一般而言 | 绿色代表执行成功,系统保持原样 | 黄色代表系统代表系统状态发生改变 |
红色代表执行失败,显示错误输出
Ansible playbook的使用(把模块写入配置文件里面)
模块写入到配置文件里面
[root@ansible-01 ~]# vi /etc/ansible/test.yml
---
- hosts: 192.168.200.23
remote_user: root
tasks:
- name: test_playbook
shell: touch /tmp/ansible_test.txt
运行:
[root@ansible-01 ~]# ansible-playbook /etc/ansible/test.yml
在23端检测一下:
[root@ansible-02 ~]# ls /tmp
创建用户的例子:
[root@ansible-01 ~]# vi /etc/ansible/create_user.yml
---
- name: create_user
hosts: 192.168.200.23
user: root
gather_facts: false
vars:
- user: "test"
tasks:
- name: create user
user: name="{
{ user }}"
运行:
[root@ansible-01 ~]# ansible-playbook /etc/ansible/create_user.yml
PLAY [create_user] *************************************************************
TASK [create user] *************************************************************
changed: [192.168.200.23]
PLAY RECAP *********************************************************************
192.168.200.23 : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
说明:
name参数对该playbook实现的功能做一个概述,后面执行过程中,会打印 name变量的值
,可以省略;gather_facts参数指定了在以下任务部分执行前,是否先执行setup模块获取主机相关信息,这在后面的task会使用到setup获取的信息时用到;vars参数,指定了变量,这里指字一个user变量,其值为test
,需要注意的是,变量值一定要用引号引住;user提定了调用user模块,name是user模块里的一个参数,而增加的用户名字调用了上面user变量的值。