簡體   English   中英

為什么terraform要給各種資源加上“地圖遷移”的標簽?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM