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

Geo*_*ler 11 shell provisioning root packer

我有一个shell provisioner包装机与用户连接到一个盒子vagrant

{
  "environment_vars": [
    "HOME_DIR=/home/vagrant"
  ],
  "expect_disconnect": true,
  "scripts": [
    "scripts/foo.sh"
  ],
  "type": "shell"
}
Run Code Online (Sandbox Code Playgroud)

脚本的内容是:

whoami
sudo su
whoami
Run Code Online (Sandbox Code Playgroud)

并且输出奇怪地仍然存在:

whoami
sudo su
whoami
Run Code Online (Sandbox Code Playgroud)

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

Ric*_*sen 10

您应该覆盖execute_command。例子:

  "provisioners": [
    {
      "execute_command": "echo 'vagrant' | {{.Vars}} sudo -S -E sh -eux '{{.Path}}'",
      "scripts": [
        "scripts/foo.sh"
      ],
      "type": "shell"
    }
  ],
Run Code Online (Sandbox Code Playgroud)