5.4ansible中的变量及加密

## 1. 变量命名 ##
只能包含数字 下划线 字母
只能用下划线或字母开头
## 2. 变量级别 ##
全局 :
从命令行或配置文件中设定的
paly :
play 和相关结构中设定的
主机 :
由清单 事实收集或注册的任务
变量优先级设定
狭窄范围有限与广域范围
## 3. 变量设定和使用方式 ##
# 1. playbook 中直接定义变量
---
- name : test var
hosts : all
vars :
USER : westosuser

# 2. 在文件中定义变量 #
vim user_list.yml
---
user : westosuser
vim westos.yml
---
- name : Create User
hosts : all
vars_files :
- ./ user_list.yml

 

# 3 . 使用变量 #  
tasks :
- name : create user
user :
name : "{{ USER }}"
# 4. 设定主机变量和清单变量 #
# 在定义主机变量和清单变量时使用
vim inventory
[westos_list1]
172.25.0.254
172.25.0.1
[westos_list2]
172.25.0.2
[westos_list3]
172.25.0.3
[westos_group : children]
westos_list2
westos_list3
[westos_list1 : vars]
USER = westos1
[westos_group : vars]
USER = westos2 #

 

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

 

 

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

 

# 6. 用命令覆盖变量 #
ansible - playbook user.yml - e "USER = hello"

# 7. 使用数组设定变量 #
#vim user_var.yml
---
USER :
lee :
age : 18
obj : linux
westos :
age : 20
obj : java
#vim user.yml
- name : Create User
hosts : all
gather_facts : no
vars_files :
./ user_var.yml
tasks :
- name : create user
shell :
echo "{{USER[ 'lee' ][ 'age' ]}}"
echo "{{USER.westos.obj}}"
create web vhost
www.westos.com 80 ------ > / var / www / html ------> www.westos.com
linux.westos.com 80 ------> / var / www / virtual / westos.com / linux -----> linux.westos.com

# 8. 注册变量 #
#register 把模块输出注册到指定字符串中
---
- name : test register
hosts : 172.25.0.254
tasks :
- name : hostname command
shell :
hostname
register : info
- name : show messages
shell :
echo "{{info[ 'stdout' ]}}"

 

 (这个错 正确的在下图)

 

# 9. 事实变量 #
事实变量是 ansible 在受控主机中自动检测出的变量
事实变量中还有与主机相关的信息
当需要使用主机相关信息时不需要采集赋值 直接调用即可
因为变量信息为系统信息所以不能随意设定仅为采集信息 故被成为事实变量
---
- name : test register
hosts : 172.25.0.254
tasks : - name : show messages
debug :
msg : "{{ansible_facts[ 'architecture' ]}}"
gather_facts : no ## playbook 中关闭事实变量收集

 

 

# 10. 魔法便变量 #
hostvars ##ansible软件的内部信息
#eg : ansible localhost - m debug - m "var = hostvars"
group_names : ##当前受管主机所在组
#eg : ansible localhost - m debug - m "var = group_names"
groups : ##列出清单中所有的组和主机
#eg : ansible localhost - m debug - m "var = groups"
inventory_hostname : ##包含清单中配置的当前授管主机的名称
#eg : ansible localhost - m debug - m "var = inventory_hostname"
##JINJA2 模板 ##
# 介绍
Jinja2 Python 下一个被广泛应用的模版引擎
他的设计思想来源于 Django 的模板引擎
并扩展了其语法和一系列强大的功能
其中最显著的一个是增加了沙箱执行功能和可选的自动转义功能
##j2 模板书写规则 #
{# / etc / hosts line #} ## 注释说明文件用途
127.0.0.1
localhost ## 文件内容
{{ ansible_facts[ 'all_ipv4_addresses' ] }} {{ansible_facts[ 'fqdn' ]}} ## 使用事实变量
#for 循环 #
vim users.yml
users :
- westos
- linux
- ansible
vim test.j2
{ % for NAME in users %}
{{ NAME }}
{ %endfor%}

 

 

# if 判定 #
{ % for NAME in users if not NAME == "ansible" %}
User number {{loop.index}} - {{ NAME }}
{ %endfor%}
loop.index ## 循环迭代记数从 1 开始
loop.index0 ## 循环迭代计数从 0 开始
{ % for user in students %}
name :
{{user[ 'name' ]}}
{ %if user['age'] is defined%}
age :
{{user[ 'age' ]}}
{ %endif%}
{ % if user['age'] is not defined %}
age :
null
{ % endif%}
obj :
{{user[ 'obj' ]}} { %endfor%}
#j2 模板在 playbook 中的应用 #
#playbook1
---
- name : test register
hosts : xxxx
tasks :
- name : create hosts
template :
src : ./ xxxx.j2
dest : / mnt / hosts
#playbook2
---
- name : test.j2
hosts : 172.25.0.254
vars :
students :
- name : student1
obj : linux
- name : student2
age : 18
obj : linux
tasks :
- template :
src : ./ test.j2
dest : / mnt / list
## Ansible 的加密控制 ##
# 创建建立文件
1.
ansible - vault create westos
2.
vim westos - vault
lee
ansible - vault create -- vault - password - file = westos - valut westos
# 加密现有文件
ansible - vault encrypt test
# 查看加密文件
ansible - vault view westos
ansible - vault view -- vault - password - file = westos - valut westos
# 编辑加密文件
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 apache_install.yml -- ask - vault - pass
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值