• ansible 中的变量及加密


    一,## Ansible的加密控制 ##

    1. #创建建立文件

    [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

    1. ##更改密码

    [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" 

     7).使用数组设定变量

    [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

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    Zabbix监控硬盘S.M.A.R.T.信息教程
    R语言基于正则表达式筛选dataframe数据列、使用grepl函数按照正则表达式筛选数据列
    歌曲推荐《最佳损友》
    超级实用的程序员接单平台,看完少走几年弯路,强推第一个!
    剪辑的视频太大怎么办?一分钟学会压缩视频
    Neo4j之CQL基础
    【SpringBoot笔记08】SpringBoot框架集成JDBC以及JdbcTemplate的使用
    鸿蒙:Harmony开发基础知识详解
    PyQt5开发相关
    UE4 通过按键升降电梯
  • 原文地址:https://blog.csdn.net/z17609273238/article/details/126034909