Terraformを初めて使用しています。私は2つのUbuntu VMを持つサブネットを持っています。 1つはVM A
で、パブリックIPを持ち、もう1つはVM B
で、プライベートIPとパブリックIPはありません。 B
にファイルをプロビジョニングしてコマンドを実行するTerraformの方法は、最初にVM A
にSSHしてからVM B
に入れる必要はありませんか?AzraのTerraformプロビジョニング専用VM
私が見つけたものを、テラフォームでfile
プロビジョナーはそうのような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
}
}
をしかし、私はテラフォームに直接プライベートIPに接続することができないので、私はわからないんだけどhost
フィールドでこのプロビジョニングを成功させるために置くべきもの。
私はTerraformでこれを行う方法はないと思います。同じ目的のためにsshトンネルをいくつかの回避策で使用できるようにすることについて[継続中の問題](https://github.com/hashicorp/terraform/issues/8367)があります – karysto
私はあなたのニーズを正しく理解しているかどうかわからない私の理解はあなたのVM Bにsshして、 'install.sh'を実行したいのですが、そうですか?私の知識によれば、あなたは 'terraform 'でそれを行うことができます。 'CustomScript'を使って' install.sh'を実行することができます。スクリプトはAzureによって実行され、VMにsshは必要ありません。 Terraformも 'CustomScript'をサポートしています。この例(https://www.terraform.io/docs/providers/azurerm/r/virtual_machine_extension.html)を参照できます。 –
@ Walter-MSFT Terraform内に公開IPがない私設ネットワーク内にVMを直接プロビジョニングする方法があるかどうかは疑問でした。それは正確に必要なもののように見える、あなたはあなたのコメントを答えにすることができますか? – karysto