我有一个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
所示
你应该覆盖execute_command。例:
"provisioners": [
{
"execute_command": "echo 'vagrant' | {{.Vars}} sudo -S -E sh -eux '{{.Path}}'",
"scripts": [
"scripts/foo.sh"
],
"type": "shell"
}
],
sudo su <<HERE
ls /root
whoami
HERE
也许有更好的答案?