在terraform中解密Windows密码
我正在尝试设置一个Terraform脚本来部署windows服务器。运行terraform apply时,我收到一条错误消息,如下所示在terraform中解密Windows密码,windows,amazon-ec2,terraform,terraform-provider-aws,Windows,Amazon Ec2,Terraform,Terraform Provider Aws,我正在尝试设置一个Terraform脚本来部署windows服务器。运行terraform apply时,我收到一条错误消息,如下所示 Error: Invalid reference on main.tf line 44, in resource "aws_instance" "server": 44: password = "${rsadecrypt(aws_instance.server[0].password_data, file(KEY_PATH))}" A r
Error: Invalid reference
on main.tf line 44, in resource "aws_instance" "server":
44: password = "${rsadecrypt(aws_instance.server[0].password_data, file(KEY_PATH))}"
A reference to a resource type must be followed by at least one attribute
access, specifying the resource name.
如果资源为“aws_实例”,名称为“服务器[0]”,属性为“密码_数据”。我知道我错过了什么,但不知道是什么。任何协助都将不胜感激
下面是完整的资源模块,以防其中包含我遗漏的内容。
谢谢
使用password=“${rsadecrypt(self.password\u数据,文件(“/root/.ssh/id\u rsa”))}”
没有如下所示的user=“admin”
:
resource "aws_instance" "windows_server" {
get_password_data = "true"
connection {
host = "${self.public_ip}"
type = "winrm"
https = false
password = "${rsadecrypt(self.password_data, file("/root/.ssh/id_rsa"))}"
agent = false
insecure = "true"
}
}
使用password=“${rsadecrypt(self.password\u数据,文件(“/root/.ssh/id\u rsa”))}”
没有如下所示的user=“admin”
:
resource "aws_instance" "windows_server" {
get_password_data = "true"
connection {
host = "${self.public_ip}"
type = "winrm"
https = false
password = "${rsadecrypt(self.password_data, file("/root/.ssh/id_rsa"))}"
agent = false
insecure = "true"
}
}
假设
KEY\u PATH
是您从这里删除的实际路径,或者被类似于pathexpand(“~/.ssh/id\u rsa”)的内容替换为rsadecrypt(self.password\u data,file(KEY\u PATH))
我在terraform.tfvars文件中有密钥路径KEY\u PATH=“C:\\Users\\paulj\\OneDrive\\Documents\\\教育课程\\培训\\AWS\\keys”
(我正在本地测试地形图)。我尝试使用self.password选项,但我得到了相同的错误。KEY\u PATH
不是有效的变量引用。如果您将变量定义为variable“KEY\u PATH{}
,则需要var.KEY\u PATH
谢谢@ydaetskcoR,问题似乎是缺少变量名的“var”部分。将其添加到密钥路径中可以解决问题。谢谢,我很惊讶您可以在其自己的provisioner中引用资源。这通常是错误的,这就是为什么供应者可以使用self
关键字,但我还没有测试自Terraform 0.12以来是否仍然是这样。我想您只需要rsadecrypt(self.password\u数据,文件(KEY\u路径))
假设KEY\u PATH
是您从此处删除的实际路径,或者替换为类似pathexpand(“~/.ssh/id\u rsa”)
我在terraform.tfvars文件中有密钥路径KEY\u PATH=“C:\\Users\\palj\\OneDrive\\Documents\\\u教育课程\\Training\\AWS\\keys”
(我正在本地测试地形平面图)。我尝试使用self.password选项,但我得到了相同的错误。KEY\u PATH
不是有效的变量引用。如果您将变量定义为var.KEY\u PATH
,则需要var.KEY\u PATH
谢谢@ydaetskcoR,问题似乎是缺少变量名的“var”部分。将其添加到KEY_路径可以解决问题。Thanks我很惊讶您可以在自己的provisioner中引用资源。这通常会出错,这就是为什么provisioner可以使用self
关键字的原因,但我还没有测试自Terraform 0.12以来是否仍然如此。