Есть ли способ удаленного выполнения c сценария оболочки от имени пользователя root через Terraform на Windows Azure - PullRequest
1 голос
/ 12 марта 2020

В облаке Azure я делаю следующее, используя Terraform,

  1. Создайте виртуальную машину ОС RHEL на Azure.
  2. Скопируйте файл настройки. sh в новая виртуальная машина.
  3. Используя удаленное выполнение, я запускаю сценарий установки. 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 разрешения для выполнения команд.

Я пробовал следующее,

  1. user = "root" не работает, так как у нас не будет root пароль пользователя на Azure.
  2. Пробовал 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",
    ]
    
  3. Измените сценарий оболочки так, чтобы каждая команда выполнялась как sudo, как показано ниже,

    echo "password" | sudo -S -k cmd1
    echo "password" | sudo -S -k cmd2
    echo "password" | sudo -S -k cmd3....
    

Третье решение работает для большинства команд. Но не является предпочтительным из-за проблем безопасности.

Есть ли способ сделать удаленную установку скрипта от имени пользователя root через Terraform в Azure облаке?

1 Ответ

0 голосов
/ 12 марта 2020

Пожалуйста, используйте Custom Script Extension, который выполняет скрипт как root. Пожалуйста, найдите ниже ссылки ссылки для вашей справки. http://hypernephelist.com/2019/06/25/azure-vm-custom-script-extensions-with-terraform.html

...