0
点赞
收藏
分享

微信扫一扫

自动化运维工具Ansible(8)变量优先级

ITWYY 2022-05-20 阅读 76

简介

  1. Facts变量不需要人为去声明、赋值;注册变量只需通过关键字register去声明,而不需要赋值。
  2. 全局变量、剧本变量及资产变量则完全需要人为的去声明、赋值。
  3. 假如同时在全局变量、剧本变量及资产变量声明了同一个变量名,那么哪一个优先级最高呢?

以实验的形式验证变量的优先级


环境准备

定义一份资产、且定义了资产变量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同时定义在全局变量、剧本变量及资产变量中时,全局变量的优先级最高。

自动化运维工具Ansible(8)变量优先级_Ansible


同时使用剧本变量和资产变量

取消全局变量,发现剧本变量的优先级要高于资产变量的优先级

自动化运维工具Ansible(8)变量优先级_centos7_02


只是用资产变量的情况

不使用全局变量、且注释掉剧本变量后,资产变量才最终生效。

自动化运维工具Ansible(8)变量优先级_linux_03

自动化运维工具Ansible(8)变量优先级_centos7_04


结论

当一个变量同时在全局变量、剧本变量和资产变量中定义时,优先级最高的是全局变量;其次是剧本变量;最后才是资产变量。

举报

相关推荐

0 条评论