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它们的一种机制

 

ansible unarchive解压改名 ansible格式_字符串

 

 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 unarchive解压改名 ansible格式_标签名_02

-e 'pkg=httpd'

 

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

ansible unarchive解压改名 ansible格式_缩进_03

 

ansible unarchive解压改名 ansible格式_标签名_04

 ansible-playbook xx.yml 

 

3.playbook文件中定义变量

ansible unarchive解压改名 ansible格式_字符串_05

 ansible-playbook xx.yml 

 

 4.利用setup模块获取变量

ansible unarchive解压改名 ansible格式_缩进_06

  ansible-playbook xx.yml 

 

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

ansible unarchive解压改名 ansible格式_字符串_07

 

ansible unarchive解压改名 ansible格式_标签名_08

-e kry.yml

 

playbook中的标签:

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

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

 

playbook中templates模板的使用:

说明:

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

2.模板名的后缀:j2

模板文件的准备:

ansible unarchive解压改名 ansible格式_标签名_09

ansible unarchive解压改名 ansible格式_字符串_10

 listen_port

ansible unarchive解压改名 ansible格式_标签名_11


templates之when

when:条件判断,当满足某个条件时,触发执行一系列操作

register: result      保存一个命令的返回状态,result.stdout里面保留了命令的标准输出结果

                 register命名时,不能使用-中横线

when : result|failed                 当result==failed

           result|success              当result==success

ignore_errors: True          默认为false,表忽略错误继续执行

ansible unarchive解压改名 ansible格式_字符串_12

 

templates之with_items   (标准循环)

当有需要重复性执行的任务时,可以使用迭代机制去遍历一个字符串或是字典

列表格式:字符串 、字典

ansible unarchive解压改名 ansible格式_标签名_13

 {{item}}表示with_items里面的一项

 

loop循环:

 

ansible unarchive解压改名 ansible格式_标签名_14

 

创建用户并且设置密码:

ansible unarchive解压改名 ansible格式_标签名_15

ansible unarchive解压改名 ansible格式_标签名_16

ansible unarchive解压改名 ansible格式_字符串_17

 针对用户名,密码文件加密

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结构:

 

ansible unarchive解压改名 ansible格式_缩进_18

 

ansible unarchive解压改名 ansible格式_字符串_19

 

if结构:

ansible unarchive解压改名 ansible格式_标签名_20