【问题标题】:Use cases of dynamic inventories VS static inventories with ansible动态库存 VS 使用 ansible 的静态库存的用例
【发布时间】:2019-06-28 08:33:36
【问题描述】:

我正在尝试使用 ec2 插件通过 ansible 查询 ec2 实例列表以获取动态清单。

我可以看到使用动态清单的实用性。如果添加了新机器,ansible 将自动对它们执行游戏。但是我在网上也看到可以用ansible生成实例,手动将新主机添加到静态主机列表中。

所以我的问题是:我们将使用动态库存与静态库存的用例是什么?我是 devops 领域的新手,所以我不知道我们需要多久自动生成实例而不是通过 AWS 控制台手动生成实例。 谢谢!

【问题讨论】:

  • 动态清单通常更有帮助,除非您将列表从 Terraform 提供给 Ansible,在这种情况下几乎是等效的。

标签: amazon-ec2 ansible configuration-management


【解决方案1】:

如果您使用自动缩放组,则必须使用动态清单。

如果您在构建管道中临时启动 ec2s,请使用动态清单。例如您只想测试软件的部署并在测试后终止机器。

如果您想在某些机器上禁用 ansible 播放,您可以根据 ec2 标签创建动态清单。例如您有一个每小时运行一个全 Web 服务器的安全游戏,但开发人员想在他的机器上测试一些东西。所以他可以标记他的机器被跳过。他不需要访问库存文件(您可以在午夜运行另一个播放以再次启用安全播放。所以它不会被遗忘)。

顺便说一句:您可以使用带有过滤器选项的ec2_instance_factsadd_host 在剧本运行时创建动态清单。

例如你有三种类型的服务器“web”、“app”、“db”。您在启动期间使用 servertype: [web|app|db] 标记 ec2s。您可以使用以下命令过滤这些 ec2:

- name: collect ec2s 
  ec2_instance_facts:
    region: "{{ region }}"
    filters:
      "tag:servertype": "{{ servertype_list }}"
  register: ec2_list

并在具有外部变量ansible-playbook test.yml -e servertype_list=['web','app']ansible-playbook test.yml -e servertype_list=['db'] 的服务器组上选择性地运行您的游戏。

因此,通过标记机器,您可以避免处理静态库存。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-25
    • 1970-01-01
    相关资源
    最近更新 更多