Ansible使用基础之变量

前言

变量,即可变化的量。在Ansible中,可在多个位置设置变量。

一、变量的使用

不论在何处设置的变量,最终都是以在playbook调用为目的。
调用方法: {{ 变量名称 }}

二、变量的定义方法

2.1 命令行中定义

格式: -e ‘var1=value1 var2=value2…’
实例: ansible-playbook -e ‘uname=test age=100’ var.yml
Ansible使用基础之变量

结果:
Ansible使用基础之变量

2.2. 变量文件中定义

将变量存入到指定的变量文件(yml格式)中,playbook中使用vars_file指定变量文件,之后进行调用。
实例:
创建变量文件var.yml,写入以下内容
Ansible使用基础之变量
playbook中调用变量,vars_files指定变量文件路径
Ansible使用基础之变量
结果:
Ansible使用基础之变量

2.3 playbook中定义

使用vars进行定义,与tasks同级
实例:
Ansible使用基础之变量
结果:
Ansible使用基础之变量

2.4 inventory中定义

2.4.1 主机变量

主机变量指每个主机后都指定变量,变量名相同,但值可不同
实例:
Ansible使用基础之变量
ansible agent -a “echo {{http_port}}
结果:

Ansible使用基础之变量

2.4.2 主机组变量

主机组变量指为指定的主机组配置的公共变量,该主机组中主机都可使用,值是统一的
实例:
Ansible使用基础之变量

2.5 系统变量

通过setup模块,可查询系统中存在的变量,之后直接在playbook中调用
实例: 查看主机空闲内存使用情况

  • 通过setup模块,查出表示空闲内存的系统变量

Ansible使用基础之变量

  • playbook中调用
    Ansible使用基础之变量

结果:
Ansible使用基础之变量

三、变量调用优先级

由高到低

  • 命令行定义变量
  • 变量文件中定义变量
  • playbook 中定义变量
  • 主机清单中的主机变量
  • 主机清单中的主机组公共变量