Ansible--4.Ansible中的变量及加密


前言

本章我们主要介绍ansible中的变量设定和使用方式,JINJA2模板的使用以及文件加密控制。


一、变量命名与级别

变量命名:
只能包括数字、下划线与字母,且数字不能开头。

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


二、变量设定和使用方式

vim test.yml
在这里插入图片描述

ansible-playbook test.yml -e "username=haha" 命令方式设定全局变量

在这里插入图片描述

1.剧本定义变量:

vim test.yml
在这里插入图片描述ansible-playbook test.yml
在这里插入图片描述

2.设定清单变量

写入清单:先读取清单,再读取剧本,当两者同时存在,剧本生效
vim inventory

[westos:vars]
username=linux

在这里插入图片描述执行查看变量:
在这里插入图片描述

3.数组定义变量

vim userlist.yml 
---
username: haha

在这里插入图片描述

vim test.yml 
---
- name: test 
  vars_files: ./userlist.yml
  hosts: westos1
  tasks:
  - name: test vars
    debug:
      var: username

在这里插入图片描述
在这里插入图片描述

数组设定变量:

vim userlist.yml
---
USER:
  lee:
    USERNAME: lee
    UID: 6666
  westos:
    USERNAME: westos
    UID: 7777

在这里插入图片描述

vim test.yml
---
- name: test
  hosts: all
  vars_files: ./userlist.yml
  tasks:
  - name: test vars
    debug:
      msg: "{{USER['lee']['USERNAME']}}{{USER['lee']['UID']}}"

在这里插入图片描述

ansible-playbook test.yml 

在这里插入图片描述

5.注册变量

register 将模块输出注册到指定字符串中

vim test.yml
在这里插入图片描述将hostname产生的结果注册到 msg中,再将msg的stdout输出,即可显示主机名。

在这里插入图片描述

6.事实变量

事实变量是ansible在受控主机中检测出的包括主机信息、内核版本、IP等与主机相关的信息。
可通过ansible westos -m setup | less 查看
在这里插入图片描述例如查看ip:
在这里插入图片描述gather_facts:yes 打开事实变量收集,默认为打开
在这里插入图片描述gather_facts: no 关闭事实变量收集,再次执行报错
在这里插入图片描述
在这里插入图片描述

7.魔法变量

ansible的内嵌变量

ansible westos -m debug -a "var=hostvars"		ansible软件内嵌信息

在这里插入图片描述

ansible westos -m debug -a "var=group_names"		当前受管主机所在组

在这里插入图片描述

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

在这里插入图片描述

ansible westos -m debug -a "var=inventory_hostname"	清单中配置的当前授管主机的名称

在这里插入图片描述
练习:
显示所有受控主机中能够登陆的用户
vim test.yml
在这里插入图片描述
ansible-playbook test.yml

在这里插入图片描述


三、JINJA2模板

Jinja2是python的一种模板语言,是一种系统的完整的python模板语言。其设计思想来源于Django的模板引擎。
其中最显著的一个是增加了沙箱执行功能和可选的自动转义功能。

沙箱模式: 将代码与外界隔离,不管你在箱子里做什么,都不会污染到全局。

1.jinja2书写规则

vim test.j2

{{ansible_facts['ens3']['ipv4']['address']}} {{ansible_facts['fqdn']}}

vim test.yml

---
- name: users who can log in
  hosts: all
  tasks:
    - template:
        src: ./test.j2
        dest: /mnt/test

在这里插入图片描述ansible-playbook test.yml
在这里插入图片描述ansible westos -m shell -a 'cat /mnt/test' 查看
在这里插入图片描述
for循环
vim user.yml
在这里插入图片描述vim test.j2

{% for NAME in users %}
{{ NAME }}
{%endfor%}

在这里插入图片描述ansible-playbook test.yml
在这里插入图片描述在这里插入图片描述

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

vim test.j2

{% for NAME in users %}
{{loop.index}}  {{ NAME }}
{%endfor%}

在这里插入图片描述

ansible-playbook test.yml
ansible westos -m shell -a 'cat /mnt/test'

在这里插入图片描述

if判定
vim users.yml

在这里插入图片描述
vim test.j2

{% for NAME in users %}
{% if NAME['age'] is defined %}
{{ NAME['name'] }} {{ NAME['age'] }}
{%endif%}
{% if NAME['age'] is not defined %}
{{ NAME['name'] }} unknow_age
{%endif%}
{%endfor%}

在这里插入图片描述
vim test.yml
在这里插入图片描述ansible-playbook test.yml
在这里插入图片描述


四、Ansible的加密控制

ansible-vault create westos	加密并生成westos

在这里插入图片描述

ansible-vault encrypt westos	已存在的文件进行加密

在这里插入图片描述

ansible-vault view westos		查看加密文件
ansible-vault view --vault-password-file=pass westos	非交互式查看

在这里插入图片描述

ansible-vault edit westos		编辑加密文件
ansible-vault edit --vault-password-file=pass westos
ansible-vault decrypt westos	解密文件
ansible-vault decrypt westos --output=linux	解密文件到linux文件,源文件依然加密

在这里插入图片描述

ansible-vault rekey westos		修改密码

在这里插入图片描述

ansible-vault encrypt test.yml		加密剧本
ansible-playbook test.yml --ask-vault-pass	输入密码执行剧本

在这里插入图片描述练习:
使用j2模板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

vim vhost.yml
在这里插入图片描述

在这里插入图片描述ansible-playbook vhost.yml
在这里插入图片描述

ansible westos -m shell -a 'cat /etc/httpd/conf.d/hosts.conf'	查看修改文件

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Ansible通过`ansible-vault`命令来管理和保护敏感信息,如创建、编辑和查看加密的Vault文件。下面是使用`ansible-vault`的一些基本操作: 1. **创建文件**: 使用`ansible-vault create`命令创建一个新的Vault文件,如`users.yml`: ```bash [student@workstation ansible]$ ansible-vault create users.yml ``` 2. **编辑文件**: 一旦文件被创建,可以使用`ansible-vault edit`打开它进行编辑: ```bash [student@workstation ansible]$ ansible-vault edit users.yml ``` 这会启动一个安全编辑器(默认是`vim`),你可以在这里添加或修改 Vault-protected 的内容。 3. **查看文件内容**: 如果你想查看加密后的文件内容,但不想直接解密,可以使用`ansible-vault view`命令,它只显示密文而不实际解密: ```bash [student@workstation ansible]$ ansible-vault view users.yml ``` 4. **重置密码或更改加密**: 如果需要更换Vault文件的密码,使用`ansible-vault rekey`命令重新加密整个文件: ```bash [student@workstation ansible]$ ansible-vault rekey users.yml ``` 至于`ansible_facts`,它们是Ansible收集并提供给playbooks关于目标主机的各种信息。对于开发而言,这些事实变量非常有用,比如: - `ansible_facts.hostname`: 当前主机的名称 - `ansible_facts.fqdn`: 全局唯一域名(Fully Qualified Domain Name) - `ansible_facts.default_ipv4.address`: 主机的主要IP地址 - `ansible_facts.devices`: `/dev` 目录下发现的块设备 - `ansible_facts.kernel`: 操作系统的内核版本 要在 playbook 访问这些信息,只需在任务或条件语句引用它们即可。例如: ```yaml - name: 获取主机名 debug: msg: "Hostname: {{ ansible_facts.hostname }}" ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值