Terraform Remote-Exec на Windows с SSH
Я настроил сервер Windows и установил ssh с помощью Chocolatey. Если я запускаю это вручную, у меня нет проблем с подключением и выполнением моих команд. Когда я пытаюсь использовать Terraform для запуска моих команд, он успешно соединяется, но не запускает никаких команд.
Я начал с использования winrm, а затем смог запустить команды, но из-за некоторых проблем с созданием кластера сервисных структур поверх winrm я решил вместо этого использовать ssh, и при ручном запуске все работало, и кластер работал. Так что, похоже, это путь вперед.
Я настроил виртуальную машину Linux и получил работу SSH с помощью закрытого ключа. Поэтому я попытался использовать тот же конфиг, что и на виртуальной машине Linux в Windows, но он все же попросил меня использовать мой пароль.
В чем может быть причина того, что вы можете запускать команды через ssh вручную и использовать только Terraform connect, но команды не запускаются? Я запускаю это на OpenStack с Windows 2016
null_resource.sf_cluster_install (remote-exec): Connecting to remote host via SSH...
null_resource.sf_cluster_install (remote-exec): Host: 1.1.1.1
null_resource.sf_cluster_install (remote-exec): User: Administrator
null_resource.sf_cluster_install (remote-exec): Password: true
null_resource.sf_cluster_install (remote-exec): Private key: false
null_resource.sf_cluster_install (remote-exec): SSH Agent: false
null_resource.sf_cluster_install (remote-exec): Checking Host Key: false
null_resource.sf_cluster_install (remote-exec): Connected!
null_resource.sf_cluster_install: Creation complete after 4s (ID: 5017581117349235118)
Вот скрипт, который я использую для запуска команд:
resource "null_resource" "sf_cluster_install" {
# count = "${local.sf_count}"
depends_on = ["null_resource.copy_sf_package"]
# Changes to any instance of the cluster requires re-provisioning
triggers = {
cluster_instance_ids = "${openstack_compute_instance_v2.sf_servers.0.id}"
}
connection = {
type = "ssh"
host = "${openstack_networking_floatingip_v2.sf_floatIP.0.address}"
user = "Administrator"
# private_key = "${file("~/.ssh/id_rsa")}"
password = "${var.admin_pass}"
}
provisioner "remote-exec" {
inline = [
"echo hello",
"powershell.exe Write-Host hello",
"powershell.exe New-Item C:/tmp/hello.txt -type file"
]
}
}
0 ответов
Положить connection
блок внутри provisioner
блок:
provisioner "remote-exec" {
connection = {
type = "ssh"
...
}
inline = [
"echo hello",
"powershell.exe Write-Host hello",
"powershell.exe New-Item C:/tmp/hello.txt -type file"
]
}