四·Variables and Facts
1)变量简介:
● ansible支持利用变量储存整个ansible项目文件中可重复使用的值
● 变量的名称由字符串组成,必须以字母开头,并且只能包含字母,数字,下划线
2)变量的范围
● ansible中变量可以分为三个范围
● Global范围:从命令行或ansible配置设置的变量
● Play范围:在play和相关结构中设置的变量
● Host范围:由inventory、facts或注册的任务,在主机组和个别主机上设置的变量
● 三个范围的变量优先级一次升高,如果变量重复定义,则以优先级高的为准
3)playbook中的变量:
● 在编写playbook时,管理员可以定义变量并在任务中调用他们
● playbook变量可以通过多种方式定义,最简单方式就是将他放在playbook开头的vars块中
- hosts: all
vars:
user: joe
home: /home/joe
● 也可以在外部文件中定义playbook变量。此时不使用vars,使用vars_files指令,而后以YAML格式在文件中定义playbook
- hosts: all
vars_files:
- vars/users.yml
user: joe
home: /home/joe
4)在playbook中使用变量:
● 定义了变量后,管理员可以在任务中使用这些变量。若要引用,可将变量名称放在双花括号内
name: {
{ user }}
● 强烈建议变量使用引号,这可防止ansible将变量视为YAML字典的开头。
name: "{
{ name }}"
5)主机变量和组变量:
● 直接应用到主机的变量清单可以归为两类:
● 主机变量应用到主机
● 组变量应用到组内所有主机
● 主机变量优先于组变量,但playbook中定义的变量高于这两者
● 建议在与清单文件或目录相同的工作