5.4--->Ansible中的变量及加密

目录

一.变量命名:

二. 变量级别:

三. 变量设定和使用方式:

一.在playbook中直接定义变量

二. 在文件中定义变量:

三.使用变量:

四.设定主机变量和清单变量

五.目录设定变量

六.用命令覆盖变量

七.使用数组设定变量,字典的方式

八.注册变量 ,register

九. 事实变量:

十一.魔法变量 :

 四.JINJA2模板

j2书写模板一:

j2书写模板二:

j2书写模板三:for循环

j2书写模板四:if判定

 五.Ansible的加密控制


一.变量命名:

只能包含数字,下划线,字母
只能用下划线或字母开头

 

二. 变量级别:

全局:    从命令行或配置文件中设定的
paly:    在play和相关结构中设定的
主机:    由清单,事实收集或注册的任务

变量优先级设定:
狭窄范围有限与广域范围

三. 变量设定和使用方式:

一.在playbook中直接定义变量

二. 在文件中定义变量:

 三.使用变量:

 四.设定主机变量和清单变量

#在定义主机变量和清单变量时使用

 五.目录设定变量

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

 六.用命令覆盖变量

ansible-playbook user.yml -e "USER=westoslinux"

 七.使用数组设定变量,字典的方式

八.注册变量 ,register

#register 把模块输出注册到指定字符串中
当文件不存在时,rc的输出值不为0,提取错误值进行判定,就可以判断文件是否存在,并输出,

 register,表示我们这个play中的所有输出将它赋予给westos

 

 而我们如果想捕捉输出众多数值中的stdout,

而如果用shell判断文件是否存在的时候,rc=1表示文件不存在,

九. 事实变量:

采集受控主机信息

事实变量是ansible在受控主机中自动检测出的变量
事实变量中还有与主机相关的信息

当需要使用主机相关信息时不需要采集赋值,直接调用即可
因为变量信息为系统信息所以不能随意设定仅为采集信息,故被成为事实变量

gather_facts: no     ##在playbook中关闭事实变量收集

ansible all -m setup可以看到受控主机中的所有变量信息 

Gathering Facts相当于set up,当它ok之后,采集信息

gather_facts: no     ##在playbook中关闭事实变量收集

 十一.魔法变量 :

ansible的内件变量
hostvars:		##ansible软件的内部信息
#eg:
ansible localhost -m debug -a "var=hostvars"


group_names:		##当前受管主机所在组
#eg:
ansible localhost -m debug -a "var=group_names"

groups:			##列出清单中所有的组和主机
#eg:
ansible localhost -m debug -a "var=groups"

inventory_hostname:	##包含清单中配置的当前授管主机的名称	
#eg:
ansible localhost -m debug -a "var=inventory_hostname"

 hostvars就是ansible主机的内件变量

 四.JINJA2模板

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

j2书写模板一:

vim test.j2
{ # test file # }        ##注释说明文件用途,可以不写
hello westos             ##文件内容
vim test.yml
---
- name: test j2
  hosts: westos
  tasks:
    - name: create test file
      template:                ##template就是使用j2模板
        src: ./test.j2         ##src就是模板路径
        dest: /mnt/test        ##执行完毕之后存放路径

 

 j2书写模板二:

vim test.yml
---
- name: test j2
  hosts: westos
  tasks:
    - name: create test file
      template:
        src: ./hosts.j2
        dest: /mnt/hosts
vim /hosts.j2
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
{{ ansible_facts['ens3']['ipv4']['address'] }} {{ ansible_facts['fqdn'] }} {{ ansible_facts['hostname'] }}

j2书写模板三:for循环

vim test.yml
---
- name: test j2
  vars_files: ./user.yml
  hosts: westos
  tasks:
    - name: create test file
      template:
        src: ./test.j2
        dest: /mnt/user_list
vim user.yml
---
users:
  - westos
  - linux
  - redhat
vim test.j2
{% for NAME in users %}    ##NAME的值等于users列表中的三个元素
{{NAME}}
{% endfor %}               ##for结束
hello westos
或者
vim test.j2
{% for NAME in users %}    ##NAME的值等于users列表中的三个元素
{{loop.index0}}{{NAME}}
{% endfor %}               ##for结束
hello westos

##
loop.index	##循环迭代记数从1开始
loop.index0	##循环迭代计数从0开始

   j2书写模板四:if判定

vim test.j2  
{% for NAME in users %}
{%if NAME in "linux"%}
{{loop.index0}}
{%endif%}
{%if NAME not in "linux"%}
{{loop.index0}}{{NAME}}
{%endif%}
{% endfor %}
vim test.yml
---
- name: test j2
  vars_files: ./user.yml
  hosts: westos
  tasks:
    - name: create test file
      template:
        src: ./test.j2
        dest: /mnt/user_list

 五.Ansible的加密控制

一.创建文件并加密

1.直接加密的方式:

ansible-vault create westos.yml        创建一个文件并且加密

 2.用key文件加密:

vim westoskey
westos
ansible-vault create --vault-password-file=westoskey westos

 二.加密现有的文件:

ansible-vault encrypt test

三.查看加密文件 :

ansible-vault view westos
ansible-vault view westos --vault-password-file=westoskey

四.编辑加密文件 :

ansible-vault edit westos1
ansible-vault edit --vault-password-file=westos-valut westos

五.解密文件 :

ansible-vault decrypt westos 			##文件永久解密
ansible-vault decrypt westos --output=linux	##文件解密保存为linux

六.更改密码:

ansible-vault rekey westos1
ansible-vault rekey westos1 --new-vault-password-file=key1

七.playbook加密之后执行:

ansible-playbook xxx.yml  --ask-vault-pass

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值