Ansible基础4——变量、机密、事实

news2024/11/24 4:27:41

文章目录

  • 一、变量
  • 二、机密
    • 2.1 创建加密文件
    • 2.2 查看加密文件
    • 2.3 编辑加密文件内容
    • 2.4 加密现有文件
    • 2.5 解密文件
    • 2.6 更改加密密码
  • 三、事实
    • 3.1 收集展示事实
    • 3.2 展示某个结果
    • 3.3 新旧事实命令
    • 3.4 关闭事实
    • 3.5 魔法变量

一、变量

常设置的变量:

  • 要创建的用户
  • 要安装的软件包
  • 要重新启动的服务
  • 要删除的文件
  • 要从互联网检索的存档

命名变量:

  • 变量的名称必须以字母开头,并且只能包含字母、数字和下划线。

变量优先级:

  • 全局范围:从命令行或Ansible配置设置的变量。
  • playbook范围:在play和相关结构中设置的变量。
  • 主机范围:由清单、事实收集或注册的任务,在主机组和个别主机上设置的变量。
  • 命令行 > playbook变量 > 清单文件变量

1.playbook中定义变量。

[root@localhost playbook]# cat baimu.yml 
---
- name: 服务安装
  hosts: all
  vars:                             ##添加变量。
    service_name: httpd
  tasks:
    - name: 安装httpd
      yum:
        name: "{{ service_name }}"      ##引用变量名。
        state: present

在这里插入图片描述
2.使用变量文件定义。
在这里插入图片描述
在这里插入图片描述

二、机密

命令释义
create创建一个vault加密文件
decrypt解密保险库加密文件
edit编辑保险库加密文件
view查看保险库加密文件
encrypt加密YAML文件
encrypt_string加密字符串
rekey重新加密保险库加密文件

2.1 创建加密文件

1.输出密码创建加密文件qingjun,内容为“我在学习”。
在这里插入图片描述
2.指定密码文件创建加密文件baimu,内容为"热爱祖国"。
在这里插入图片描述

2.2 查看加密文件

1.查看加密文件qingjun内容。
在这里插入图片描述
2.查看加密文件baimu内容。
在这里插入图片描述

2.3 编辑加密文件内容

1.对现有的加密文件baimu内容进行编辑,添加一行“华夏九州”,输入密码查看验证。
在这里插入图片描述

2.4 加密现有文件

1.将普通文件qingjun1加密,变成加密文件,只能使用密码查看。
在这里插入图片描述

2.5 解密文件

1.将加密文件变成普通文件。
在这里插入图片描述

2.6 更改加密密码

1.更改加密文件baimu的密码,有原来的123456变成citms。
在这里插入图片描述

三、事实

基本了解:

  • 通过setup模块获取受控机上的变量称为事实,将变量信息输出展示到主控机上,可以方便主控机对受控机的操控使用。
  • 事实中包含与受控机相关的信息,可以配合playbook中的变量、条件和循环来使用。
  • 每个play在执行第一个任务之前会先自动运行setup模块来收集事实,但不会展示出来,可以在playbook中使用debug模块来收集事实并展示出来。

常用事实:

  • 主机名称
  • 内核版本
  • 网络接口
  • IP地址
  • 操作系统版本
  • 各种环境变量
  • CPU数量
  • 提供的或可用的内存
  • 可用磁盘空间

3.1 收集展示事实

1.使用setup模块获取对受控机收集的事实。

ansible all -m setup -i inventory.ini |less

在这里插入图片描述
2.使用debug模块收集展示事实。

[root@localhost playbook]# cat qingjun.yml 
---

- name: 系统初始化
  hosts: 192.168.130.161
  tasks:
    - name: 执行setup模块,取变量
      debug:
        var: ansible_facts

在这里插入图片描述

3.2 展示某个结果

1.只展示事实中的某个参数。
在这里插入图片描述
在这里插入图片描述
2.作为变量被其他模块使用。

[root@localhost playbook]# cat qingjun.yml 
---

- name: 获取变量
  hosts: 192.168.130.161
  tasks:
    - name: 获取变量1
      shell: |
        echo 这台受控机的ip是:{{ ansible_facts['all_ipv4_addresses'] }}    ##双括号代表引用变量。
      register: qingjun         ##register捕获命令输出,写在哪个任务下面打印哪个任务下的信息。
    - debug: var=qingjun             ##使用debug模块打印一个变量值,这里就打印qingjun变量。
 
    - name: 获取变量2
      shell: |    
        echo 版本号为:{{ ansible_facts['bios_version'] }}
      register: qingjun
    - debug: var=qingjun

在这里插入图片描述

3.3 新旧事实命令

ansible_facts形式旧事实变量形式
ansible_facts[‘hostname’]ansible_hostname
ansible_facts[‘fqdn’]ansible_fqdn
ansible_facts[‘default_ipv4’][‘address’]ansible_default_ipv4[‘address’]
ansible_facts[‘interfaces’]ansible_interfaces
ansible_facts[‘devices’][‘vda’][‘partitions’][‘vda1’][‘size’]ansible_devices[‘vda’][‘partitions’][‘vda1’][‘size’]
ansible_facts[‘dns’][‘nameservers’]ansible_dns[‘nameservers’]
ansible_facts[‘kernel’]ansible_kernel

1.使用旧语法展示事实结果。

[root@localhost playbook]# cat qingjun.yml 
---

- name: 获取变量
  hosts: 192.168.130.161
  tasks:
    - name: 获取变量1
      shell: |
        echo 这台受控机的ip是:{{ ansible_all_ipv4_addresses }}     ##使用就语法,去掉facts。
      register: qingjun
    - debug: var=qingjun

在这里插入图片描述
2.关闭就语法使用。修改ansible配置文件参数“ inject_facts_as_vars = True ”,它默认是开启的,将注释取消,改为False即可。
在这里插入图片描述

3.4 关闭事实

1.添加参数“gather_facts: no”,可关闭事实收集功能。
在这里插入图片描述

在这里插入图片描述

2.此时可以添加setup模块,临时收集事实。

[root@localhost playbook]# cat qingjun.yml 
---

- name: 获取变量
  hosts: 192.168.130.161
  tasks:
    - name: 获取变量1
      shell: |
        echo 这台受控机的ip是:{{ ansible_facts['all_ipv4_addresses'] }}
      register: qingjun
    - debug: var=qingjun

在这里插入图片描述

3.5 魔法变量

  • 除了从事实中展示出来的变量,也还有一些其他变量由Ansible自动设置,这种变量成为魔法变量。这些魔法变量也可用于获取与特定受管主机相关的信息。
  • 官网连接
常用魔法变量释义
hostvars包含受管主机的变量,可以用于获取另一台受管主机的变量的值。
若还没有为受管主机收集事实,则它不会包含该主机的事实。
group_names列出当前受管主机所属的所有组
groups列出清单中的所有组和主机
inventory_hostname包含清单中配置的当前受管主机的主机名称,也有可能与事实报告的主机名称不同

1.查看受控机的变量信息,setup模块查不到的这部分信息。
在这里插入图片描述
2.查看清单中的所有组和主机。
在这里插入图片描述

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

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

相关文章

【C++ 基础篇:19】:类的构造函数与初始化列表:用法说明及构造函数的细节内容补充!

