Ansible中的变量及加密

news2024/11/16 11:33:19

目录

1.变量命名

2.变量级别

3.变量设定和使用方式

在playbook中直接定义变量

在文件中定义变量

使用变量

 设定主机变量和清单变量

   目录设定变量

用命令覆盖变量

使用数组设定变量

​编辑 注册变量

事实变量

​编辑

魔法变量

JINJA2模板

j2模板书写规则

​编辑

 for循环

if判定

Ansible的加密控制

创建加密文件

加密现有文件

查看加密文件

编辑加密文件

解密文件

​编辑更改密码


1.变量命名

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

2.变量级别

全局 :         从命令行或配置文件中设定的
paly :         在play和相关结构中设定的
主机 :         由清单,事实收集或注册的任务
变量优先级设定
狭窄范围有限与广域范围

3.变量设定和使用方式

在playbook中直接定义变量

- name: test var
  hosts: all
  vars:
  USER: user

在文件中定义变量

vim user_list.yml
USER: user

vim westos.yml
- name: test var
  hosts: all
  vars_files:
  - ./user_list.yml

使用变量

tasks:
 - name: create user
   user:
   name: "{{ USER }}"

 设定主机变量和清单变量

在定义主机变量和清单变量时使用
vim inventory
[host1]
192.168.81.11
[host2]
192.168.81.12
[host1:vars]
USER="user1"
[host2:vars]
USER="user2"

   目录设定变量

mkdir group_vars
vim group_vars/host1
vim group_vars/host2
//清单变量,目录中的文件名称与主机清单名称一致

mkdir host_vars
vim host_vars/192.168.81.11
vim host_vars/192.168.81.12
//主机变量,目录中的文件名称与主机名称一致

用命令覆盖变量

ansible-playbook test.yml -e "USER=hahah"

使用数组设定变量

- 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

 注册变量

register 把模块输出注册到指定字符串中
- name: test register
  hosts: host1
  tasks:
    - name: hostname command
      shell: hostname
      register: test

    - name: show messages
      debug:
        msg: "{{test['stdout']}}"

 

事实变量

事实变量是 ansible 在受控主机中自动检测出的变量
事实变量中还有与主机相关的信息
ansible localhost -m setup        //可以使用命令来查看当前主机的事实变量,并使用正确的变量名和格式在Ansible playbooks中引用这些变量。
当需要使用主机相关信息时不需要采集赋值 直接调用即可
因为变量信息为系统信息所以不能随意设定仅为采集信息 故被成为事实变量

- name: test fact
  hosts: host1
  tasks:
    - name: show messages
      debug:
        msg: "{{ansible_facts['nodename']}}"
//host1主机上显示出当前主机的节点名称

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

魔法变量

hostvars:        //ansible软件的内部信息
group_names:        //当前受管主机所在组
groups:            //列出清单中所有的组和主机
inventory_hostname:        //包含清单中配置的当前授管主机的名称

JINJA2模板

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

j2模板书写规则

