ansible中变量的优先级
extra vars (-e 选项指定的变量)最高
inventory 主机清单中定义的变量(ansible_ssh_user等)
play剧本中vars、vars_files定义的变量
系统的facts变量
角色定义的默认变量 最低
从上到下优先级逐渐降低,高优先级会覆盖掉低优先级的变量
一、在Inventory中定义变量
详见《Ansible2:主机清单》
二、在Playbook中定义变量
1、通过vars关键字定义:
vars:
http_port: 80
server_name: localhost
cert_file: /etc/nginx/ssl/nginx.crt
key_file: /etc/nginx/ssh/nginx.key
conf_file: /etc/nginx/conf/default.conf
2、通过vars_files关键字引入变量文件:
-
hosts: all
remote_user: root
vars:
favcolor: blue
vars_files:
-
/vars/external_vars.yml
-
/vars/nginx_vars.yml
-
/vars/nginx_vars.yml示例:
http_port: 80
server_name: localhost
cert_file: /etc/nginx/ssl/nginx.crt
key_file: /etc/nginx/ssh/nginx.key
conf_file: /etc/nginx/conf/default.conf
3、通过vars_prompt来实现人机交互:
hosts: all
remote_user: root
vars_prompt:
-
name: ‘https_passphrase’ #存储数据的变量名
prompt: ‘Key Passphrase’ #手工输入数据
private: yes #当该值为yes,则用户的输入不会被打印
4、通过playbook的roles定义变量
详见《ansible10:Playbook的角色与包含》
三、注册变量
在有些时候,我们希望把某一条任务执行