我正在构建一个系统来在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- }}"
此外,如果有更好的方法可以拆除,请告诉我!
答案 0 :(得分:0)
所以我想要一种方法来存储每个名称的简单数组 组件,在每个部分附加名称依次旋转....
您可以在pre_task
中创建临时文件并将数据写入其中,因此如果出现故障,您就知道要删除的内容。或者你可以用DB替换文件,但是机制仍然是相同的。
如果有更好的方法可以拆除,请告诉我 还有!
我个人不会重新发明轮子,只会使用CloudFormation
这是您的AWS资源的模板。您可以使用troposphere
之类的库来帮助您管理JSON结构。换句话说,如果出现问题,cloudformation将恢复它,并清理所有资源。