1 回答

TA貢獻(xiàn)1840條經(jīng)驗(yàn) 獲得超5個贊
聲明標(biāo)頭中給出的資源名稱用于 Terraform 自己的跟蹤,并且不可用于提供程序代碼。
造成這種情況的一個重要原因是,所討論的名稱本身沒有用:它僅在完整資源實(shí)例地址的上下文中有用,在本例中是有用的,但在更實(shí)際的配置中可能會更復(fù)雜,example_server.bob
例如example_server.bob[0]
,module.foo.example_server.bob
, module.foo["bar"].example_server.bob[15]
, 等
如果由 表示的遠(yuǎn)程對象類型需要遠(yuǎn)程系統(tǒng)中的example_server
唯一名稱,則建模的方法是為資源聲明一個參數(shù)(通常稱為,但您可以將其命名為對相關(guān)系統(tǒng)有意義的任何名稱)并具有用戶選擇將其設(shè)置為:name
resource "example_server" "bob" { name = "bob"}
用戶可能決定將這兩個名稱設(shè)置為與我上面顯示的相同,但在實(shí)際配置中很少合適,因?yàn)橥ǔ?code>name屬于遠(yuǎn)程系統(tǒng)中比 Terraform 配置中的資源名稱更廣泛的命名空間,因此用戶將希望將其設(shè)置為包含一些附加上下文的名稱,以確保適當(dāng)?shù)奈ㄒ恍?,以避免單?dú)配置和同一配置中單獨(dú)模塊之間的沖突。
如果您想使用 name 參數(shù)值作為 id 那么您可以將其復(fù)制過來:
d.SetId(d.Get("name"))
這是在不為每個對象分配代理鍵,而是使用對象的唯一名稱作為唯一標(biāo)識符的系統(tǒng)中表示對象的常見選擇。
Terraform 在每次應(yīng)用后將您返回的數(shù)據(jù)與保存的狀態(tài)快照中的完整資源地址相關(guān)聯(lián),因此作為提供程序開發(fā)人員,您根本不需要擔(dān)心資源地址:Terraform 將為您提供上次返回的任何數(shù)據(jù)以便您可以用它來計(jì)劃下一步的操作。
- 1 回答
- 0 關(guān)注
- 118 瀏覽
添加回答
舉報(bào)