AWS Cloudformation嵌套模板

时间:2018-10-01 13:27:29

标签: amazon-web-services templates nested amazon-cloudformation

我正在尝试从4个现有模板创建嵌套拓扑。这些模板执行以下操作:

1:部署策略和角色。 2:部署EC2实例。 3:部署ELB 4:部署RDS实例。

所有这些都通过使用输出进行“链接”。所有参数也都包含在这些参数中。 现在,我要创建第五个模板(主模板),并将其他四个模板视为子模板。

但是我对主模板中所需的最少代码不太确定:

参数:这些参数是在子对象中定义的,因此在这里不需要它们,对吗? 资源:通过提供4个子模板的存储位置来指向4个子模板。 DependsOn 子句:我需要这样做,因为子模板需要按顺序部署。 输出:不太确定要在此处包括什么,我是否应该将输出留在孩子身上,并在此仅定义主人的?

我认为大师应该很小,但不太确定我是否缺少某些东西。另一个问题,我是否需要更改子模板上的任何内容?

任何帮助将不胜感激。

2 个答案:

答案 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