使用 terraform 获取和更新特定字段
Posted
技术标签:
【中文标题】使用 terraform 获取和更新特定字段【英文标题】:fetch and update particular field using terraform 【发布时间】:2021-05-06 18:41:20 【问题描述】:我有一个场景,
如何获取特定字段值并更新特定字段值?
例如: 我正在使用配置了环境变量 (endpoint=abc) 和 replicas=2 的 terraform "kubernetes_deployment" 资源部署应用程序。
resource "kubernetes_deployment" “app”
…..….
spec
replicas = 2
template
spec
….
env
name = “ENDPOINT”
value = “abc”
一旦我使用 terraform 脚本进行部署,另一个脚本可能会更改配置 replicas=5 和环境值(endpoint=xyz)
现在我需要通过 terraform 脚本仅将副本更新到 20(如果副本
resource "kubernetes_deployment" “app”
…..….
spec
replicas = 20 -> only this has to reflect in apply
template
spec
….
env
name = “ENDPOINT”
value = “abc”
如果副本数 > 20,我如何获取特定字段(副本)进行比较并仅更新副本数?
有更多 Terraform 经验的人可以帮助我吗?
【问题讨论】:
你看过ignore_changes
吗?
感谢重播,我应用了 ignore_changes 并且工作正常。
【参考方案1】:
在“kubernetes_deployment”资源块中,考虑添加一个生命周期块。使用它来忽略可能在 Terraform 知识之外对资源属性进行的更改。
为“ignore_changes”提供资源属性列表,Terrform 将在后续运行中忽略该列表。参数是资源中属性的相对地址。地图和列表元素可以使用索引符号来引用。
lifecycle
ignore_changes = [spec["env"]]
参考:https://www.terraform.io/docs/language/meta-arguments/lifecycle.html#ignore_changes
【讨论】:
以上是关于使用 terraform 获取和更新特定字段的主要内容,如果未能解决你的问题,请参考以下文章
使用 terraform 将 EC2 自己的 IP 添加为入站规则