我的问题类似于这个git hub帖子,但遗憾的是它尚未解决:
https://github.com/hashicorp/terraform/issues/550
我想要一种简单的方法来为我的terraform脚本的 provisioner "remote-exec" { }
块中运行的命令赋予sudo权限 .
我来自一个ansible背景,它具有 sudo: yes
选项,允许任何命令ansible运行在我的ansible-playbook运行命令中使用 --ask-sudo-pass
可选时运行具有sudo权限的命令 . 我想在我的terraform脚本的 provisioner "remote-exec"
块中做类似的事情 .
这是我要运行的 provisioner "remote-exec"
块:
provisioner "remote-exec" {
inline = [
"sudo apt-get update",
"sudo apt-get install -y curl"
]
}
当我在 terraform apply
中运行它时,我看到此命令的输出中出现以下行:
openstack_compute_instance_v2.test.0 (remote-exec): [sudo] password for myUserName:
openstack_compute_instance_v2.test.1 (remote-exec): [sudo] password for myUserName:
openstack_compute_instance_v2.test.2 (remote-exec): [sudo] password for myUserName:
然后它只给了我无数的这些:
openstack_compute_instance_v2.test.0: Still creating...
openstack_compute_instance_v2.test.1: Still creating...
openstack_compute_instance_v2.test.2: Still creating...
那么如何解决这个问题并让terraform运行sudo命令呢?
Note: 我的 provisioner "remote-exec"
块的连接不能是root,所以即使这是一个简单的解决方案,但它不是我可以使用的 .
1 回答
答案是在我的第一个sudo命令中使用以下语法:
这会绕过sudo密码提示并直接在命令中输入密码 . 我已经将我的sudo密码作为变量
"${var.pw}"
,因此运行我的sudo命令就是将我的第一个命令更改为: