Terraform设置程序不起作用-权限被拒绝

时间:2019-12-30 17:40:40

标签: terraform terraform-provider-aws terraform-provider-azure

我在创建实例时在terraform中的预配器部分下运行。但它不起作用,显示权限被拒绝错误。

provisioner "remote-exec" {
    inline = [
      "sudo cat /etc/ssh/sshd_config | sed -e 's/#MaxStartups 10:30:60/MaxStartups 10:30:60/' >/etc/ssh/sshd_config1",
      "sudo mv -f /etc/ssh/sshd_config1 /etc/ssh/sshd_config"
    ]
  }

provisioner "file" {
    source      = "script.sh"
    destination = "/tmp/script.sh"
  }

我遇到以下错误:

  

错误:无法创建/ etc / ssh / sshd_config:权限被拒绝   或权限被拒绝

2 个答案:

答案 0 :(得分:0)

当您使用Terraform设置程序remote-exec更改文件/etc/ssh/ssh_config中需要root权限的内容时,命令sudo是交互式的,您需要输入密码才能获得密码。具有root权限,但供应者没有。因此,您无法在预配器中输入密码,从而显示您没有权限。

Terraform供应商喜欢在VM中运行脚本,但据我所知它不支持交互式操作。如果您想使用 VM,只需在不使用Terraform的情况下使用SSH连接即可。

更新

使用SSH命令连接到VM:

ssh user@vm_ip

然后在VM内,您可以根据需要执行命令。

答案 1 :(得分:0)

如果您要坚持使用terraform,可以在允许root登录之前以root用户身份运行remote-exec,然后再使用sudo。

另一种方法可能是使用sudo NOPASSWD选项(read more)。