本系列 C 相关文章 仅为笔者学习笔记记录,用自己的理解记录学习!C 学习系列将分为三个阶段:基础篇、STL 篇、高阶数据结构与算法篇,相关重点内容如下: 基础篇:类与对象(涉及C的三大特性等&#…

Kubernetes_容器网络_循序渐进地学习kubernetes网络

文章目录 前言一、Linux网络命名空间1.1 linux网络命名空间1.2 不同网络命名空间的通信两个网络命名空间通信多个网络命名空间通信 二、K8S Pod网络通信2.1 Pod内部容器的网络通信2.2 相同node: 不同pod间的网络通信2.3 不同node: 不同pod间的网络通信2.4 容器网络插件: Flanne…

C++STL库之map

文章目录 关于仿函数stackdeque(双端对列)queuepriority_queuemap(重点)set(去重) 关于仿函数 //C不能重载的运算符sizeof、 ::、 ? :、 .、 *、 class Add { public:int operator()(int a, int b)const{return a b;} }; //函数对象,仿函数…

EDA数字钟(三)

文章目录 前言一、设计内容二、模块结构三、代码编写1、顶层模块Digclk2、状态控制模块Ctrl3、按键消抖模块Filter4、计时模块Time5、闹钟模块Alarm6、显示模块Display7、数码管驱动模块Smg 四、测试文件五、波形仿真总结 前言 再次编写数字钟Verilog程序,使其符合…

数据迁移工具,用这8种就够了

前言 最近由于工作需要需要进行数据迁移,那么ETL数据迁移工具该用哪些呢? ETL(是Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程),对于企业应用来说,我们经常会遇到各种数据的处理、转换、迁移的场景。…

50 Projects 50 Days - Split Landing Page 学习记录

项目地址 Split Landing Page 展示效果 Split Landing Page 实现思路 当鼠标移动到左右两块区域时,分别给容器添加不同的class实现样式的变换。 有两种思路可以实现,一种是hover时改变宽度,一种是hover时改变flex拉伸比例,两…

从零手写操作系统之RVOS外设中断实现-04

从零手写操作系统之RVOS外设中断实现-04 RISC-V 中断(Interrupt)的分类RISC-V Trap (中断)处理中涉及的寄存器寄存器 mie、mip中断处理流程PLIC 介绍外部中断(external interrupt )PLICPLIC Interrupt Sour…

精调万分(Fine tune SAM)-万分预测器的解读和精调之一

缘起 分割万物(segment-anything model, SAM, 万分), 是图像分割领域的革命, 图像分割从此进入大模型时代. 如何自定义这个大模型以为己用? 或者说, 通过精调取长补短用于自己的项目?这是一个值得研究的问题, 在这里我试着探索一下, 万分在医学影像学里面的脊柱分割的应用. …

【sentinel】滑动时间窗口算法在Sentinel中的应用

固定窗口算法(计数器法) 算法介绍 计数器法是限流算法里最简单也是最容易实现的一种算法。比如我们规定,对于A接口来说,我们1秒的访问次数不能超过10次。那么我们可以这么做:在一开始的时候,我们可以设置…

ESP-BOX官方例程实践

1.下载esp-box项目代码 github仓库:https://github.com/espressif/esp-box gitee仓库:https://gitee.com/EspressifSystems/esp-box 使用git工具和如下命令进行下载: git clone --recursive https://github.com/espressif/esp-box.git or gi…

【C++ 基础篇:21】:friend 友元四连问:什么是友元?友元类?友元函数?什么时候用友元?

本系列 C 相关文章 仅为笔者学习笔记记录,用自己的理解记录学习!C 学习系列将分为三个阶段:基础篇、STL 篇、高阶数据结构与算法篇,相关重点内容如下: 基础篇:类与对象(涉及C的三大特性等&#…

S7-200 PLC的CPU模块介绍

更多关于西门子S7-200PLC内容查看:西门子200系列PLC学习课程大纲(课程筹备中) 1.什么是西门子200PLC的CPU? 如下图1-1所示,S7-200 PLC CUP是将一个微处理器,一个集成电源,一定的数字量或模拟量I/O,一定的通信接口等…

【Linux】—— git的管理以及使用

前言: 在上篇我们已经学习了关于调试器gdb的相关知识,本期我将为大家介绍的是关于版本控制工具——git的使用教程!!! 目录 前言 (一)git的历史介绍 (二)github和gite…

Unity异步编程【6】——Unity中的UniTask如何取消指定的任务或所有的任务

今天儿童节,犬子已经9个多月了,今天是他的第一个儿童节。中年得子,其乐无穷(音:ku bu kan yan)…回头是岸啊 〇、 示例效果 一连创建5个异步任务[id 从0~4],先停止其中的第id 4的任务&#x…

Flutter进阶篇-布局(Layout)原理

1、约束、尺寸、位置 overrideWidget build(BuildContext context) {return Scaffold(body: LayoutBuilder(builder: (context, constraints) {print("body约束:" constraints.toString());return Container(color: Colors.black,width: 300,height: 300,child: L…

【企业化架构部署】基于Nginx搭建LNMP架构

文章目录 一、安装 MySQL 数据库1. 安装Mysql环境依赖包2. 创建运行用户3. 编译安装4. 修改mysql 配置文件5. 更改mysql安装目录和配置文件的属主属组6. 设置路径环境变量7. 初始化数据库8. 添加mysqld系统服务9. 修改mysql 的登录密码10. 授权远程登录 二、编译安装 nginx 服务…

Maven 工具

Maven 工具 Maven简介Maven 基础概念创建 Maven项目依赖配置生命周期与插件分模块开发聚合和继承聚合继承聚合与继承的区别 属性版本管理多环境配置与应用私服 Maven简介 Maven 本质是一个项目管理工具,将项目开发和管理过程抽象成一个项目对象模型(POM…

【爬虫】3.4爬取网站复杂数据

1. Web服务器网站 进一步把前面的Web网站的mysql.html, python.html, java.html丰富其中 的内容&#xff0c;并加上图形&#xff1a; mysql.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>my…

ICV报告: 智能座舱SoC全球市场规模预计2025年突破50亿美元

在智能化、互联化车辆需求不断增加的推动下&#xff0c;汽车行业正在经历一场范式转变。这一转变的前沿之一是智能座舱SoC。本市场研究报告对智能座舱SoC市场进行了全面的分析&#xff0c;包括其应用领域、当前状况和主要行业参与者。 智能座舱SoC指的是现代汽车智能座舱系统的…

Qt6.5.1+WebRTC学习笔记(十)开发环境搭建(win10+vs2022)

一、准备 1.操作系统win10 64位 2.合理的上网方式&#xff0c;需要正常访问google,最好有40G以上流量 3.安装VS2022&#xff0c;笔者使用的是社区版&#xff0c;并选中C相关&#xff0c;笔者设置如下 注意&#xff0c;win10的sdk需要是10.0.22621.0&#xff0c;其他版本可能…