我正在使用 Terraform 在 Azure 云上进行跟踪,
- 在 Azure 上创建 RHEL OS VM。
- 将 setup.sh 文件复制到新 VM。
使用远程执行,我正在运行一个 setup.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}" } }
问题:要在新 VM 上运行的脚本需要 root 权限才能执行命令。
我尝试了以下方法,
- user = "root" 不起作用,因为我们在 Azure 上没有 root 用户密码。
在内联块内尝试了 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", ]
修改 shell 脚本,使每个命令都以 sudo 的形式执行,如下所示,
echo "password" | sudo -S -k cmd1 echo "password" | sudo -S -k cmd2 echo "password" | sudo -S -k cmd3....
第三种解决方案适用于大多数命令。但由于安全问题不是首选。
有没有办法通过 Azure 云上的 Terraform 以 root 用户身份远程安装脚本?