1.4. 构建清单
清单在中央文件中组织受管节点,为 Ansible 提供系统信息和网络位置。使用清单文件,Ansible 可以通过一个命令管理大量主机。要完成以下步骤,您需要至少一个主机系统的 IP 地址或完全限定域名(FQDN)。出于演示目的,主机可以在容器或虚拟机本地运行。
您还必须确保将公共 SSH 密钥添加到每个主机的 authorized_keys 文件中。使用以下步骤构建清单。
流程
在您创建的 ansible_quickstart 目录中创建名为 inventory.ini 的文件。将新的 [myhosts] 组添加到 inventory.ini 文件中,并指定每个主机系统的 IP 地址或完全限定域名(FQDN)。
[myhosts] 192.0.2.50 192.0.2.51 192.0.2.52
[myhosts]
192.0.2.50
192.0.2.51
192.0.2.52
使用以下方法验证您的清单:
ansible-inventory -i inventory.ini --list
使用以下命令,对清单中的 myhosts 组发出 ping 命令:
'Ansible myhosts -m ping -i inventory.ini'
如果控制节点和受管节点上的用户名不同,请将 -u 选项与 Ansible 命令一起传递。
您已成功构建了一个清单。
1.4.1. INI 或 YAML 格式的清单 复制链接链接已复制到粘贴板!
您可以在 INI 文件或 YAML 中创建清单。在大多数情形中,如上例中,I INI 文件非常简单,易于读取少量受管节点。随着受管节点数量的增加,以 YAML 格式创建清单将变为 sensible 选项。
等同于 inventory.ini,它为受管节点声明唯一名称,并使用 ansible_host 字段:
1.4.2. 构建清单的建议 复制链接链接已复制到粘贴板!
- 确保组名称是有意义的且唯一的。
- 组名称也区分大小写。
- 不要在组名称中使用空格、连字符或前面的数字(使用 floor_19,而不是 19th_floor)。
根据清单中的内容、位置和时间对清单中的主机进行分组:
- 什么:根据拓扑对主机进行分组,例如:db、web、leaf、spine。
- 其中:按地理位置分组主机,例如:数据中心、地区、floor、building。
- when:按阶段对主机进行分组,例如:development、test、staging、production。
1.4.3. 使用 metagroups 复制链接链接已复制到粘贴板!
创建一个元组,其语法在您的清单中组织多个组:
metagroupname: children:
metagroupname:
children:
以下清单演示了数据中心的基本结构。本例清单包含一个网络元组,其中包含所有网络设备和一个 datacenter 元组,其中包含网络组和所有 webservers。