1
我是Terraform的新手。我有兩個Ubuntu虛擬機的子網。一個是VM A
,它具有公共IP,另一個是VM B
,具有私有IP並且沒有公共IP。是否有Terraform方式在B
上配置文件和運行命令,而無需首先通過SSH連接到虛擬機A
然後虛擬到B
?Terraform在Azure上配置私有VM
從我找到了,file
供應方在Terraform需要connection
塊,像這樣:
# Example Azure VM provisioner block
provisioner "remote-exec" {
inline = [
"rsync -Pav [email protected]:~/install.sh ~",
"rsync -Pav [email protected]:~/file.txt ~",
"sudo ~/install.sh"
]
connection {
type = "ssh"
user = "${var.ssh_user_username}"
host = "<something to put here>"
private_key = "${file("~/.ssh/azure_key_rsa")}"
timeout = "1m"
agent = false
}
}
但因爲我不能直接連接到在Terraform私有IP,我不知道要爲host
字段添加什麼內容才能使此置備程序成功。
我不認爲有一種方法可以在Terraform中執行此操作。有一個[正在進行的問題](https://github.com/hashicorp/terraform/issues/8367)關於允許ssh隧道出於同樣的目的與一些解決辦法 – karysto
我不確定我是否正確理解您的需求,基於我的理解你想ssh到你的虛擬機B然後執行'install.sh',對嗎?據我所知,你可以用'terraform'來完成。你可以使用'CustomScript'來執行'install.sh',這個腳本是由Azure執行的,你不需要ssh到VM。 Terraform也支持'CustomScript',你可以參考這個[示例](https://www.terraform.io/docs/providers/azurerm/r/virtual_machine_extension.html)。 –
@ Walter-MSFT您是對的,我想知道是否有一種方法可以在Terraform內部沒有公共IP的專用網絡中直接配置虛擬機。這看起來確實需要什麼,你能否讓你的評論成爲答案? – karysto