Ansible中的变量及加密

这篇具有很好参考价值的文章主要介绍了Ansible中的变量及加密。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、变量的设定

二、变量的使用方式

1、在playbook中直接定义变量

2、在文件中定义变量 

3、设定主机变量和清单变量

4、目录设定变量

5、用命令覆盖变量

6、使用数组设定变量

7、注册变量

 8、事实变量

9、魔法变量 

三、JINJA2模板 

四、加密控制

1、创建加密文件

2、查看加密文件 

3、编辑加密文件 

4、加密现有文件 

5、更改加密文件密码

6、解密文件

7、执行加密文件


一、变量的设定

1、变量的命名规则:
(1)只能包含数字,下划线,字母;
(2)只能用下划线或字母开头;
(3)ansible内置的关键字不能作为变量名。
2、变量的级别:

3、变量优先级:
全局 > play > 主机

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

二、变量的使用方式

  • 这里使用循环定义的方式,使用loopitem实现循环执行

1、在playbook中直接定义变量

vim test.yml

- name: test var
  hosts: all
  vars:
    TEST: hello ale
  tasks:
    - name: file
      debug:
        msg: "{{ TEST }}"

ansible-playbook test.yml

Ansible中的变量及加密,ansible,ansible

2、在文件中定义变量 

vim file.yml

TEST: hello ale

vim test.yml

- name: test var
  hosts: all
  vars_files:
    - ./file.yml
  tasks:
    - name: file
      debug:
        msg: "{{ TEST }}"

Ansible中的变量及加密,ansible,ansible

Ansible中的变量及加密,ansible,ansible

3、设定主机变量和清单变量

[test1]
192.168.67.112

[test2]
192.168.67.113

[test1:vars]
TEST=hello yyl

[test2:vars]
TEST=hello ale

vim test.yml

- name: test var
  hosts: all
  vars:
  tasks:
    - name: file
      debug:
        msg: "{{ TEST }}"

Ansible中的变量及加密,ansible,ansible

Ansible中的变量及加密,ansible,ansible

4、目录设定变量

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

 group_vars和host_vars之前注释inventory   内定义的

mkdir group_vars
cd group_vars/

vim test1
TEST: hello yyl
vim test2
TEST: hello ale

vim test.yml

- name: test var
  hosts: all
  vars:
  tasks:
    - name: file
      debug:
        msg: "{{ TEST }}"

Ansible中的变量及加密,ansible,ansible

 host_vars:

mkdir host_vars
cd host_vars/

vim 192.168.67.112
TEST: hello yyl
vim 192.168.67.113
TEST: hello ale

- name: test var
  hosts: all
  vars:
  tasks:
    - name: file
      debug:
        msg: "{{ TEST }}"

Ansible中的变量及加密,ansible,ansible

Ansible中的变量及加密,ansible,ansible

5、用命令覆盖变量

ansible-playbook test.yml -e "TEST=hahahaha"

Ansible中的变量及加密,ansible,ansible

6、使用数组设定变量

vim user_var.yml

- name: test var
  hosts: all
  vars:
    USER1:
      name: user1
      id: 123
    USER2:
      name: user2
      id: 456
  tasks:
    - name:
      user:
        name: "{{USER1.name}}"
        uid: "{{USER1.id}}"
        state: present
    - name:
      user:
        name: "{{USER2.name}}"
        uid: "{{USER2.id}}"
        state: present

Ansible中的变量及加密,ansible,ansible

7、注册变量

register:把模块输出注册到指定字符串中    要输出单独参数时,指定输出变量

vim reg.yml

- name: test register
  hosts: all
  tasks:
   - name: hostname command
     shell:
       hostname
     register: info
   - name: show messages
     shell:
       echo "{{info['stdout']}}"

 Ansible中的变量及加密,ansible,ansible

 8、事实变量

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

vim 1.yml

- name: test register
  hosts: all
  tasks:
   - name: show messages
     debug:
       msg: "{{ansible_facts['architecture']}}"

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

Ansible中的变量及加密,ansible,ansible

9、魔法变量 

