Packer无法以sudo身份执行shell配置程序

问题描述 投票:4回答:2

我有一个shell provisioner in packer连接到一个用户vagrant的盒子

{
  "environment_vars": [
    "HOME_DIR=/home/vagrant"
  ],
  "expect_disconnect": true,
  "scripts": [
    "scripts/foo.sh"
  ],
  "type": "shell"
}

脚本的内容是:

whoami
sudo su
whoami

输出奇怪地保留:

==> virtualbox-ovf: Provisioning with shell script: scripts/configureProxies.sh
    virtualbox-ovf: vagrant
    virtualbox-ovf: vagrant

为什么我不能切换到root用户?如何以root身份执行语句?注意,我不想引用所有语句,如sudo "statement |foo",而是全局切换用户,如sudo su所示

shell root provisioning packer
2个回答
3
投票

你应该覆盖execute_command。例:

  "provisioners": [
    {
      "execute_command": "echo 'vagrant' | {{.Vars}} sudo -S -E sh -eux '{{.Path}}'",
      "scripts": [
        "scripts/foo.sh"
      ],
      "type": "shell"
    }
  ],

1
投票

一个可能的答案似乎是:https://unix.stackexchange.com/questions/70859/why-doesnt-sudo-su-in-a-shell-script-run-the-rest-of-the-script-as-root

sudo su <<HERE
ls /root
whoami
HERE

也许有更好的答案?

© www.soinside.com 2019 - 2024. All rights reserved.