搜索

1.4. 构建清单

download PDF

清单将受管节点组织到集中文件中,该文件为 Ansible 提供系统信息和网络位置。使用清单文件,Ansible 可以通过单个命令管理大量主机。要完成以下步骤,您需要至少一个主机系统的 IP 地址或完全限定域名(FQDN)。出于演示目的,主机可以在容器或虚拟机本地运行。

您还必须确保您的公共 SSH 密钥添加到每个主机上的 authorized_keys 文件中。使用以下步骤构建清单。

流程

在您创建的 ansible_quickstart 目录中,创建一个名为 inventory.ini 的文件。向 inventory.ini 文件中添加一个新的 [myhosts] 组,并指定每个主机系统的 IP 地址或完全限定域名(FQDN)。

[myhosts]
192.0.2.50
192.0.2.51
192.0.2.52

使用以下命令验证您的清单:

ansible-inventory -i inventory.ini --list

使用以下方法 ping 清单中的 myhosts 组:

ansible myhosts -m ping -i inventory.ini

如果在控制节点和受管节点上的用户名不同,请将 -u 选项与 Ansible 命令一起传递。

192.0.2.50 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"
}
192.0.2.51 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"
}
192.0.2.52 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"
}

您已成功构建了一个清单。

1.4.1. 以 INI 或 YAML 格式的清单

您可以在 INI 文件或 YAML 中创建清单。在大多数情况下,如上例,CIN 文件对于少量受管节点来说比较简单,易于阅读。当受管节点的数量增加时,使用 YAML 格式创建清单会变得可行。

例如,以下等同于 inventory.ini,它为受管节点声明唯一名称,并使用 ansible_host 字段:

myhosts:
  hosts:
    my_host_01:
      ansible_host: 192.0.2.50
    my_host_02:
      ansible_host: 192.0.2.51
    my_host_03:
      ansible_host: 192.0.2.52

1.4.2. 构建清单的提示

  • 确保组名称具有有意义的且唯一性。
  • 组名称也区分大小写。
  • 不要在组名称中使用空格、连字符或前面的数字(使用 floor_19,而不是 19th_floor)。
  • 根据清单中的主机,逻辑上和何时对清单中的主机进行分组:

    • what: 根据拓扑对主机进行分组,例如:db、web、leaf、spine。
    • 其中:按地理位置对主机进行分组,例如: datacenter、region、floor、build。
    • when :按阶段分组主机,例如:development, test, staging, production。

1.4.3. 使用 metagroups

创建一个元组,以使用以下语法在清单中组织多个组:

metagroupname:
  children:

以下清单演示了数据中心的基本结构。这个示例清单包含一个网络 metagroup,其中包含所有网络设备和一个 datacenter metagroup,其中包含 network group 和 all webservers。

leafs:
  hosts:
    leaf01:
      ansible_host: 192.0.2.100
    leaf02:
      ansible_host: 192.0.2.110

spines:
  hosts:
    spine01:
      ansible_host: 192.0.2.120
    spine02:
      ansible_host: 192.0.2.130

network:
  children:
    leafs:
    spines:

webservers:
  hosts:
    webserver01:
      ansible_host: 192.0.2.140
    webserver02:
      ansible_host: 192.0.2.150

datacenter:
  children:
    network:
    webservers:
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.