我正在使用terraform 0.9.6
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文件的密码?
答案 0 :(得分:1)
我认为您的私钥格式存在问题。 ppk
是Putty私钥格式。尝试为您的配置者使用pem
私钥格式。
答案 1 :(得分:1)
您的第一个问题是私钥需要进行PEM编码,您可以使用PuTTYGen
CLI puttygen privatekey.ppk -O private-openssh -o privatekey.pem
GUI 启动PuTTYgen。以.ppk格式加载您的私钥。然后转到菜单>转换>出口> OpenSSH的。这将创建.pem格式的密钥。
您接下来的问题是terraform $ file尝试查找文件本身。 路径相对于工作目录进行解释。
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