playbook: 通过事先编写好 的playbook文件实现批量管理操作 (后缀可以是.yaml或者.yml)
ansible 的任务集
注意:
1.yml文件中不可使用tab键
2.缩进对齐,严格控制缩进
3.#表注释
4.---开头
YAML简介:
结构:通过空格来展示,使用固定的缩进风格来表示数据层级的结构关系,同一层级缩进必须一致
1. 数组: 使用- 表示
2. 键值:使用:表示
3. [] 表数组
4. {} 表对象
5. , 表分隔符
eg:
讲师:[
{name: xx , sex: xx},
{name: xx , sex: xx}
]
================
讲师:
-
{name: xx, sex: xx },
-
{name: xx ,sex: xx }
playbook文件 :是ansible主机用于配置,部署和管理托管主机的剧本,可以让远程主机达到预期状态
核心元素:
hosts:ansible托管主机的主机列表
Tasks:任务集
variables: 内置变量或自定义变量在playbook中调用
Templates: 模板,即使用模板语法的文件,比如配置文件,
Handlers和notify要结合使用,当某条件满足时,触发执行的操作
tags: 标签,指定某条任务执行
roles: 角色,就是通过分别将变量、文件、任务、模板及处理器放置于单独的目录中,并可以便捷的include
它们的一种机制
playbook的运行方式:ansible-playbook -h //查看帮助
1.-f 指定并发数 ,默认为5
ansible-playbook xx.yml -f 10
2.--syntax-check:检查yml文件语法,只检查不执行
ansible-playbook xx.yml --syntax-check
3.-t 指定某个标签执行yml文件
ansible-playbook xx.yml -t 标签名
4.-v:显示详细信息 -vv,-vvv,-vvvv
ansible-playbook xx.yml -v
ansible-playbook a.yml --list-tasks //检查tasks任务
ansible-playbook a.yml --list-hosts //检查生效的主机
ansible-playbook a.yml --start-at-task='Copy Nginx.conf' //指定从某个task开始运行
playbook中变量的使用
1.命令行指定变量
-e 'pkg=httpd'
2.主机与组定义文件定义变量
ansible-playbook xx.yml
3.playbook文件中定义变量
ansible-playbook xx.yml
4.利用setup模块获取变量
ansible-playbook xx.yml
5.利用独立的yml文件定义变量
-e kry.yml
playbook中的标签:
-t 标签名 指定标签执行某一任务
--skip-tags 标签名 选择除了某个标签外全部执行
playbook中templates模板的使用:
说明:
1.大多数情况下都将模板文件放在playbook文件同级的templates目录下(手动创建),这样playbook文件就可以直接引用,不用写入绝对路径,放在其他的地方,注意要通过绝对路径去指定j2模板文件的路径
2.模板名的后缀:j2
模板文件的准备:
listen_port
templates之when
when:条件判断,当满足某个条件时,触发执行一系列操作
register: result 保存一个命令的返回状态,result.stdout里面保留了命令的标准输出结果
register命名时,不能使用-中横线
when : result|failed 当result==failed
result|success 当result==success
ignore_errors: True 默认为false,表忽略错误继续执行
templates之with_items (标准循环)
当有需要重复性执行的任务时,可以使用迭代机制去遍历一个字符串或是字典
列表格式:字符串 、字典
{{item}}表示with_items里面的一项
loop循环:
创建用户并且设置密码:
针对用户名,密码文件加密
ansible-vault encrypt
ansible-vault view
ansible-vault edit
ansible-playbook create_user.yml -e userlist.yml --ask-vault-pass 使用加密的方式创建用户
templates之for if
通过for, if可以灵活的生成配置文件等需求
for结构:
if结构: