[英]Why is terraform adding "map-migrated" tags to various resources?
我運行了一個 terraform 腳本來創建一些資源,包括一個帶有私有 su.net 的 VPC、一個 RDS 實例和 Kinesis/Firehose。 這工作正常。
當我重新運行 terraform 並添加一些新資源(在本例中為 ElasticSearch)時,Terraform 開始輸出一個計划,其中包括向我以前存在的許多資源添加 AWS 標簽,其文本看起來像“map-migrated” = “d-server-01uw80xeqs2083” 。 這是該計划的一個片段:
# module.rds.aws_db_instance.etl_metastore_rds_dbinstance will be updated in-place
~ resource "aws_db_instance" "rds_dbinstance" {
id = "MyRDSId"
name = "etldb"
~ tags = {
- "map-migrated" = "d-server-01uw80xeqs2083" -> null
# (2 unchanged elements hidden)
}
~ tags_all = {
- "map-migrated" = "d-server-01uw80xeqs2083" -> null
# (2 unchanged elements hidden)
}
# (48 unchanged attributes hidden)
}
我不知道為什么要添加這些標簽。 Google 和 Terraform 文檔在這個問題上都沒有任何幫助。 這是我可以放心忽略的事情嗎? 我擔心我以某種方式跨越了 Terraform 的版本並且它正在進行我不想要的遷移。 據我所知,我在(1.0.1)之前和之后使用相同版本的 Terraform。
Terraform 建議刪除那些標簽。
Resource actions are indicated with the following symbols:
+ create
~ update in-place
- destroy
這樣做的原因是,Terraform 將您在 AWS 上運行的內容與您在 terraform 文件中定義的內容進行比較。 ( 文檔)
然后它將采取所有需要的操作,以便您的 AWS 基礎設施將匹配您的 Terraform 配置。 (即創建、更改和銷毀 AWS 資源)
這里 Terraform 檢測到,您在各種 AWS 資源上有那些“映射遷移”標簽,因此它建議刪除它們,因為它們沒有在您的 terraform 文件中定義。
為什么?
這些標簽用於AWS Migration Acceleration Program (MAP) ,這就是添加這些標簽稱為“MAP 標記”的原因。
這是一個雲遷移計划,其中AWS通過提供方法、工具、培訓和資金(您可以獲得AWS Credits)來幫助企業進入雲。
現在,該程序的一個要求是使用“地圖遷移”標簽標記您遷移的資源 - 或者您沒有學分。 (學分基於標記資源的成本和使用情況)
如何?
也許您的團隊正在使用 AWS Application Migration Service,它提供了一個設置,可以自動將 MAP 標簽應用於已啟動的實例。
或者有人在 AWS 賬戶中手動添加了標簽。
你能安全地刪除/忽略它們嗎?
從技術上講,你可以,它不會破壞任何東西。
但是你的項目經理可能會非常生氣,因為你會失去資金。 如果您用 Terraform 覆蓋它們,在 AWS 中添加這些標簽的人也不會高興。
因此解決方案是向您的經理詢問“所有 MAP 包含服務的列表”,並將 MAP 標簽合並到 Terraform 代碼中以獲取所有適當的資源:
tags = {
...
"map-migrated" = "d-server-01uw80xeqs2083"
}
(或者 - 骯臟的解決方案 - 將 terraform 中的標簽復制到您的代碼中,將terraform apply
到您的代碼中,直到 AWS 和您的 terraform 代碼之間不再存在此類標簽差異。)
注意:此標簽對於一個管理(付款人)賬戶及其所有成員賬戶始終相同。 唯一值稱為服務器 ID。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.