ansible笔记(44):变量(七)

  • A+
所属分类:Ansible  运维技术

在本博客中,ansible是一个系列文章,我们会尽量以通俗易懂的方式总结ansible的相关知识点。

ansible系列博文直达链接:ansible轻松入门系列

"ansible系列"中的每篇文章都建立在前文的基础之上,所以,请按照顺序阅读这些文章,否则有可能在阅读中遇到障碍。

 

之前的文章中总结了各种变量的用法,这篇文章我们继续。

 

我们知道,ansible默认的主机清单文件为"/etc/ansible/hosts",我们可以在默认的清单文件中为各个主机定义主机变量、为各个组定义组变量,比如如下示例:

如上例所示,我们在清单中配置了两个主机,test71和test70,我们为test71配置了一个主机变量,这个变量就是"test71var",同时,我们还为test组定义了一个组变量"testvar"。

 

其实,除了像上例中那样直接在hosts文件中定义主机变量和组变量,还有另外一种方法也可以定义主机变量和组变量,我们可以在清单文件的同级目录中创建两个目录,这两个目录的名字分别为"group_vars"和"host_vars",我们可以将组变量文件放在"group_vars"目录中,将主机变量文件放在"host_vars"目录中,这样ansible就能获取到对应组变量和主机变量了。

 

我们先来看看怎样使用"group_vars"目录引入组变量,示例如下:

首先,我在hosts文件的同级目录中创建了一个group_vars目录,并且在group_vars目录中创建了一个名为test的文件,test文件的内容如下

如你所见,我在test文件中创建了一个名为"testvar1"的变量。

"group_vars"目录中的文件之所以命名为"test",是因为在上例的hosts文件中,有一个名为"test"的组,这个"变量文件的文件名"与"hosts文件中的组名"其实是对应的,定义在group_vars/test文件中的变量就相当于定义在test组中的"组变量",同理,如果hosts文件中的其他组需要定义"组变量",也可以在"group_vars"目录中创建一个与其组名同名的变量文件,我已经写好了一个测试用的playbook,测试一下刚才设置的组变量是否生效,测试playbook如下:

执行上述测试playbook,输出如下: