ansible变量简介
变量用于存储值,便于重复使用,可以简化项目的创建和维护。
变量命令规则
ansible变量的名称必须以字母开头,平且只能包含字母、数字和下划线,不允许有其他特殊字符。
变量范围
全局范围:从命令行或ansile配置中设置的变量
play范围:在play和相关结构中设置的变量
主机范围:由清单、事实收集或注册的任务,在主机和主机组上设置的变量
playbook定义变量的两种方式
在playbook开头的vars块中定义变量:
hosts: all
vars:
key1: value1
在外部文件中定义playbook变量,使用vars_files块:
hosts: all
vars_files:
- file.yml
file.yml文件中定义变量
key1: value1
在playbook中使用变量
引用已声明的变量要将变量名称放入{{}}内,例{{ key1 }}
当变量用作开始的一个值的第一个元素时,必须使用引号。
主机变量和组变量
在清单文件中设置:
主机变量
[host]
host1.example.com key=value
组变量
[hostgroup]
hosthost1
hosthost2
[hostgroup:vars]
key=value
目录填充主机变量和组变量
在host_vars和group_vars目录下创建主机名或主机组名文件定义主机变量和组变量
从命令行覆盖变量
ansible-playbook playbook.yml -e "key=value"
变量引用优先级
命令行 -> vars_file -> vars -> host_vars/主机名文件 -> 主机清单中主机变量 -> group_vars/主机组名文件 -> group_vars/all文件 ->主机清单组变量