ansible中定义和使用变量的几种技巧

本文详细介绍了如何在Ansible中定义和使用变量,包括Inventory全局变量、内置主机变量、自定义主机变量、Jinja2模板引用、set_fact模块、shell命令输出保存、任务分组执行限制以及lineinfile模块的正则分组应用,通过8个实战案例展示了Ansible变量的灵活性和实用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Case 1:使用Inventory中自定义的全局变量

Inventory清单文件中[all:vars]部分定义的变量为全局变量,可以在同一级目录下的roles中的所有playbook中直接使用。使用的格式为{ {全局变量名}}

在Inventory中定义全局变量:

[all:vars]
# variables related to versions
version_major_tencentKona=8.0.8
version_minor_tencentKona=312
arch_tencentKona=x86_64 
#arch_tencentKona=aarch64

在playbook中使用自定义的全局变量:

- name: unarchive TencentKona JDK
  unarchive:
    remote_src: no
    src: "/root/TencentKona{
   
   {version_major_tencentKona}}.b1_jdk_linux-{
   
   {arch_tencentKona}}_8u{
   
   {version_minor_tencentKona}}.tar.gz"
    dest: /usr/local

Case 2:使用ansible内置的主机变量

Ansible内置了许多系统变量,可以直接在ad-hoc命令或者playbook中使用。这些内置变量包括但不限于:

  • ansible_architecture:操作系统架构,arm或者x86;
  • ansible_distribution:操作系统发行版本;
  • ansible_distribution_major_version:操作系统大版本号;
  • ansible_processor_vcpus:CPU核数;
  • ansible_memtotal_mb:内存总量;
  • ansible_hostname:主机名;
  • ansible_devices.vdb.size:vdb盘的容量(如果磁盘vdb存在);
  • ansible_devices.sdb.size:sdb盘的容量(如果磁盘sdb存在);
  • ansible_devices.nvme0n1.size:nvme0n1盘的容量(如果磁盘nvme0n1存在)。

在playbook中使用内置变量:

- name: check arm OR x86
  debug: 
    msg: "{
   
   {ansible_architecture}}"

- name: check OS version
  debug:
    msg: "{
   
   {ansible_distribution}}: {
   
   {ansible_distribution_major_version}}"

- name: check CPU
  debug: 
    msg: "CPU(s): {
   
   {ansible_processor_vcpus}}, type: {
   
   {ansible_processor_vcpus | type_debug}}"

- name: check Memory
  debug:
    msg: "Memory: {
   
   {ansible_memtotal_mb}} mb, type: {
   
   {ansible_memtotal_mb | type_debug}}"

Case 3:使用Inventory中自定

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GottdesKrieges

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值