Ansible - 如何维护动态数据列表

时间:2016-07-21 18:54:36

标签: python amazon-web-services ansible jinja2

我正在构建一个系统来在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

make_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- }}"

此外,如果有更好的方法可以拆除,请告诉我!

1 个答案:

答案 0 :(得分:0)

  

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

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

  

如果有更好的方法可以拆除,请告诉我   还有!

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