Ansible 的“清单”文件就像是黄页电话本。有了它,我们就能和各个主机进行通话交流。
分组
像这种通讯联系本都会有一个功能 —— 分组,或者说“打标签”。这样无论再多的联系人(主机)我们都能很轻松地找到。
Ansible 有一个自带的分组名称 —— all。
没错就是字面意思。该分组包含“清单”中的所有联系人。通过这个关键字 我们可以同时对“清单”中所有的主机进行操作:
接下来,我们自己定义几个分组:
上面,我们先定义了两个分组 ,。接下来我们就可以直接对整个组里的主机进行操作:
上面我们创建了两个分组 —— 测试组和生产组。我们现在可以分别操作这两个组,但是有些操作却是不区分测试组还是生产组的,怎么办呢?
没错,再建一个同时包含这两个组所有主机的新分组。
那如果每一个组包含的主机很多,这种做法效率就太低了,我们还有另一种方法 —— 嵌套。
就是我们在新建的组里面直接添上其他的组名,不用一个个添上其他组内的主机名:
这样我们想对所有主机执行一些基础操作的时候,就可以直接操作 组。
YAML 语法
以上“清单”的配置都是 ini 格式的写法,ansible 的“清单”还支持 YAML 格式的语法。
为什么还要知道 YAML 语法格式的“清单”配置呢?
后面介绍的 Ansible Playbook 配置使用的就是 YAML 语法,虽然“清单”对于 ini 和 YAML 两种语法都支持,但是我们使用同一种语法格式总是会舒服一点。当然这种舒服也是因人而异的,具体使用中哪个适合自己就是用哪个。
下面列出几个 ini 和 YAML 两种格式的对比:
YAML 格式中,最上方的 就是之前我们所说的关键字,在 YAML 中必须把 写在最上方。这样才符合 这个关键字本身的地位嘛。
接着来看其他几个格式对比:
可以看出,YAML 格式中定义“组”需要用到 关键字。
再来看个嵌套分组的对比:
最后我们再来看一个指定 port、name 的两个格式对比: