初识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 取出对应值. |

相关推荐
cocologin1 小时前
RIP 技术深度解析
运维·网络·网络协议
cv高级工程师YKY1 小时前
SRE - - PV、UV、VV、IP详解及区别
大数据·服务器·uv
庸子1 小时前
基于Jenkins和Kubernetes构建DevOps自动化运维管理平台
运维·kubernetes·jenkins
Lpy25691 小时前
Docker Desktop 安装到D盘(包括镜像下载等)+ 汉化
运维·docker·容器
眠修2 小时前
Kuberrnetes 服务发布
linux·运维·服务器
好奇的菜鸟2 小时前
Docker 配置项详解与示例
运维·docker·容器
xcs194053 小时前
集运维 麒麟桌面版v10 sp1 2403 aarch64 离线java开发环境自动化安装
运维·自动化
BAOYUCompany3 小时前
暴雨服务器成功中标华中科技大学集成电路学院服务器采购项目
运维·服务器
超龄超能程序猿4 小时前
Bitvisse SSH Client 安装配置文档
运维·ssh·github
奈斯ing4 小时前
【Redis篇】数据库架构演进中Redis缓存的技术必然性—高并发场景下穿透、击穿、雪崩的体系化解决方案
运维·redis·缓存·数据库架构