简介
- Facts变量不需要人为去声明、赋值;注册变量只需通过关键字register去声明,而不需要赋值。
- 全局变量、剧本变量及资产变量则完全需要人为的去声明、赋值。
- 假如同时在全局变量、剧本变量及资产变量声明了同一个变量名,那么哪一个优先级最高呢?
以实验的形式验证变量的优先级
环境准备
定义一份资产、且定义了资产变量user
[root@localhost home]# vim hosts
[dbservers]
192.168.19.102
[webservers]
192.168.19.103
[allservers:children]
dbservers
webservers
[allservers:var]
user=tmcat
编写一份PlayBook、同样定义剧本变量user
[root@localhost home]# vim myplaybook4.yml
---
- name: test variable priority
hosts: all
remote_user: root
vars:
user: mysql
tasks:
- name: print the user value
debug: msg='the user values is {{ user }}'
验证测试
同时使用全局变量、剧本变量、资产变量
[root@localhost home]# ansible-playbook -i hosts myplaybook4.yml -e"user=www"
当变量user同时定义在全局变量、剧本变量及资产变量中时,全局变量的优先级最高。
同时使用剧本变量和资产变量
取消全局变量,发现剧本变量的优先级要高于资产变量的优先级
只是用资产变量的情况
不使用全局变量、且注释掉剧本变量后,资产变量才最终生效。
结论
当一个变量同时在全局变量、剧本变量和资产变量中定义时,优先级最高的是全局变量;其次是剧本变量;最后才是资产变量。