我正在尝试从4个现有模板创建嵌套拓扑。这些模板执行以下操作:
1:部署策略和角色。 2:部署EC2实例。 3:部署ELB 4:部署RDS实例。
所有这些都通过使用输出进行“链接”。所有参数也都包含在这些参数中。 现在,我要创建第五个模板(主模板),并将其他四个模板视为子模板。
但是我对主模板中所需的最少代码不太确定:
参数:这些参数是在子对象中定义的,因此在这里不需要它们,对吗? 资源:通过提供4个子模板的存储位置来指向4个子模板。 DependsOn 子句:我需要这样做,因为子模板需要按顺序部署。 输出:不太确定要在此处包括什么,我是否应该将输出留在孩子身上,并在此仅定义主人的?
我认为大师应该很小,但不太确定我是否缺少某些东西。另一个问题,我是否需要更改子模板上的任何内容?
任何帮助将不胜感激。
答案 0 :(得分:0)
这里有几个问题,所以我将尽我所能:)
对于主模板或父模板,我建议包括子堆栈需要的 all 参数。
如果您将来希望对子堆栈的任何任何进行更新,则需要从父堆栈中启动。
根据docs:
应启动某些堆栈操作,例如堆栈更新 从根堆栈而不是直接在嵌套堆栈上执行 自己。
因此,您的父模板可能有很多参数,具体取决于需要直接将多少参数传递给子模板。
取决于子堆栈如何使用其他子堆栈中的Output
,您可能 不需要使用DependsOn
来强制排序,因为Cloudformation很聪明足以找出隐式依赖关系(请参阅docs讨论DependsOn
)。包括这些当然不会有什么坏处,但是在大多数情况下不需要DependsOn
属性。
您需要确保子堆栈具有Output
的部分,以便其他子堆栈可以使用它们。密切注意AWS::CloudFormation::Stack
答案 1 :(得分:-1)
如果您有许多依赖堆栈,则可以轻松地运行所有内容,例如从Ansible运行。在每个CF模板中添加输出,然后编写简单的剧本即可按所需顺序运行模板。请看看https://docs.ansible.com/ansible/devel/modules/cloudformation_module.html