Terraform:用远程exec编辑文件

我有一个用例,我使用terraformconfigurationGOMaster和GOServer,然后使用新configuration的gomaster注册goserver。

以下是我正在使用的terraform配方。 Terraform也安装在docker服务器本身,我从那里执行这个配方。

#Configure the Docker provider provider "docker" { host = "tcp://${var.dockerIP}:2376/" } # Create the network resource "docker_network" "private_network" { name = "${var.customer_name}_network" } resource "docker_container" "goagent" { image = "${docker_image.goagent.latest}" name = "${var.customer_name}_goagent" hostname = "${var.customer_name}_goagent" command = [ "/bin/sh", "-c", "/usr/bin/supervisord" ] network_mode = "bridge" networks = [ "${docker_network.private_network.name}" ] provisioner "remote-exec" { connection { user = "root" password = "example" } inline = [ "sed -i -e 's/GO_SERVER=go-server/GO_SERVER=${var.customer_name}_goserver' /etc/defaut/go-agent", "sed -i -e 's/DAEMON=N/DAEMON=Y' /etc/defaut/go-agent", "/etc/init.d/go-agent restart" ] } } # Create a container resource "docker_container" "goservertest" { image = "${docker_image.goserver.latest}" name = "${var.customer_name}_goserver" hostname = "${var.customer_name}_goserver" network_mode = "bridge" networks = [ "${docker_network.private_network.name}" ] ports{ internal = "8153" external = "8003" } ports{ internal = "8154" external = "8002" } } resource "docker_image" "goserver" { name = "gocd/gocd-server:latest" } resource "docker_image" "goagent" { name = "gocd/gocd-agent:latest" } 

goagent资源中的远程执行部分不工作。 我的假设是它login到configuration的goagent并根据指定的sed命令修改其中的文件。 但相反,它正在执行docker主机和修改文件的SSH。 我错过了什么? 我们必须在远程设备的连接块中指定ipaddress或主机名吗?

如果要将其应用于供应的goagent主机而不应用于泊坞窗容器,请从资源“docker_container”中移除临时块,并将其移至资源区域,供goagent主机供应。

https://www.terraform.io/docs/provisioners/connection.html