В облаке Azure я делаю следующее, используя Terraform,
- Создайте виртуальную машину ОС RHEL на Azure.
- Скопируйте файл настройки. sh в новая виртуальная машина.
Используя удаленное выполнение, я запускаю сценарий установки. sh, как показано ниже.
provisioner "remote-exec" {
inline = [
"chmod +x /home/${var.admin_username}/setup.sh",
"sudo /home/${var.admin_username}/setup.sh",
]
connection {
type = "ssh"
user = "${var.admin_username}"
password = "${var.admin_password}"
host = "${azurerm_public_ip.tf-vm-pip.fqdn}"
}
}
Проблема: сценарий для запуска на новой ВМ требуются root разрешения для выполнения команд.
Я пробовал следующее,
- user = "root" не работает, так как у нас не будет root пароль пользователя на Azure.
Пробовал sudo su / sudo -i внутри встроенного блока.
inline = [
"chmod +x /home/${var.admin_username}/setup.sh",
"echo "${var.admin_password}" | sudo -S su",
"sudo /home/${var.admin_username}/setup.sh",
]
Измените сценарий оболочки так, чтобы каждая команда выполнялась как sudo, как показано ниже,
echo "password" | sudo -S -k cmd1
echo "password" | sudo -S -k cmd2
echo "password" | sudo -S -k cmd3....
Третье решение работает для большинства команд. Но не является предпочтительным из-за проблем безопасности.
Есть ли способ сделать удаленную установку скрипта от имени пользователя root через Terraform в Azure облаке?