2017-05-29 74 views
0

創建AWS Ubuntu的情況下,我使用terraform 0.9.6無法連接到由terraform

provisioner "file" { 
    source  = "conf/test.txt" 
    destination = "/etc/test.txt" 
    connection { 
    user = "ubuntu" 
    private_key = "${file("test.ppk")}" 
    agent = "false" 
    timeout = "30s" 
    } 
    } 

此塊結合實際深入讓我No key file found test.ppk錯誤。儘管該文件存在於我的.tf文件所在的相同文件夾中。我也試圖給絕對路徑C:\test.ppk,但問題依然存在。我在windows上運行terraform。任何想法爲什麼ppk文件沒有被讀取?此ppk文件是密碼保護如何傳遞連接對象中ppk文件的密碼短語?

回答

1

你的第一個問題是私有密鑰必須PEM編碼,您可以用PuTTYGen

CLI 的puttygen privatekey.ppk -O私人OpenSSH的-o privatekey.pem

GUI 開始的puttygen 。以.ppk格式載入您的私鑰。然後轉到菜單>轉化>導出> OpenSSH。這會以.pem格式創建一個密鑰。

你下一個問題是terraform $文件試圖找到文件本身。 路徑相對於工作目錄進行解釋。

file(path) - 將文件內容讀入字符串。該文件中的變量不會被插值。該文件的內容按原樣讀取。路徑是相對於工作目錄解釋的。路徑變量可用於引用相對於其他基本位置的路徑。例如,當從模塊內部使用file()時,通常需要使路徑相對於模塊庫,如下所示:file(「$ {path.module}/file」)。

https://www.terraform.io/docs/configuration/interpolation.html#file_path_

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html

1

我認爲你的私鑰格式是個問題。 ppk是Putty私鑰格式。嘗試爲您的供應商使用pem私鑰格式。