我目前正在考虑在Terraform运行期间实现条件维护页面的方法。 因此,请考虑将布尔SSM参数设置为true会导致资源,该资源将重定向规则放入为静态维护页面提供服务的ALB中。
但是我不知道是否有一种方法可以强制在开始(或尽快)执行一次Terraform资源,并在一次应用运行结束时强制另一种资源。
有人有主意吗?
(旁注:我知道我可以在管道中执行一个单独的步骤,但是也许有一种方法可以在一个tf中应用。)
答案 0 :(得分:1)
Terraform没有可用于构建类似此类的原语。 Terraform的“核心任务”是将更改应用于对象以匹配给定的所需状态,尽管在某些情况下这足以解决整个问题,但对于某些用例,最好将Terraform视为一个构建块。 / p>
通常,我建议将其作为Terraform一部分的更广泛的自动化系统的一部分,以便您可以自己决定如何处理某些情况,例如Terraform应用由于某种原因而失败或可以在没有停机时间的情况下应用特定计划。
对于前者:您需要确定应用失败是否导致停机标志保持设置状态,或者是否乐观地将其设置为未尝试运行状态。适合您的情况取决于您的具体情况。
对于后者:在正常使用Terraform的情况下,一旦建立了基础架构,就希望仅对其进行小的就地更新,因此某些操作可能不需要停机。如果您愿意,可以考虑生成一个保存的计划(terraform plan -out=tfplan
),然后将生成的计划读取为JSON(terraform show -json tfplan
)格式,以馈入一个自定义程序,该程序确定所描述的操作是否“安全” ”,这样它就可以决定是否需要停机,从而决定是否设置“停机”标志。
HashiCorp Learn网站上的指南Running Terraform in Automation涵盖了将Terraform用作更广泛的自动化系统的一部分的一些建议和注意事项。