初识ansible变量及实例配置

目录

1、为什么要使用变量

2、变量分类

[3、 变量详解](#3、 变量详解)

[3.1 vars,vars_files , group_vars](#3.1 vars,vars_files , group_vars)

[3.1 .1 vars 剧本中定义变量](#3.1 .1 vars 剧本中定义变量)

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

[3.1.3 group_vars 创建一个变量文件给某个组使用](#3.1.3 group_vars 创建一个变量文件给某个组使用)

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

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

[3.1.4 变量基础vars,vars_files , group_vars总结](#3.1.4 变量基础vars,vars_files , group_vars总结)

[3.2 ansible-facts变量](#3.2 ansible-facts变量)

[3.2.1 常用fact变量](#3.2.1 常用fact变量)

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

[3.3 ansible-register变量](#3.3 ansible-register变量)

[4、 变量总结](#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 -l
  register: 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 取出对应值. |

相关推荐
JANYI201822 分钟前
嵌入式MCU和Linux开发哪个好?
linux·单片机·嵌入式硬件
熊大如如37 分钟前
Java NIO 文件处理接口
java·linux·nio
晚秋大魔王1 小时前
OpenHarmony 开源鸿蒙南向开发——linux下使用make交叉编译第三方库——nettle库
linux·开源·harmonyos
掘金-我是哪吒1 小时前
分布式微服务系统架构第126集:集群,数据库扩展,多节点分布,分库,分表,分片,分表,运维
运维·数据库·分布式·微服务·系统架构
农民小飞侠1 小时前
ubuntu 24.04 error: cannot uninstall blinker 1.7.0, record file not found. hint
linux·运维·ubuntu
某不知名網友1 小时前
Linux 软硬连接详解
linux·运维·服务器
hnlucky1 小时前
通俗易懂版知识点:Keepalived + LVS + Web + NFS 高可用集群到底是干什么的?
linux·前端·学习·github·web·可用性测试·lvs
Jogging-Snail1 小时前
Linux工作台文件操作命令全流程解析(高级篇之vim和nano精讲)
linux·运维·vim·文件操作·文本编辑·nano
爱学习的章鱼哥1 小时前
计算机网络|| 常用网络命令的作用及工作原理
linux·服务器·计算机网络
zm2 小时前
网络编程epoll和udp
服务器·网络·数据库