和事实变量类似,都是真实存在的变量,和ansible有关;直接执行以下变量即可。

 ##ansible软件的内部信息

ansible localhost -m debug -a "var=hostvars"

 Ansible中的变量及加密,ansible,ansible

##当前受管主机所在组

ansible all -m debug -a "var=group_names" 

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

ansible localhost -m debug -a "var=groups"

##包含清单中配置的当前授管主机的名称

ansible localhost -m debug -a "var=inventory_hostname"

Ansible中的变量及加密,ansible,ansible

三、JINJA2模板 

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

j2模板书写规则

{# /etc/hosts line #}  ##注释说明文件用途
127.0.0.1 localhost  ##文件内容
{{ ansible_facts['all_ipv4_addresses'] }} {{ansible_facts['fqdn']}}  ##使用事实变量

j2模板的实现:

vim jinja.yml

---
- name: testjinja
  hosts: server2
  tasks:
    - name: create file
      template:
        src: ./test.j2  ##j2模板来源
        dest: /mnt/test  ##远程主机执行文件地址

for循环和 if 的用法:

for循环:

设定j2模板,变量要用{{ }}括起来

{% for NAME in users %}  ##for循环设定变量NAME,变量来源于变量文件
{{ loop.index }} {{ NAME  }}  ##变量用 {{ }} 括起来
{% endfor %}  ##for循环结束

if判断:

{% for NAME in users %}
{% if NAME in "linux"%}  ##in表示等于时
{{ loop.index0 }}  ##等于时只记数
{% endif %}
{% if NAME not in "linux"%}  ##not in表示不等于时
{{ loop.index0 }} {{ NAME }}  ##不等于时记数加变量
{% endif %}
{% endfor %}

练习:

使用j2模板 写hosts解析文件

vim hosts.yml

- name: create hosts
  hosts: all
  tasks:
    - name: create hosts file
      template:
        src: ./hosts.j2
        dest: /mnt/hosts

vim hosts.j2

{% for HOST in groups['all'] %}
{{hostvars[HOST]['ansible_facts']['ens33']['ipv4']['address'] }} {{hostvars[HOST]['ansible_facts']['hostname']}}
{% endfor %}

Ansible中的变量及加密,ansible,ansibleAnsible中的变量及加密,ansible,ansible

四、加密控制

1、创建加密文件

ansible-vault create yyl
cat yyl

Ansible中的变量及加密,ansible,ansible

2、查看加密文件 

vim authyyl  123
ansible-vault view yyl
ansible-vault view --vault-password-file=authyyl  yyl

Ansible中的变量及加密,ansible,ansible

3、编辑加密文件 

ansible-vault edit --vault-password-file=authyyl yyl
ansible-vault view --vault-password-file=authyyl  yyl

Ansible中的变量及加密,ansible,ansible

4、加密现有文件 

ansible-vault encrypt yyl.yml

Ansible中的变量及加密,ansible,ansible

 5、更改加密文件密码

ansible-vault rekey yyl

文件更改密码
vim authyyl  123456
ansible-vault rekey yyl --new-vault-password-file=authyyl
ansible-vault view yyl

Ansible中的变量及加密,ansible,ansible 

Ansible中的变量及加密,ansible,ansible

6、解密文件

ansible-vault decrypt yyl
ansible-vault decrypt test.yml

Ansible中的变量及加密,ansible,ansible

7、执行加密文件

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

Ansible中的变量及加密,ansible,ansible文章来源地址https://www.toymoban.com/news/detail-740633.html

到了这里,关于Ansible中的变量及加密的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 自动化运维(二十六)Ansible 实战变量插件和连接插件

     Ansible 支持多种类型的插件,这些插件可以帮助你扩展和定制 Ansible 的功能。每种插件类型都有其特定的用途和应用场景。今天我们一起学习变量插件和连接插件。 Ansible 变量插件允许动态地添加变量到主机或组中,这些变量可以在 playbook 运行时被解析和使用。变量插件可

    2024年04月14日
    浏览(57)
  • 使用Ansible中的playbook

    目录 1.Playbook的功能 2.YAML 3.YAML列表 4.YAML的字典 5.playbook执行命令 6.playbook的核心组件 7.vim 设定技巧 示例 playbook 是由一个或多个play组成的列表 Playboot 文件使用YAML来写的 #简介# 是一种表达资料序列的格式,类似XML #特点# 1、可读性好 2、和脚本语言交互性号 3、易于实现 4、适用

    2024年02月06日
    浏览(33)
  • Ansible Handlers模块详解,深入理解Ansible Handlers 自动化中的关键组件

    在现代的IT环境中,自动化已经成为提高效率和减少错误的关键。Ansible作为一款流行的自动化工具,通过使用Playbooks来定义和执行任务。而Handlers作为Ansible的组件之一,在自动化过程中发挥着重要的作用。本文将深入探讨Handlers的概念、作用和使用方法,帮助读者更好地理解

    2024年02月14日
    浏览(35)
  • ansible剧本中的角色

    1.1 roles角色的作用? 可以把playbook剧本里的各个play看作为一个角色,将各个角色打的tasks任务、vars变量、template模版和copy、script模块使用的相关文件等内容放置在指定角色的目录里统一管理,在需要的时候可在playbook中使用roles角色直接调用即可。 1.2 roles的目录格式 1.3 调用

    2024年02月21日
    浏览(36)
  • 07_ansible, 条件选择、加载客户事件、在roles和includes上面应用’when’语句、条件导入、基于变量选择文件和模版、注册变量

    10.条件选择 10.1.When语句 10.2.加载客户事件 10.3.在roles和includes上面应用’when’语句 10.4.条件导入 10.5.基于变量选择文件和模版 10.6.注册变量 转自:http://www.ansible.com.cn/docs/playbooks_conditionals.html#id3 常常来说,一个play的结果经常取决于一个变量的值,事件(从远端系统得到事件)

    2024年02月13日
    浏览(43)
  • CICD中的Jenkins和Ansible解决方案

    每一次重装系统或者是需要在服务器上正确运行软件,我们都需要重新安装所有的package、dependency并进行相应配置的微调。而这一过程可能就会因为疏忽导致错误,因此需要自动化部署 持续整合,持续交付(CI/CD)的实践,我们能够周期性的对产品进行各种专业测试,如果出

    2024年02月01日
    浏览(33)
  • ansible-playbook中的block模块,如果中途失败了,怎样退出整个playbook

    在Ansible中,如果使用了block模块,并且希望在其中的任务失败时退出整个playbook,可以通过设置block模块的属性`rescue`为`yes`来实现。 以下是一个示例的playbook,其中包含一个block模块: ```yaml - name: Example playbook   hosts: all   tasks:     - name: Block example       block:         - nam

    2024年02月15日
    浏览(38)
  • Container ansible disguises local ansible 【容器 ansible 伪装本地 ansible】

    预备条件: ctr crictl $ nerdctl containerd install 了解 kubespray 是什么 kubespray 包含 ansible、ansible-playbook命令以及通过kubespray项目安装kubernetes集群的介质。 编排 inventory.ini

    2024年01月21日
    浏览(38)
  • 【ansible】ansible配置文件详解

    目录 管理ansible的配置文件 一,配置ansible 二,据优先级选择执行ansible配置文件 1,按照优先级首先会匹配环境变量ANSIBLE_CONFIG  2,第二个匹配到./ansible.cfg文件  3,第三个匹配到~/.ansible.cfg文件 4,当以上文件都不存在时,ansible配置文件就会匹配到/etc/ansible/ansible.cfg 三,管理

    2024年02月04日
    浏览(39)
  • ansible(2)-- ansible常用模块

    部署ansible:ansible(1)-- 部署ansible连接被控端_luo_guibin的博客-CSDN博客 目录  一、ansible常用模块 1.1 ping 1.2 command 1.3 raw 1.4 shell 1.5 script 1.6 copy 1.7 template 1.8 yum 11.0.1.13 主控端(ansible) 11.0.1.12 被控端(k8s-master) 查看主控端被控端IP,主控端(10.1.1.13)查看ansible配置文件的被控端,

    2024年02月11日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包