初识ansible变量及实例配置

devtools/2024/9/22 6:49:24/

目录

1、为什么要使用变量

2、变量分类

3、 变量详解

3.1  vars,vars_files , group_vars

3.1 .1  vars   剧本中定义变量

3.1.2  vars_file  将变量存放到一个文件中,并在剧本中引用

3.1.3   group_vars 创建一个变量文件给某个组使用

实例1-根据不同的主机组创建对应的目录

实例2-使⽤group_vars的all组定义变量

3.1.4 变量基础vars,vars_files , group_vars总结

3.2 ansible-facts变量

3.2.1 常用fact变量

3.2.2实例-系统巡检-获取所有受管主机的基本信息保存到/tmp/主机名命名文件中

3.3 ansible-register变量

4、 变量总结


1、为什么要使用变量

Ansible变量就是一种存储数据的机制,可以在Ansible剧本文件中使用。使用变量可以将一些常量或重复的值提取出来,集中管理,提高代码的可读性和可维护性。同时,变量还可以用于动态生成剧本,根据不同的环境和需求,生成不同的剧本文件。简单来说,使用变量可以让Ansible更加灵活、可维护和可重用。

2、变量分类

变量
命令行临时使用,
变量⽂件vars_files某⼀个主机使⽤,较少⽤.
主机组共⽤的变量⽂件 group_vars应⽤范围⼴泛.
ansible内置变量(facts变量)收集主机的基本信息,ip地址,主机名,系统及版本....
register变量实现命令⾏ $() 或``功能

3、 变量详解

3.1  vars,vars_files , group_vars
3.1 .1  vars   剧本中定义变量

通过剧本paly部分中vars定义变量

3.1.2  vars_file  将变量存放到一个文件中,并在剧本中引用

剧本中play部分vars file指定变量文件

3.1.3   group_vars 创建一个变量文件给某个组使用

通过group vars指定主机组共享变量文件

⽤法:需要创建⼀个group_vars⽬录.  

⽬录下⾯创建以主机组命名的⽬录.  

存放变量⽂件vars.yml

实例1-根据不同的主机组创建对应的目录

使用ansible临时命令测试

实例2-使⽤group_vars的all组定义变量

ansible临时测试!!!

3.1.4 变量基础vars,vars_files , group_vars总结
使用方法具体含义应用场景
变量写在剧本开头:vars简单的较少的可以
变量写在独⽴⽂件中:vars_file:指定变量文件位置了解即可.
变量写在独⽴⽂件中,按照组进⾏ 分类:group_vars/all/vars.yml掌握在all中创建所有主机/分组⽤的变量即可.



3.2 ansible-facts变量

ansible-facts变量说明:ansible-facts是ansible服务内置变量,执行剧本,有个默认的任务(task),搜集每个主机的基本信息。

3.2.1 常用fact变量
ansible_hostname               #主机名 
ansible_memtotal_mb            #内存⼤⼩(总计) 单位mb 
ansible_processor_vcpus        #cpu数量 
ansible_default_ipv4.address   #默认的⽹卡ip eth0
ansible_distribution           #系统发⾏版本名字 CentOS  Ubuntu  Debian ansible_processor_cores        #核⼼总数
ansible_date_time.date         #当前时间 年-⽉-⽇

3.2.2实例-系统巡检-获取所有受管主机的基本信息保存到/tmp/主机名命名文件中

步骤1:

01.创建文件

02.写入内容

遍历所有受控主机,获取每个主机的基础信息,并将其保存到一主机名命名的文件中。其中,inventory_hostname表示当前主机的名称。copy模块用于将主机基础信息保存到文件中。

使用ansible临时命令测试

补充:

如果没有需求的话,可以关闭facts功能,让剧本执行加速,使用gather_facts:no 

3.3 ansible-register变量

Ansible中的register模块用于将任务执行的结果存储到一个变量中,以便在后续的任务中使用。register模块可以将任务执行的结果存储为一个变量,然后可以在后续的任务中使用该变量。以下是register模块的使用方法:

- name: 执行任务并将结果存储到变量中command: ls -lregister: result- name: 使用存储的变量debug:var: result.stdout

