azure - 有没有办法通过 Windows Azure 上的 Terraform 以 root 用户身份远程执行 shell 脚本

标签 azure shell terraform remote-execution

我正在使用 Terraform 在 Azure 云上执行以下操作,

  1. 在 Azure 上创建 RHEL 操作系统虚拟机。
  2. 将 setup.sh 文件复制到新虚拟机。
  3. 使用远程执行,我正在运行如下 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}"
    }
    }
    

问题:在新虚拟机上运行的脚本需要 root 权限才能执行命令。

我尝试过以下方法,

  1. user = "root"不起作用,因为我们在 Azure 上没有 root 用户密码。
  2. 在内联 block 中尝试了 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. 修改 shell 脚本,以便每个命令都作为 sudo 执行,如下所示,

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

第三种解决方案适用于大多数命令。但由于安全问题而不是首选。

有没有办法通过 Azure 云上的 Terraform 以 root 用户身份远程安装脚本?

最佳答案

请使用自定义脚本扩展以 root 身份执行脚本。 请找到以下提到的链接供您引用。 http://hypernephelist.com/2019/06/25/azure-vm-custom-script-extensions-with-terraform.html

关于azure - 有没有办法通过 Windows Azure 上的 Terraform 以 root 用户身份远程执行 shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60650189/

相关文章:

Azure 搜索、跟踪删除不起作用

python - 从命令行运行 python 脚本时导入语句不起作用

amazon-web-services - 我可以通过 Terraform 将 CloudWatch 事件规则附加到 'built-in target' 吗?

amazon-web-services - 在 AWS 策略上的 Terraform 中使用模板文件,该策略使用 IAM 策略变量

Azure REST API 创建容器,.NET 客户端配置文件,403 禁止,找到的 MAC 签名与任何计算的签名不同

azure - 使用Azure逻辑应用程序解压缩并重命名底层文件

python - 管理 Azure 无服务器函数应用中的连接

linux - 我的 shell 脚本正在做相反的事情

linux - 使用 linux 将数据转换为所需的形式

go - Golang中的Terraform列表对象