{# /etc/hosts line #}    //注释说明文件用途
127.0.0.1 localhost        //文件内容
{{ ansible_facts['all_ipv4_addresses'] }}   {{ansible_facts['fqdn']}}     //使用事实变量
vim jinja.yml
- name: test j2
  hosts: host1
  tasks:
    - name: create test file
      template:
        src: ./test.j2
        dest: /mnt/test

 

 for循环

vim user1.yml
users:
 - westos
 - linux
 - ansible

vim for.j2
- name: test j2
  vars_files: ./user1.yml
  hosts: host1
  tasks:
    - name: create list
      template:
        src: ./test1.j2
        dest: /mnt/user_list

 

if判定

vim test2.j2
{% for NAME in users %}
{% if NAME in "linux" %}
{{ loop.index0 }}
{% endif %}
{% if NAME not in "linux"%}
{{ loop.index0 }} {{ NAME }}
{% endif %}
{% endfor %}
//使用if语句来检查当前的"NAME"是否包含字符串"linux"。如果包含,则使用loop.index0来输出当前索引的值,并在后面添加一个换行。如果不包含,则使用loop.index0输出当前索引的值,并在元素后面添加一个空格和"NAME"本身的值
loop.index         //循环迭代记数从1开始
loop.index0         //循环迭代计数从0开始

练习

创建一个名为"hosts"的文件,其中包含了所有主机的IP地址、主机名和完全限定域名。使用源模板文件"./hosts.j2"和目标文件路径"/mnt/hosts"

 cat hosts.j2
{% for HOST in groups['all'] %}
{{hostvars[HOST]['ansible_facts']['ens33']['ipv4']['address']}} {{hostvars[HOST]['ansible_facts']['hostname']}} {{hostvars[HOST]['ansible_facts']['fqdn']}}
{% endfor %}

vim host.yml

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

Ansible的加密控制

创建加密文件

ansible-vault create westos        //创建加密文件westos

vim westos-vault
lee
ansible-vault create --vault-password-file=westos-valut westos        //创建了一个名为"westos"的Vault文件,并使用密码文件"westos-vault"中指定的密码为其加密

加密现有文件

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1163755.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【MySQL】 索引(上)

文章目录 1. 索引的概念2. MySQL与磁盘 的交互基本单位3. 建立共识4. 现象与结论如何理解mysql中page概念为什么 要采用page的方案 进行交互 而不是用多少加载多少? 5. 页目录为什么要引入 页目录概念单页情况多页情况使用B树 构建索引为什么不用其他数据结构为什么…

打造更智能的移动端平台,蚂蚁mPaaS5.0亮相云栖大会

11月2日,在云栖大会上,蚂蚁数科宣布mPaaS正式升级至5.0版本。mPaaS5.0融合了蚂蚁大模型框架下的多种算法能力,以AI智能引擎驱动移动端平台的运营、服务和体验管理实现全链路升级,助力金融机构及企业打造更加智能、更懂用户的移动端…

数据结构与算法:使用数组模拟环形队列Java版

文章目录 如何使用数组模拟队列环形队列逻辑分析自己写的听课笔记实现代码部分方法说明 如何使用数组模拟队列 不知道如何使用数组模拟队列的可以看上一篇文章 使用数组模拟队列点击跳转 环形队列逻辑分析 自己写的听课笔记 实现代码 package com.haimeng.queue;import java…

Java实验三类的继承与派生

1.定义一个Person类,包含姓名(name)、性别(sex)、年龄(age)等字段;继承Person类设计Teacher 类,增加职称(pro)、部门(department&…

配置git并把本地项目连接github

一.配置git 1.下载git(Git),但推荐使用国内镜像下载(CNPM Binaries Mirror) 选好64和版本号下载,全部点下一步 下载完成后打开终端,输入 git --version 出现版本号则说明安装成功 然后继续…

《巴渝小将》少儿电视综艺走进江小白金色黄庄拍摄圆满成功!

巴渝小将,乘风破浪! 张扬巴渝魅力,展示少年风采,本期拍摄我们来到了位于江津的江小白金色黄庄。 江小白金色黄庄位于永兴镇黄庄村,是一座充满诗意又不乏童趣的农文旅综合体,基于当地良好的酿酒高粱产业基础…

Diango项目-简易个人博客项目

项目实现功能 在admin后台自定义添加上传文档。对展示在首页的文章分页显示。在首页点击文章的阅读全文按钮可进入该文章全文详情页进行浏览。对文章实现了内容分类何以发布时间进行归档分类。使用django的whoose搜索引擎对全文实现内容的搜索。 项目涉及技术 Mysql Djan…

性价比最高的开放式耳机是哪款、超高性价比开放式耳机

入耳式的耳机堵塞耳道,长时间佩戴耳朵闷闷的很不舒服。很多人更倾向于选择开放式耳机,即使是暴汗耳朵依旧保持通透。今天就来多方位评测一下市面上炙手可热的几款开放式耳机吧 1、西圣开放式耳机 推荐指数:★★★★★ 官方售价&#xff1a…

gtsam初探以及结合LIO-SAM算法的一些理解

概述 GTSAM(Georgia Tech Smoothing and Mapping)是基于因子图的C库,本篇基于GTSAM对因子图优化做一个简单了解和梳理,并以LIO-SAM为例进一步分析因子图优化在SLAM中的应用。 参考链接: [0]gtsam官方文档 [1]https:/…

NEFU数字图像处理(3)图像分割

一、图像分割的基本概念 1.1专有名词 前景和背景 在图像分割中,我们通常需要将图像分为前景和背景两个部分。前景是指图像中我们感兴趣、要分割出来的部分,背景是指和前景不相关的部分。例如,对于一张人物照片,人物就是前景&…

✔ ★【备战实习(面经+项目+算法)】 11.2学习

✔ ★【备战实习(面经项目算法)】 坚持完成每天必做如何找到好工作1. 科学的学习方法(专注!效率!记忆!心流!)2. 每天认真完成必做项,踏实学习技术 认真完成每天必做&…

leetCode 2915. 和为目标值的最长子序列的长度 + 动态规划 +01背包 + 空间优化 + 记忆化搜索 + 递推

2915. 和为目标值的最长子序列的长度 - 力扣(LeetCode) 给你一个下标从 0 开始的整数数组 nums 和一个整数 target 。返回和为 target 的 nums 子序列中,子序列 长度的最大值 。如果不存在和为 target 的子序列,返回 -1 。子序列 …

开放式耳机百元机哪个好、平价又好用的开放式耳机

开放式耳机最近一两年越来越受欢迎,市场上不同形态的非入耳式耳机都有,从骨传导,夹耳式到气传导等等都有。开放式耳机的好处有很多,非入耳式,不伤耳朵,佩戴更舒适更安全。今天就来和大家聊聊开放式耳机百元…

C语言跟着郝斌学到指针,MDK搭建了,为什么越学越不懂?

今日话题,一学生说C语言跟着郝斌学到指针,MDK搭建了,为什么越学越不懂?在学习STM32时,熟练使用库函数是非常关键的一步。我最初使用了野火的教材,虽然内容详尽,但对于初学者来说可能显得有些冗长…

《C语言从入门到精通》:入门容易,精通难,C语言也不例外

《C语言从入门到精通》:入门容易,精通难,C语言也不例外 C语言,容易上手,难以精通。它是一把双刃剑,既打开了编程世界的大门,又需要耐心与热情。无论是初学者还是专业人士,都需不断钻…

uniapp 离线打包 google 登录

官方文档: Oauth 模块 | uni小程序SDK 其中有 clientid 和反向url clientid 是 xxxx.apps.googleusercontent.com 反向url 是 com.googleusercontent.apps.xxx

早安心语微语早读,保持活力,偶尔撤退,时常欢喜,便是幸福的一生

1、单薄的人生,厚重的生命,我们总会遇到岁月的阳光和阴霾,路过生命的欢愉和遗憾。保持活力,偶尔撤退,时常欢喜,便是幸福的一生。 2、人活着不容易,别把自己,太亏欠;别让…

【23真题】难度Top1,没实力别硬上!

今天分享的是23年南京大学851的信号与系统试题及解析。 本套试卷难度分析:22年南京大学851考研真题,我也发布了,戳这里自取!上岸平均分为105-120分!迄今为止所做的所有23真题(共22套)Top1难度&…

选择适合的在线数据库设计工具,值得收藏!

最好的数据库设计工具,可以构建您需要任何数据库类型的数据库,并且可操作性简单易上手。数据库设计工具可以设计数据库架构、定义表结构、建立关系图,以便轻松理解数据库内容。 选择最适合你的工具 在选择数据库设计工具时,需要考…

【1++的Linux】之信号(二)

👍作者主页:进击的1 🤩 专栏链接:【1的Linux】 文章目录 一,信号的保存二,信号处理1. 信号处理的时间 一,信号的保存 我们在上一篇文章中讲述了信号的概念和信号的产生,并且我们知道…