当前位置: 首页 > news >正文

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

文章目录

  • 一、变量
  • 二、机密
    • 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: allvars:                             ##添加变量。service_name: httpdtasks:- name: 安装httpdyum: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.161tasks:- name: 执行setup模块,取变量debug:var: ansible_facts

在这里插入图片描述

3.2 展示某个结果

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

[root@localhost playbook]# cat qingjun.yml 
---- name: 获取变量hosts: 192.168.130.161tasks:- name: 获取变量1shell: |echo 这台受控机的ip是:{{ ansible_facts['all_ipv4_addresses'] }}    ##双括号代表引用变量。register: qingjun         ##register捕获命令输出,写在哪个任务下面打印哪个任务下的信息。- debug: var=qingjun             ##使用debug模块打印一个变量值,这里就打印qingjun变量。- name: 获取变量2shell: |    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.161tasks:- name: 获取变量1shell: |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.161tasks:- name: 获取变量1shell: |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.lryc.cn/news/91976.html

相关文章:

  • React实现Vue的watch监听属性
  • axios、跨域与JSONP、防抖和节流
  • macOS Ventura 13.5beta2 (22G5038d)发布
  • jwt----介绍,原理
  • Three.js--》实现3d水晶小熊模型搭建
  • 《阿里大数据之路》研读笔记(1)
  • Logback 日志框架详解
  • BIO、NIO、AIO 有什么区别?
  • nginx和tomcat负载均衡、静态分离
  • 用AI写出的高考作文!
  • chatgpt赋能python:Python屏幕输入介绍:了解命令行输入的基本知识
  • bert中文文本摘要代码(1)
  • 为何溃坝事故频发,大坝安全如何保障?
  • 第十九章_手写Redis分布式锁
  • 电路设计【8】原理图中VCC、VDD、VEE、VSS、VBAT各表示什么意思
  • Volatile、Synchronized、ReentrantLock锁机制使用说明
  • 港联证券|AI概念股继续活跃 科创50指数逆势走高
  • 分布式事务一 事物以及分布式事物介绍
  • 【十四】设计模式~~~行为型模式~~~中介者模式(Java)
  • css3--nth-child的用法
  • 【假捻发加工生产工单下达】
  • Go for-range VS for
  • 大数据教程【01.01】--大数据介绍及开发环境
  • 文件阅览功能的实现(适用于word、pdf、Excel、ppt、png...)
  • 面试-RabbitMQ常见面试问题
  • 使用VBA在单元格中快速插入Unicode符号
  • PyTorch 深度学习 || 专题六:PyTorch 数据的准备
  • 迅为RK3568开发板2800页手册+220集视频
  • 模拟电子 | 稳压管及其应用
  • 使用大型语言模(LLM)构建系统(二):内容审核、预防Prompt注入