【发布时间】:2021-03-03 12:17:25
【问题描述】:
所以我最近问了一个关于how to provision instances that depend on each other 的问题。我得到的答案是我可以实例化这 3 个实例,然后有一个 null resource 和一个 remote-exec 配置器来更新每个实例。
它工作得很好,除了为了工作我的实例需要配置为允许 ssh。由于它们位于私有子网中,我首先需要在公共实例中允许 ssh,然后引导我的 3 个实例。此引导操作需要在引导完成后真正不需要的 4 个实例上允许 ssh。这还不错,因为我仍然可以将流量限制在已知 ip/子网,但我仍然认为值得询问是否有一些方法可以避免这个问题。
我可以在单个 terraform 计划中更新正在运行的实例的安全组吗?示例:使用 security_group X 实例化 3 个实例,通过 ssh 配置它们,然后使用 security_group Y 更新实例,从而禁止使用 ssh。如果是这样,怎么做?如果没有,是否有其他解决此问题的方法?
谢谢。
【问题讨论】:
-
你能用
run command替换ssh吗?这是做这些事情的正确方法,它不需要任何互联网连接,只要您的实例可以由 ssm 管理。 -
我从未使用过 ssm,所以它对我来说有点新,但快速阅读它似乎确实可行。如果我理解正确,我会将
remote-exec替换为local-exec,然后使用aws-cli 直接引导实例?如果是这样,我认为这对我的用例来说是完美的! -
是的,因为 terraform 不支持运行命令。或者,您可以使用
aws_lambda_invocation通过 lambda 调用它,以将所有内容保存在 aws。 -
再次感谢您的帮助 :) 我明天会测试这两个选项,但我很有信心它们会起作用!我会及时通知你
-
没问题。如果您不介意,我会提供更多信息的答案。
标签: amazon-web-services terraform terraform-provider-aws