gpt4 book ai didi

sudo - 如何在Terraform中运行sudo命令?

转载 作者:行者123 更新时间:2023-12-04 10:15:41 25 4
gpt4 key购买 nike

我的问题类似于此git hub帖子,但不幸的是它尚未解决:

https://github.com/hashicorp/terraform/issues/550

我想要一种简单的方法来为terraform脚本的provisioner "remote-exec" { }块中运行的命令赋予sudo特权。

我来自ansible背景,该背景具有sudo: yes选项,当在我的ansible-playbook运行命令中使用可选--ask-sudo-pass时,允许ansible运行的任何命令运行具有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命令?

注意:我的 provisioner "remote-exec"块的连接不能是root,因此即使这是一个简单的解决方案,也无法使用。

最佳答案

答案是在我的第一个sudo命令中使用以下语法:

"echo yourPW | sudo -S someCommand" 

这将绕过sudo password提示,并将密码直接输入到命令中。我已经将sudo密码作为变量 "${var.pw}"了,所以运行我的sudo命令很简单,只需将第一个命令更改为:
  provisioner "remote-exec" {
inline = [
"echo ${var.pw} | sudo -S apt-get update",
"sudo apt-get install -y curl"
]
}

关于sudo - 如何在Terraform中运行sudo命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37847273/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com