资讯详情

资讯详情

构建 Ansible 清单

定义清单清单定义 Ansible 管理的主机集合。这些主机也可以分配到组中以进行集中管理。组可以包含子组主机也可以是多个组的成员。清单还可以设置应用到它所定义的主机和组的变量。定义主机清单可采用以下两种方式。使用文本文件定义静态主机清单。通过外部信息提供程序使用 Ansible 插件按需生成动态主机清单。使用静态清单指定受管主机静态清单文件是指定 Ansible 目标受管主机的文本文件。您可以使用多种不同的格式编写此文件包括 INI 样式或 YAML。INI 样式格式很常见在本课程中的大部分示例中均有应用。最简单的 INI 样式静态清单文件是受管主机的主机名或 IP 地址列表每行一个web1.example.com web2.example.com db1.example.com db2.example.com 192.0.2.42但通常而言您可以将受管主机组织为主机组。通过主机组您可以更加有效地对一系列系统运行 Ansible。这时每一部分的开头为以方括号[]括起的主机组名称。其后为该组中每一受管主机的主机名或 IP 地址每行一个。在以下示例中主机清单定义了两个主机组webservers和db‑servers。[webservers] web1.example.com web2.example.com 192.0.2.42 [db-servers] db1.example.com db2.example.com主机可以在多个组中。事实上建议您将主机组织为多个组可以根据主机的角色、其物理位置以及是否在生产环境中等因素以不同的方式加以整理。这样您可以根据特定主机集的特征、用途或位置轻松将 Ansible play 应用到特定主机集。[webservers] web1.example.com web2.example.com 192.0.2.42 [db-servers] db1.example.com db2.example.com [east-datacenter] web1.example.com db1.example.com [west-datacenter] web2.example.com db2.example.com [production] web1.example.com web2.example.com db1.example.com db2.example.com [development] 192.0.2.42定义嵌套组Ansible 主机清单可以包含由多个主机组构成的组。这通过创建后缀为:children的主机组名称来实现。以下示例创建了一个名为north‑america的新组其中包含来自usa和canada组的所有主机。[usa] washington1.example.com washington2.example.com [canada] ontario01.example.com ontario02.example.com [north‑america:children] usa canada一个组可以同时包含受管主机和子组作为其成员。例如在上面的清单中您可以添加一个拥有自己的受管主机列表的[north‑america]部分。这一列表中的主机将与 north‑america 组从其子组中继承的其他主机合并。通过范围简化主机规格可以通过指定主机名称或 IP 地址的范围来简化 Ansible 主机清单。您可以指定数字或字母范围。范围具有下列语法[START:END]范围匹配从 START 到 END含的所有值。请思考以下示例192.168.[4:7].[0:255]可匹配 192.168.4.0/22 网络中的所有 IPv4 地址192.168.4.0 到 192.168.7.255。server[01:20].example.com可匹配名称介于 server01.example.com 和 server20.example.com 之间的所有主机。[a:c].dns.example.com可匹配名为 a.dns.example.com、b.dns.example.com 和 c.dns.example.com 的主机。2001:db8::[a:f]可匹配从 2001:db8::a 到 2001:db8::f 的所有 IPv6 地址。如果数字范围中包含前置零其模式中会使用它们。上面的第二个示例不匹配 server1.example.com但匹配 server07.example.com。为了说明这一点可以使用下面的例子该例使用范围简化了前面例子中的[usa]和[canada]组定义[usa] washington[1:2].example.com [canada] ontario[01:02].example.com覆盖清单的位置/etc/ansible/hosts文件被视为系统的默认静态清单文件。不过常规做法是不使用该文件而是指定其他位置获取清单文件。您运行 playbook 时使用的ansible‑navigator命令可通过--inventory PATHNAME或-i PATHNAME选项在命令行中指定清单文件的位置其中 PATHNAME 是所需清单文件的路径。动态清单也可以使用外部数据库提供的信息动态生成 Ansible 清单信息。开源社区编写了许多可从上游 Ansible 项目获取的动态清单插件。如果这些 Ansible 插件不能满足您的需求您也可以自行编写插件。例如动态清单程序可以联系您的红帽卫星服务器或 Amazon EC2 帐户并使用那里存储的信息来构造 Ansible 清单。由于该程序在您运行 Ansible 时进行此操作因此它可以在新主机添加和旧主机移除时为清单填充该服务所提供的最新信息。
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →