【问题标题】:Ansible EC2 with a static inventory具有静态清单的 Ansible EC2
【发布时间】:2015-06-14 23:23:21
【问题描述】:

我正在使用 ansible 在 EC2 上配置服务器,使用动态库存和精确计数。这让我可以在需要时放大/缩小,这很好。

现在,当我配置它们时,我需要在每台服务器上的环境中添加一个唯一变量。我想到的一种方法是使用这样的库存文件:

[ec2-servers]
host1 myvar=abc
host2 myvar=def
...

host1(2) 以某种方式通过 tag_SomeName_host1 或类似方式引用相关的 EC2 实例。

但这与我当前配置服务器的方式无关。具有exact_count 的动态库存为我提供了一组相同的克隆服务器。

有没有一种方法可以在我的库存文件中定义服务器,如果它不存在,可以在 ec2 中进行 ansible 配置,如果服务器存在于 ec2 但库存中不存在,则将其删除?

例如

我第一次使用库存运行我的剧本:

[ec2-servers]
host1 myvar=1

然后我需要扩大规模以便编辑库存:

[ec2-servers]
host1 myvar=1
host2 myvar=2

ansible 忽略已经存在的 host1,然后为 host2 提供一个实例。

然后我不再需要额外的服务器,所以修改库存:

[ec2-servers]
host1 myvar=1

ansible 从 ec2 中删除 host2。

【问题讨论】:

    标签: amazon-web-services amazon-ec2 ansible


    【解决方案1】:

    没有。 Ansible 不[关心]:

    • 维护库存文件的修订历史记录
    • 每次有变化时比较
    • 根据检测到的更改有条件地执行剧本/剧本/任务。

    您需要自己在剧本中构建逻辑。

    类似my_playbook.yml:

    - hosts: to_be_provisioned
      tasks:
      - include: provision_ec2_host.yml
    
    - hosts: to_be_unprovisioned
      tasks:
      - include: unprovision_ec2_host.yml
    

    unprovision_ec2_host.yml & provision_ec2_host.yml 当然应该是幂等的。

    现在您需要确保您的清单在主机组 to_be_provisionedto_be_unprovisioned 下具有正确的主机集并运行 my_playbook.yml。

    $ cat inventory.ini
    [to_be_provisioned]
    host1 myvar=1
    
    [to_be_unprovisioned]
    host2 myvar=2
    
    $ ansible-playbook -i inventory.ini my_playbook.yml
    $ # modify inventory
    $ cat inventory.ini
    [to_be_provisioned]
    host1 myvar=1
    host2 myvar=2
    
    # [to_be_unprovisioned] -- no hosts
    
    $ ansible-playbook -i inventory.ini my_playbook.yml
    $ # modify inventory
    $ cat inventory.ini
    [to_be_provisioned]
    host1 myvar=1
    
    [to_be_unprovisioned]
    host2 myvar=2
    
    $ ansible-playbook -i inventory.ini my_playbook.yml
    

    最后,要自动完成这一切,您可以使用您的dynamic inventory。我建议只复制现有的ec2.py 并对其进行修改,以便它根据需要返回组。

    【讨论】:

    • 谢谢!我想的也差不多。我的替代方案看起来与您的建议有些相似,所以它在正确的轨道上。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-15
    • 1970-01-01
    • 2019-10-22
    • 1970-01-01
    • 1970-01-01
    • 2019-01-30
    • 1970-01-01
    相关资源
    最近更新 更多