我目前正在使用terraform和CloudFormation之间等待。有一个问题我还没有看到答案(或者也许,我只是还没有找到它)。
在地形中,你给一切事物起了一个精确的名字。这将删除具有这些名称的目标。但是CF呢?如果我们已经有一个架构,并且我想添加/删除实例并使用 CF,这将如何工作?它怎么知道之后要针对哪一个?
我希望这个问题有意义!我已经使用过terraform,但从未使用过CloudFormation。
CloudFormation 使用两种机制来识别其资源。 CFN 模板有一个它创建的资源列表,它使用实际 ID,而不是一个漂亮的名称,CFN 还使用堆栈 ID 标记资源(支持标签)。
CFN 不能用于删除其他资源堆栈中的资源,只有创建它们的堆栈才能管理它们。 Terraform 允许您将任何其他资源创建的资源导入到将在其中管理它们的新堆栈中。
在转换为Terraform之前,我使用了CFN一年(现在也用了一年),我再也不会回到CFN。 与CFN相比,Terraform提供了许多优势,这使得CFN现在很难使用。 诸如应用前计划、可重用模块、资源导入、粒度输出(CFN 主要是黑匣子)以及通常更快的 AWS 功能支持等功能(通常 API 在发布日发布,Terraform 支持紧随其后,/通常/比 CFN 更快,但并非总是如此)。