在上面的例子中,command模块用于执行ls -l命令,并将结果存储到result变量中。然后,debug模块使用result.stdout变量输出任务执行的结果。在register模块中,你可以使用任何变量名来存储结果,例如outputresultresponse等。你可以在后续的任务中使用存储的变量来执行其他操作,例如过滤、比较、格式化等。

4、 变量总结

变量含义和特点应用场景
命令行临时使用
剧本⽂件中vars定义当前这个剧本⽣效,涉及多个剧本不⽅便.
变量⽂件vars_files

所有变量写⼊到⽂件中: key:

value 变量: 值,

在剧本中通过vars_files: 变量⽂件路径./vars.yml

每次使⽤需要⼿动在剧本中加载vars_files: ./vars.yml

主机组共⽤的变量⽂件

group_vars

应⽤范围⼴泛. 根据主机清单⾥⾯的分组创建⽬录,存放vars.yml根据主机所属的主机组,⾃动读取group_vars/组名/vars.yml⽂件. group_vars/all/vars.yml
ansible内置变量(facts变量)收集主机的基本信息,ip地址,主机名,系统及版本....如果想提升ans执⾏速度可以关闭gather_facts: no
register变量(注册变量)实现命令⾏ $() 或``功能

寄存器变量(注册,临时变量): 把命令,模块结果,存放在reg格式变量中,通过变量.stdout 取出对应值.


http://www.ppmy.cn/devtools/7386.html

相关文章

Cyber Weekly #3

赛博新闻 1、Meta发布最强开源模型Llama3[1] 4月19日凌晨,Meta Llama 3发布,模型包含8B和70B两种参数规模(400B还在训练中),Llama 3使用了超过 15T token的训练数据,8B版本数据更新截止至2023年3月&#…

SpringBoot3 + Kotlin + mybatis-plus + Swagger3后端开发样例

前言: Kotlin 是一种在 JVM(Java 虚拟机)、Android 和浏览器端运行的静态类型编程语言。以下是关于 Kotlin 的总结介绍: 1、语言特性: 简洁性:Kotlin 旨在提供简洁且安全的代码,同时保持与 Jav…

Json三方库介绍

目录 Json是干什么的Json序列化代码Json反序列化代码 Json是干什么的 Json是一种轻量级的数据交换格式,也叫做数据序列化方式。Json完全独立于编程语言的文本格式来存储和表述数据。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升…

逆向IDA中Dword,数据提取

我们可以看见数据是这样的&#xff0c;第一个是1cc 但是我们shifte就是 这个因为他的数据太大了&#xff0c;导致高位跑后面去了 这个时候&#xff0c;我们右键——convert——dword 这样就可以提取到争取的数据了 比如第一个数据 0x1cc a0xcc b0x1 print(hex((b<<8…

java设计模式之策略模式实操

一、背景 临床服务项目流向规则匹配&#xff0c;比如说医生开一个“CT”检查&#xff0c;该检查应该由哪个科室来执行&#xff0c;是通过流向规则配置来决定的&#xff0c;具体配置如下图&#xff1a; 通过相关的条件匹配&#xff0c;最终找到流向科室。 二、设计思路 有几个注…

【PyTorch】1-基础知识(张量、导数、CUDA)

PyTorch&#xff1a;1-基础知识 注&#xff1a;所有资料来源且归属于thorough-pytorch(https://datawhalechina.github.io/thorough-pytorch/)&#xff0c;下文仅为学习记录 1.1&#xff1a;张量 神经网络核心包&#xff1a;autograd&#xff08;自动微分&#xff09; 张量…

在线拍卖系统,基于SpringBoot+Vue+MySql开发的在线拍卖系统设计和实现

目录 一. 系统介绍 二. 功能模块 2.1. 管理员功能模块 2.2. 用户功能模块 2.3. 前台首页功能模块 2.4. 部分代码实现 一. 系统介绍 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系…

electron项目打包慢、打包报错

项目使用了electron框架&#xff0c;在第一次打包或者网络条件不好的环境下进行打包时熟速度慢的出奇&#xff0c;甚至经常出现打包失败的情况&#xff08;如上面图片的报错&#xff09;。 这是因为&#xff0c;在electron打包的过程中&#xff0c;需要去官方源https://github.…