Ansible核心功能点就在于playbook,Ansible主要的工作都是在于配置管理,它在实际的工作中会大量编写和使用剧本。
如果说ansible 模块 是你车间里的工具,那么playbooks 是你的说明书/使用手册,并且资源清单上的主机是你的原材料。
在ansible 上使用Playbooks是一种完全不同于adhoc的任务执行模式,并且特别强大。
简单地说,playbooks是一个非常简单的配置管理和多机器部署系统的基础,以及非常适合部署复杂应用程序的系统。
Playbooks可以对任务进行编排,就像我们要安装一个程序,写个安装shell脚本一样,在哪一步复制配置文件,最后一步启动服务。
虽然/usr/bin/ansible 可以运行一些临时任务,但是针对复杂的配置,并且可以将配置标准化,这个时候就需要Playbooks了。
【Anisble剧本】
ansible软件playbook编写需要遵循YAML语法
playbook安装nginx
1.批量卸载所有的nginx
[root@m01 ~]# ansible chaoge -m yum -a "name=nginx state=absent"
[root@m01 ~]# ansible chaoge -m shell -a "rpm -qa nginx warn=false"
192.168.178.110 | CHANGED | rc=0 >>
192.168.178.111 | CHANGED | rc=0 >>
2.查看一个YAML文件,请严格注意
语法的对齐,不得多一个少一个空格
输入法保证英文
[root@m01 scripts]# cat nginx.yaml -n
1 # install nginx yaml ,by chaoge
2 - hosts: all
3 tasks:
4 - name: Install nginx Package
5 yum: name=nginx state=present
6 - name: Copy Nginx.conf
7 copy: src=./nginx.conf dest=/etc/nginx/nginx.conf mode=0644
3.解释如上的playbook代码,按行解释:
1.表示注释信息,可以用#,也可以用 — 三个短横线
2.定义playbook管理的目标主机,all表示所有的主机,也可以写 主机组名
3.定义playbok所有的任务集合信息,比如该文件,定义了2个任务 ,安装nginx,拷贝nginx配置文件
4.定义了任务的名词,自定义的帮助信息
5.定义任务的具体操作,比如这里用yum模块实现nginx的安装
6.
7.第六、第七两行作用是使用copy模块,把本地当前的nginx.conf配置文件,分发给其他所有客户端机器,且授权
playbook最基本的两个部分
hosts定义剧本管理的主机信息
#方式一:定义所管理的主机IP地址
- hosts: 192.168.178.111
tasks:
动作…
#方式二:定义所管理主机的名字
- hosts: backup01
tasks:
动作…
#方式三:定义管理主机
- hosts: 192.168.178.111, rsync01
tasks:
动作…
#方式四:管理所有主机
- hosts: all
tasks:
动作…
task定义被管理的主机需要执行的任务
#方式一:采用变量格式设置任务
tasks:
- name: make sure apache is running
service: name=https state=running
#当传入的参数列表过长时,可以将其分割到多行
tasks:- name: copy ansible inventory(清单) file to client
copy: src=/etc/ansible/hosts dest=/etc/ansible/hosts
owner=root group=root mode=0644
#方式二:采用字典格式设置多任务
tasks:
- name: copy ansible inventory file to client
copy:
src: /etc/ansible/hosts
dest: /etc/ansible/hosts
owner: root
group: root
mode: 0644
yaml语法解释
在学习saltstack过程中,第一要点就是States编写技巧,简称SLS文件。这个文件遵循YAML语法。
json xml yaml 数据序列化格式
yaml容易被解析,应用于配置文件
salt的配置文件是yaml配置文件,不能用tab
saltstack,k8s,ansible都用的yaml格式配置文件
#语法规则
大小写敏感
使用缩进表示层级关系
缩进时禁止tab键,只能空格
缩进的空格数不重要,相同层级的元素左侧对其即可
# 表示注释行
yaml支持的数据结构
对象: 键值对,也称作映射 mapping 哈希hashes 字典 dict 冒号表示 key: value key冒号后必须有
数组: 一组按次序排列的值,又称为序列sequence 列表list 短横线 - list1
纯量: 单个不可再分的值对象:键值对 yaml
first_key:
second_key:second_valuepython
{
‘first_key’:{
‘second_key’:‘second_value’,
}
}
playbook执行命令
加载剧本中的功能,可以使用ansible-playbook命令
ansible-playboook nginx.yaml
查看剧本执行详细输出
ansible-playbook nginx.yml --verbose
查看剧本执行影响的主机列表
ansible-playbook nginx.yml --list-hosts
执行playbook指定加载的主机清单文件
ansible-playbook nginx.yml -i /etc/ansible/hosts
执行playbook时检查剧本语法
ansible-playbook nginx.yml --syntax-check
调试playbook时检查剧本语法
ansible-playbook nginx.yml --syntax-check
调试playbook任务,模拟执行,不影响主机配置
ansible-playbook nginx.yml -C
playbook的输出信息