【问题标题】:Is there a good reason to have multiple Ansible inventories (over one inventory for all hosts)?拥有多个 Ansible 清单(所有主机超过一个清单)是否有充分的理由?
【发布时间】:2019-08-01 07:43:36
【问题描述】:

第一次创建 Ansible 清单时,我创建了大致按角色分隔的单独文件,但在一个目录中。所以我的目录结构看起来像这样(由角色组成):

ansible\
  inventory\
    dbservers
    logservers
    webservers
  host_vars\
  roles\

例如,这使得在所有数据库服务器或所有 Web 服务器上运行剧本变得容易,但我现在意识到我也可以通过使用主机组(无论如何我已经拥有)来做到这一点。

我现在遇到的一个问题是,我想在一个清单中列出主机,同时在另一个清单上运行剧本。例如,dbservers 可能有一个防火墙规则来允许来自 webservers 的访问,我想做lookup('inventory_hostnames', 'webservers') - 但是当“webservers”组在“webservers”清单中定义并且我正在运行时,这不起作用@ 987654323@。另一个问题是除了角色之外的主机组,例如服务器的物理位置,在文件之间是重复的。

为了解决这个问题,我很想将所有东西都移到一个库存中。这样做有什么缺点吗?

(我知道我可以使用-i inventory_dir 运行,因此我仍然可以拥有多个库存文件,但可以将它们用作一个逻辑库存。)

【问题讨论】:

    标签: ansible ansible-inventory


    【解决方案1】:

    每个解决方案都有其优点和缺点。

    当然,如果您有 2 个 dbservers、1 个 log 和 3 个 webserver,那么将所有 6 个都声明在一个文件中是可以的。
    但是,当您管理更大的系统时,您可能有 100 台服务器。在这种情况下,将它们分开会更有益且不易出错。

    所以,如果问题是哪种方式更好,那就没有答案了。每个人都有自己的喜好。
    如果问题是在一个文件中声明所有服务器是否不好。那么答案是否定的。只要您保持井井有条并且情况适合您。

    【讨论】:

    • 是的,显然文件会变大。我的问题是真的是否还有其他缺点,例如。我可以用多个文件做的事情,但不能用一个文件。
    • 嗯,我从来没有遇到过这样的情况:我可以用一个库存文件而不是多个文件(反之亦然)。我不知道有这样的情况......但这并不意味着它不存在。此外,文档似乎没有提到这种特殊情况。
    【解决方案2】:

    我不认为有“正确的方式”或“错误的方式”,但让我提供一些关于过去几年我们在部署 Ansible 方面所做的见解。

    我们使用单独的库存来指示生产与暂存或测试,这对我们很有帮助。通过这种方式,我们在 playbook 中使用组来表示不同的机器角色(不要与 Ansible 角色混淆),但我们可以轻松地在生产和暂存之间切换。

    在库存中,我们设置了某些标准变量和组,以便轻松确定我们是针对测试机器还是生产机器。

    这样,当我们运行 playbook 时,我们会使用以下内容:

    ansible-playbook -i prod name-of-playbook.yml
    

    如果我们在舞台机器上运行它,请将 prod 替换为 stage

    这不是每个人的解决方案,但对我们来说非常有效。

    我们的标准库存文件看起来像:

    [db-servers]
    db1.foo.net
    
    [web-servers]
    web.foo.net
    
    [all:vars]
    env: prod
    

    然后我们会在剧本中的剧本中使用db-serversweb-servers,如果我们需要知道我们使用的是生产系统还是舞台系统,我们可以在必要时检查env

    【讨论】:

      【解决方案3】:

      正如已经提到的,这两种方法都有其局限性。 我们为我们的阶段使用单独的库存:演示测试等。 主要是为了清楚地分离各个阶段,以避免意外配置错误。 和戏剧的应用。此外,您必须明确设置要使用的库存。 当您使用多个库存时,您的主要缺点是您必须多次设置 vars 布局更改(组子项等)。

      现在由你决定:)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-23
        • 2014-06-06
        • 2020-02-27
        相关资源
        最近更新 更多