1:playbook配置文件
(1):执行配置文件
Playbook 配置文件使用YAML语法,具有简介明了,结构清晰等特点。Playbook 配置文件类似于shell脚本,是一个 YAML格式的文件,用于保存针对特定需求的任务列表,前面介绍的 ansible命令虽然可以完成各种任务,但是当配置一系列任务时,逐条输入命令就显得效率非常低下,更有效的方式在playbook配置中配置所有的任务代码.利用ansible-playbook 命令执行该文件,可以实现自动化运维,YAML文件的扩展名通常为.yaml或.yml.
YAML i语法和其他高级语言类似,其结构通过缩进来展示,通过“”来代表选项,通过冒号“:”来分隔键和值。整个文件以“---”开始并以“...”结束。如下所示
修改hosts文件:
《1》:vim /etc/ansible/hosts 编辑文件
写入:
[test01]
192.168.100.20
[test02]
192.168.100.30
《2》:vim /etc/ansible/test1.yml 编写脚本
写入:
---
- hosts: test01
remote_user: root
tasks:
- name: adduser
user: name=user2 state=present
tags:
- testa
- name: addgroup
group: name=tests system=yes
tags:
- testb
- hosts: test02
remote_user: root
tasks:
- name: cf
copy: src=/etc/passwd dest=/home
tags:
- testc
...
[root@ansible ~]# vim /etc/ansible/test1.yml #创建test,yml文件
… #开头格式(可忽略)
- hosts: test01 #表示对test01(192.168.200.112)的操作
remote_user: root #远端执行用户身份root
tasks: #任务列表
- name: adduser #任务名称
user: name=user2 state=present #执行user模块创建用户
tags: #创建tag标签
- testa #tag标签为testa
- name: addgroup #任务名称
group: name=tests system=yes #执行group模块创建一个组账号
tags: #创建tag标签
- testb #tag标签为testb
- hosts: test02 #表示对test02(192.168.200.113)的操作
remote_user: root #远端执行用户身份root
tasks: #任务列表
- name: cf #任务名称
copy: src=/etc/passwd dest=/home #执行copy模块复制文件
tags: #创建tag标签
- testc #tag标签为testsc
... #结尾格式(可忽略)
注:所有的“_"和”:“后面均有空格,而且要注意缩进和对齐
playbook的核心元素包含:
1:hosts:任务的目标主机,多个主机用冒号分隔,一般调用/etc/ansible/hosts 中的分组信息
2:remote_user:远程主机上,运行此任务的什么默认为root
3:tasks:任务。即定义的具体任务,有模块定义的操作列表
4:hadiers:触发器,类似tasks,只是在特定的条件下才会触发任务,某任务的状态在运行后changed时,可通过“notify”通知给相应的handers进行触发执行
5:roles:角色,将hosts剥离出去,有tasks,haders等所组成的一种特定的结构集合。
用法:
playbook文件定义的任务需要通过ansible-playbook命令进行调用并执行,ansible-playbook命令用法如下:
其中[optin]部分的功能包括
- --syntax-check:检测yaml文件的语法
- -C (--check):测试,不会改变主机任何配置
- --list-hosts:列出yaml文件影响的主机列表
- --list-tags:列出yaml文件中标签
- --list-tasks:列出yaml文件的任务列表
- -t TAGS(--tags=TAGS):表示只执行指定标签的任务
- --skip-tags=skip_TAGSS:表示除了指定标签任务,执行其他任务
- --start-at-task=START_AT:从指定任务开始下运行
案例:
《1》:ansible-playbook --syntax-check /etc/ansible/test1.yml 检查语法
《2》:ansible-playbook -C /etc/ansible/test.yml 预测试
《3》:ansible-playbook --list-hosts /etc/ansible/test.yml 列出主机
《4》:ansible-playbook --list-tasks /etc/ansible/test.yml 列出任务
《5》:(-C :表示测试任务是否能跑起来)