我使用的連接資源在terraform模板如何定義連接資源在terraform與關鍵直列
connection {
user = "ubuntu"
private_key = "${file("test.pem")}"
agent = "false"
timeout = "30s"
}
而不是閱讀從我知道我們可以直接粘貼的關鍵內容的文件有關的關鍵,但什麼關鍵字符串中的換行符。如何粘貼內聯內容?
我使用的連接資源在terraform模板如何定義連接資源在terraform與關鍵直列
connection {
user = "ubuntu"
private_key = "${file("test.pem")}"
agent = "false"
timeout = "30s"
}
而不是閱讀從我知道我們可以直接粘貼的關鍵內容的文件有關的關鍵,但什麼關鍵字符串中的換行符。如何粘貼內聯內容?
雖然直接保存私鑰信息的內部配置是不是一個最佳實踐,可以使用「定界符」多行字符串風格,包括多行字符串:
connection {
user = "ubuntu"
private_key = <<-EOK
-----BEGIN RSA PRIVATE KEY-----
....
-----END RSA PRIVATE KEY-----
EOK
agent = "false"
timeout = "30s"
}
的EOK
串這裏是一個任意選擇的標記,因爲它不存在於鍵中,並且意在表示「鍵的結束」。只要介紹人和結束標記匹配,您就可以選擇任何標籤。
如果被連接到在同一Terraform結構與一個其中它被供應(其通常是這種情況)的替代方法是動態地生成在創建時的關鍵內創建,因此,機避免了在配置中放置文字鍵的需要。 The tls_private_key
resource可用於執行此操作:
resource "tls_private_key" "example" {
algorithm = "RSA"
}
resource "some_compute_resource" "example" {
# question didn't specify which provider is in use, so this is a generalized example
public_key = "${tls_private_key.example.public_key_openssh}"
connection {
user = "ubuntu"
private_key = "${tls_private_key.example.private_key_pem}"
agent = false
timeout = "30s"
}
}
在這種情況下,所生成的專用密鑰被保存爲Terraform 狀態的,而不是作爲配置的一部分的部分。這意味着配置不包含任何敏感信息,因此可以更自由地共享,但重要的是要確保安全地存儲狀態文件以防止未經授權訪問創建的實例。
爲什麼?你不想要光盤上的私鑰? – strongjz
我正在使用Bluemix雲自動化管理器,我只能使用一個.tf文件。沒有文件夾結構,因此我可以放置文件。有沒有其他的方法可以在同一個.tf文件中加載.pem文件? – aaj