【问题标题】:Ansible - How maintain a dynamic list of dataAnsible - 如何维护动态数据列表
【发布时间】:2016-07-21 18:54:36
【问题描述】:

我正在构建一个系统以在 AWS 中部署整个环境。但是,在失败的情况下,我想拆除已经构建的所有内容。由于我计划部署多个不同的环境,因此我认为最好保留一份我在 AWS 中所做的工作的运行列表。

所以我想要一种方法来存储每个组件名称的简单数组,在每个部分依次旋转时附加名称,以便在错误阶段,我可以终止所有内容,但这证明了让我很头疼。

就目前而言,我的代码如下所示:

顶级剧本

- hosts: localhost
  connection: local
  roles:
    - { role: make_ec2, when: "ansible_failed_task is undefined" }
         --Fails Here--
    - { role: make_ec2, when: "ansible_failed_task is undefined" }
    - { role: make_ec2, when: "ansible_failed_task is undefined" }
  post_tasks:
    - name: "do a teardown"
      *iterate through list and tear down environment*
      when: ansible_failed_task is defined

ma​​ke_ec2(这是在阻止/救援中)

---
- name: "spin up EC2
     --all the variables you need to spin up the EC2"
  register: EC2

- name: "Append List"
- set_fact:
     ec2_list: "{{ ec2_list | default | -Append ec2.string.value- }}"

另外,如果有更好的拆机方法,也请告诉我!

【问题讨论】:

  • 在不了解您的角色配置方式的情况下,您不能将您放入用于配置以下操作的任何模块中......直到:“发生好事”,重试:20 ,延迟:10??如果您已经这样做了,请忽略我的评论:)
  • 对于需要这个的系统,我已经有了类似的东西 :) 问题主要是试图存储某种变量以在我取回数据后保存数据..

标签: python amazon-web-services ansible jinja2


【解决方案1】:

所以我想要一种方法来存储每个名称的简单数组 组件,在每个部分依次旋转时附加名称....

您可以在pre_task 中创建一个临时文件并将数据写入其中,因此如果出现故障,您知道要删除什么。或者,您可以用 DB 替换文件,但机制仍然相同。

如果有更好的拆解方法,请告诉我 也一样!

我个人不会重新发明轮子,只会使用 CloudFormation,这是您的 AWS 资源的模板。您可以使用 troposphere 之类的库来帮助您管理 JSON 结构。因此,换句话说,如果出现故障,cloudformation 会将其还原,并清理所有资源。

【讨论】:

  • 由于各种原因,这里确实不能选择使用 CloudFormation。我也考虑过使用文件,但我认为因为我只有大约 30 个组件顶部,所以保存一个包含 30 个项目的本地数组比执行所有关联的文件 I/O 更好。归档是标准做法吗?
猜你喜欢
  • 2016-01-26
  • 1970-01-01
  • 2022-01-25
  • 2021-11-29
  • 2013-08-03
  • 1970-01-01
  • 1970-01-01
  • 2021-09-21
  • 2013-06-15
相关资源
最近更新 更多