一,## Ansible的加密控制 ##
- #创建建立文件
[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 指定解密文件
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
- ##更改密码
[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中直接定义变量
2).在文件中定义变量
[devops@westos_server .ansible]$ vim filename.yml
3).设定主机变量和清单变量
在定义主机变量和清单变量时使用
[devops@westos_server .ansible]$ vim inventory
以上三种方法执行结果:
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
[devops@westos_server group_vars]$ cd ..
[devops@westos_server .ansible]$ vim westos.yml
[devops@westos_server .ansible]$ vim inventory
[devops@westos_server .ansible]$ ansible-playbook linux.yml
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
6).用命令覆盖变量
ansible-playbook user.yml -e “USER=hello”
对于变量的指定,可以直接在命令行后指定,会默认覆盖文件中的变量信息:
[devops@westos_server .ansible]$ vim linux.yml
[devops@westos_server .ansible]$ ansible-playbook linux.yml
[devops@westos_server .ansible]$ ansible-playbook linux.yml -e "name=linux"
使用数组设定变量
[devops@westos_server .ansible]$ vim user_list.yml
[devops@westos_server .ansible]$ vim westos.yml
8)..with_items(循环)
[devops@westos_server .ansible]$ vim linux.yml
8).注册变量
register 把模块输出注册到指定字符串中
9).事实变量
事实变量是 ansible 在受控主机中自动检测出的变量,事实变量中还有与主机相关的信息;
当需要使用主机相关信息时不需要采集赋值,直接调用即可;因为变量信息为系统信息所以不能随意设定仅为采集信息,故被称为事实变量。
[devops@westos_server .ansible]$ ansible 192.168.155.50 -m setup | less查询
10).魔法变量
魔法变量本质是ansible软件的内部变量
hostvars ##ansible软件的内部信息
group_names ##当前受控主机所在的清单组
groups ##列出清单中所有的组和主机
inventory_hostname ##清单中配置的当前受控主机的名称
[devops@westos_server .ansible]$ ansible all -m debug -a "var=hostvars"
[devops@westos_server .ansible]$ ansible all -m debug -a "var=hostvars['192.168.155.60']['groups']"
[devops@westos_server .ansible]$ ansible all -m debug -a 'var=group_names'
[devops@westos_server .ansible]$ ansible all -m debug -a 'var=inventory_hostname'
三、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
3、j2模板中的for循环和if判定
for循环
[devops@westos_server .ansible]$ vim number.yml
[devops@westos_server .ansible]$ vim test.j2
如果n=2就部显示数字N
[devops@westos_server .ansible]$ vim zcx.yml
if判定
[devops@westos_server .ansible]$ vim test1.j2
[devops@westos_server .ansible]$ vim zcx.yml