一,## Ansible的加密控制 ##

  1. #创建建立文件

[devops@westos_server .ansible]$ ansible-vault create westos2.yml

2.#加密现有文件

[devops@westos_server .ansible]$ ansible-vault encrypt web.yml

[devops@westos_server .ansible]$ ansible-vault encrypt web.yml --vault-password-file=key 指定解密文件

ansible修改用户密码 ansible 密码加密_linux

3.#查看加密文件

[devops@westos_server .ansible]$ ansible-vault view westos2.yml

4.#编辑加密文件

[devops@westos_server .ansible]$ ansible-vault edit westos2.yml

5.##解密文件

[devops@westos_server .ansible]$ ansible-vault decrypt web.yml

  1. ##更改密码

[devops@westos_server .ansible]$ ansible-vault rekey westos2.yml

7.##执行加密文件

[devops@westos_server .ansible]$ ansible-playbook encrypt web.yml --ask-vault-pass

二.## Ansible中的变量 ##

1. 变量命名

只能包含数字,下划线,字母

只能用下划线或字母开头

2. 变量级别

全局: 从命令行或配置文件中设定的

paly: 在play和相关结构中设定的

主机: 由清单,事实收集或注册的任务

变量优先级设定:狭窄范围优先级高于广域范围

3. 变量设定和使用方式

1).在playbook中直接定义变量

ansible修改用户密码 ansible 密码加密_vim_02

2).在文件中定义变量

ansible修改用户密码 ansible 密码加密_ansible修改用户密码_03

 [devops@westos_server .ansible]$ vim filename.yml

ansible修改用户密码 ansible 密码加密_ansible修改用户密码_04

3).设定主机变量和清单变量
在定义主机变量和清单变量时使用

ansible修改用户密码 ansible 密码加密_vim_05

[devops@westos_server .ansible]$ vim inventory

ansible修改用户密码 ansible 密码加密_运维_06

 以上三种方法执行结果:

ansible修改用户密码 ansible 密码加密_devops_07

5).目录设定变量

group_vars ##清单变量,目录中的文件名称与主机清单名称一致

[devops@westos_server .ansible]$ mkdir group_vars

[devops@westos_server .ansible]$ cd group_vars/

[devops@westos_server group_vars]$ ls

[devops@westos_server group_vars]$ vim westos

ansible修改用户密码 ansible 密码加密_运维_08

[devops@westos_server group_vars]$ cd ..

[devops@westos_server .ansible]$ vim westos.yml

ansible修改用户密码 ansible 密码加密_运维_09

[devops@westos_server .ansible]$ vim inventory

[devops@westos_server .ansible]$ ansible-playbook linux.yml

ansible修改用户密码 ansible 密码加密_运维_10

host_vars ##主机变量,目录中的文件名称与主机名称一致

[devops@westos_server .ansible]$ mkdir host_vars

[devops@westos_server .ansible]$ vim host_vars/192.168.155.50

[devops@westos_server .ansible]$ vim host_vars/192.168.155.60

[devops@westos_server .ansible]$ ansible-playbook linux.yml

ansible修改用户密码 ansible 密码加密_devops_11

6).用命令覆盖变量
ansible-playbook user.yml -e “USER=hello”

对于变量的指定,可以直接在命令行后指定,会默认覆盖文件中的变量信息:

[devops@westos_server .ansible]$ vim linux.yml

ansible修改用户密码 ansible 密码加密_devops_12

[devops@westos_server .ansible]$ ansible-playbook linux.yml

ansible修改用户密码 ansible 密码加密_devops_13

[devops@westos_server .ansible]$ ansible-playbook linux.yml -e "name=linux"

ansible修改用户密码 ansible 密码加密_运维_14

使用数组设定变量

[devops@westos_server .ansible]$ vim user_list.yml

ansible修改用户密码 ansible 密码加密_vim_15

 [devops@westos_server .ansible]$ vim westos.yml

ansible修改用户密码 ansible 密码加密_vim_16

8)..with_items(循环)

[devops@westos_server .ansible]$ vim linux.yml

ansible修改用户密码 ansible 密码加密_ansible修改用户密码_17

 

8).注册变量
register 把模块输出注册到指定字符串中

 

ansible修改用户密码 ansible 密码加密_运维_18

9).事实变量
事实变量是 ansible 在受控主机中自动检测出的变量,事实变量中还有与主机相关的信息;
当需要使用主机相关信息时不需要采集赋值,直接调用即可;因为变量信息为系统信息所以不能随意设定仅为采集信息,故被称为事实变量。

ansible修改用户密码 ansible 密码加密_devops_19

 [devops@westos_server .ansible]$ ansible 192.168.155.50 -m setup | less查询

ansible修改用户密码 ansible 密码加密_vim_20

10).魔法变量

魔法变量本质是ansible软件的内部变量

hostvars                         ##ansible软件的内部信息

group_names                          ##当前受控主机所在的清单组

groups                         ##列出清单中所有的组和主机

inventory_hostname                    ##清单中配置的当前受控主机的名称

[devops@westos_server .ansible]$ ansible all -m debug -a "var=hostvars"

ansible修改用户密码 ansible 密码加密_vim_21

 [devops@westos_server .ansible]$ ansible all -m debug -a "var=hostvars['192.168.155.60']['groups']"

ansible修改用户密码 ansible 密码加密_ansible修改用户密码_22

[devops@westos_server .ansible]$ ansible all -m debug -a 'var=group_names'

[devops@westos_server .ansible]$ ansible all -m debug -a 'var=inventory_hostname'

ansible修改用户密码 ansible 密码加密_linux_23

 

三、playbook中的JINJA2模板

1、JINJA2模板的介绍

JINJA2是Python下的一个被广泛应用的模板引擎;其设计思想来源于Django的模板引擎,并扩展了其语法和一系列强大的功能,其中最显著的特点是增加了沙箱执行功能和可选的自动转译功能

2、JINJA2模板书写规则

{#  xxxx  #}                ##首行为注释说明文件用途;次行可忽略

文件内容                ##次行

{{ ansible_facts['all_ipv4_addresses'] }} {{ansible_facts['fqdn']}} ##使用事实变量

j2模板文件通常以.j2为后缀

ansible中使用j2模板的模块名称为:template

j2模板文件的使用效果简单示例:

[devops@westos_server .ansible]$ vim westos.yml

ansible修改用户密码 ansible 密码加密_ansible修改用户密码_24

ansible修改用户密码 ansible 密码加密_linux_25

3、j2模板中的for循环和if判定

for循环

[devops@westos_server .ansible]$ vim number.yml

ansible修改用户密码 ansible 密码加密_devops_26

[devops@westos_server .ansible]$ vim test.j2

如果n=2就部显示数字N

ansible修改用户密码 ansible 密码加密_devops_27

[devops@westos_server .ansible]$ vim zcx.yml

ansible修改用户密码 ansible 密码加密_运维_28

 

if判定

[devops@westos_server .ansible]$ vim test1.j2

ansible修改用户密码 ansible 密码加密_运维_29

 [devops@westos_server .ansible]$ vim zcx.yml

ansible修改用户密码 ansible 密码加密_ansible修改用户密码_30