yml文件格式,Ansible-playbook

https://www.cnblogs.com/yanjieli/p/10969299.html

https://www.cnblogs.com/joy-sir/p/12164914.html

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.命令行指定变量

 ansible-playbook xx.yml -e 'pkg=httpd'

2.主机与组定义文件定义变量

 

 ansible-playbook xx.yml 

3.playbook文件中定义变量

 ansible-playbook xx.yml 

 4.利用setup模块获取变量

  ansible-playbook xx.yml 

 5.利用独立的yml文件定义变量

 

 ansible-playbook xx.yml -e kry.yml

playbook中的标签:

-t  标签名                 指定标签执行某一任务

--skip-tags     标签名             选择除了某个标签外全部执行

playbook中templates模板的使用:

说明:

1.大多数情况下都将模板文件放在playbook文件同级的templates目录下(手动创建),这样playbook文件就可以直接引用,不用写入绝对路径,放在其他的地方,注意要通过绝对路径去指定j2模板文件的路径

2.模板名的后缀:j2

模板文件的准备:

  模板文件j2中引用了yml文件中的变量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 密码文件.yml                         加密

ansible-vault view 密码文件.yml                           查看

ansible-vault edit 密码文件.yml                           编辑

ansible-playbook  create_user.yml -e userlist.yml --ask-vault-pass             使用加密的方式创建用户

templates之for if 

通过for, if可以灵活的生成配置文件等需求

for结构:

 

 

if结构:

原文地址:https://www.cnblogs.com/krystal-LA-zx/p/13074337.html