Ansible_variable

Ansible变量

       系统自动化让重复的工作变得更加容易,但是每个系统还是有一些细微的差别,变量就是如何处理系统之间的不同之处。这里将会列出变量的极大部分使用方法。

 

本文假设:你已经知道如何使用Ansible。知道inventory,facts等概念。

 

Ansible定义变量的几中方式

1、在清单(inventory)中定义变量

2、在playbook中定义变量,使用var,或var_files:

3、在role中定义变量

4、自定义facts的变量

5、Register facts ,使用task返回结果作为变量

6、从命令行传递变量

使用变量,除了可用使用自定义的变量,还可以使用facts和其它主机的变量。

 

一、合法变量名

1、必须是字符,数字,下划线组成,变量必须以字符开头。

2、变量支持字典形式的映射。

3、有时候引用变量,使用小数点形式的引用方法可能会和Python内置的属性和方法冲突。建议使用[]形式。

 

二、开始定义与使用变量

1、清单(inventory)变量

1.1定义清单主机变量.在对应的主机后面,提供key=value 形式语句,即可。格式如下

1.2定义清单组变量,格式如下。

1.3 可以根据对应的inventory创建文件,写入变量

在文件中写入变量即可。格式为ymal格式文件。


2、在playbook中定义变量


3、在role中定义变量

Tip:在引用role的时候,还可以传递变量给role


4、自定义Facts变量。

如果在被管理的主机上存在/etc/ansible/facts.d 目录,其中的以.fact 为文件结尾的JSON格式或者YML格式文件都会当做自定义facts。

 

可以像fact一样使用,自定义的fact变量。

4.1这里还可以在控制节点上面传递自定义变量到被管理节点,编辑如下ymal格式文件。

5、定义Register变量,

Register变量是将task的结果信息当做变量使用。在任务的执行结果后面加上register 关键字即可定义变量


6、从命令行传递变量.

相信这点对大家来说已经不成问题了,便不再细说

三、使用变量

上面在举例子的时候,已经说明如何使用了。下面介绍如何使用fact变量和一台主机使用另外一台主机的变量。

使用实现定义好的变量,在变量两边加上大括号,格式为{{ var_name }}

四、变量的优先级。处理同一个变量名多处定义的问题。

3.1、在1.x版本里面,越靠下优先级越高,可以覆盖上面的

1、role defaults 中定义的变量,优先级最低

2、从被管理系统中收集的facts信息

3、inventory中定义的变量

4、在playbook中的vars: 或者 roles 中的vars

5、一些连接变量,例如ansible_user 。

6、命令行的变量  ansible-playbook -e 选项的变量, 优先级别最高。

3.2 ,在2.x系列的版本中调整变量优先级的顺序为如下。优先级由低到高

  1. role defaults 

  2. inventory vars 

  3. inventory group_vars

  4. inventory host_vars

  5. playbook group_vars

  6. playbook host_vars

  7. host facts

  8. registered vars

  9. set_facts

  10. play vars

  11. play vars_prompt

  12. play vars_files

  13. role and include vars

  14. block vars (only for tasks in block)

  15. task vars (only for the task)

  16. extra vars


参考:

http://docs.ansible.com/ansible/playbooks_variables.html

原创文章,作者:艾贺,如若转载,请注明出处:/9431

联系我们

400-080-6560

在线咨询:点击这里给我发消息

邮件:1823388528@qq.com

工作时间:周一至周五,9:30-18:30,节假日同时也值班

友情链接:万达娱乐  万达招商QQ  万达注册  guoqibee.com  万达娱乐主管  万达娱乐主管QQ  华宇招商  万达娱乐  万达娱乐注册  万达娱乐注册