terraform内联函数错误,包含无效字符
我正在尝试在内联函数中添加以下内容,以设置主机名、更新resolv.conf并向/etc/hosts添加IP。如果我只是使用它来设置主机名,那么这很好,但是当我尝试执行其余部分时,会出现以下错误terraform内联函数错误,包含无效字符,terraform,terraform-provider-aws,Terraform,Terraform Provider Aws,我正在尝试在内联函数中添加以下内容,以设置主机名、更新resolv.conf并向/etc/hosts添加IP。如果我只是使用它来设置主机名,那么这很好,但是当我尝试执行其余部分时,会出现以下错误 inline = [ "sudo hostnamectl set-hostname --static ${format("%s%s", self.tags["Name"], ".mydomain.com")}", &
inline = [
"sudo hostnamectl set-hostname --static ${format("%s%s", self.tags["Name"], ".mydomain.com")}",
"sudo sed -i.bak "1s/.*/search mydomain.com mydomain.local/" /etc/resolv.conf",
"echo -e "192.168.1.1\ttesting.mydomain.com\ttesting" | sudo tee -a /etc/hosts > /dev/null"
]
地形图输出
on main.tf line 52, in resource "aws_instance" "temp":
50:
51:
52: "sudo sed -i.bak "1s/.*/search mydomain.com mydomain.local/" /etc/resolv.conf",
Expected a comma to mark the beginning of the next item.
Error: Invalid character
on main.tf line 53, in resource "aws_instance" "temp":
53: "echo -e "192.168.1.1\ttesting.mydomain.com\ttesting" | sudo tee -a /etc/hosts > /dev/null"
This character is not used within the language.
Error: Invalid character
on main.tf line 53, in resource "aws_instance" "temp":
53: "echo -e "192.168.1.1\ttesting.mydomain.com\ttesting" | sudo tee -a /etc/hosts > /dev/null"
This character is not used within the language.
Error: Invalid character
on main.tf line 53, in resource "aws_instance" "temp":
53: "echo -e "192.168.1.1\ttesting.mydomain.com\ttesting" | sudo tee -a /etc/hosts > /dev/null"
This character is not used within the language.
有什么想法吗
谢谢您的命令没有正确填充和执行。只要适当地逃离他们
inline = [
"sudo hostnamectl set-hostname --static ${format("%s%s", self.tags[\"Name\"], \".mydomain.com\")}",
"sudo sed -i.bak "1s/.*/search mydomain.com mydomain.local/" /etc/resolv.conf",
"echo -e \"192.168.1.1\ttesting.mydomain.com\ttesting \" | sudo tee -a /etc/hosts > /dev/null"
]
使用其他Terraform语言功能将您的集合转换为适合内嵌的形状
inline = flatten([
"sudo hostnamectl set-hostname --static ${format("%s%s", self.tags["Name"],
".mydomain.com")}",
"sudo sed -i.bak "1s/.*/search mydomain.com mydomain.local/" /etc/resolv.conf",
"echo -e "192.168.1.1\ttesting.mydomain.com\ttesting" | sudo tee -a /etc/hosts >
/dev/null"
])
我可以通过添加一个文件provisioner来绕过这个问题,将两行代码作为脚本添加到rile provisioner中,然后远程执行。使用一个内联远程执行资源调配器试图避免这种情况,但只是共享有效的资源您是否尝试过转义,比如
“echo-e\”192.168.1.1\ttesting.mydomain.com\ttesting\“| sudo tee-a/etc/hosts>/dev/null”
或者这样:`“echo-e'192.168.1.1\ttesting.mydomain.com\ttesting';sudo tee-a/etc/hosts>/dev/null”@布鲁诺克里亚多-谢谢。是的,我试过了。它们似乎不起作用(包括单引号和转义字符)。我在资源“aws_instance”“temp”中的main.tf行53上得到了以下“错误:缺少项分隔符”:51:52:53:“sudo sed-I.bak'1s/*/search mydomain.com mydomain.local/'/etc/resolv.conf,应使用逗号标记下一项的开头```展平选项似乎也不起作用