Vagrant 在主机上计算表达式,并将结果作为参数传递给配置shell脚本

Vagrant 在主机上计算表达式,并将结果作为参数传递给配置shell脚本,vagrant,Vagrant,我尝试过的 流浪汉档案: ... config.vm.provision "shell", privileged: false, path: "provisioning/config-git.sh", args: "$(whoami)" ... 配置/config-git.sh: #!/usr/bin/env bash username=$1 git config --global user.email "$username@stackoverflow.com" git config --

我尝试过的

流浪汉档案:

...
config.vm.provision "shell", privileged: false, path: "provisioning/config-git.sh", args: "$(whoami)"
...
配置/config-git.sh:

#!/usr/bin/env bash

username=$1

git config --global user.email "$username@stackoverflow.com"
git config --global user.name $username
配置机器并将ssh插入机器后,实际结果如下:

实际产出

# Host Machine:
$ whoami
axiopisty

# Guest Machine:
$ whoami
vagrant
$ git config --list
user.email=vagrant@stackoverflow.com
user.name=vagrant
# Host Machine:
$ whoami
axiopisty

# Guest Machine:
$ whoami
vagrant
$ git config --list
user.email=axiopisty@stackoverflow.com
user.name=axiopisty
除了传递给config-git.sh脚本的参数外,其他一切都正常工作。参数是“$(whoami)”。我希望在主机上对表达式求值,以便将执行vagrant命令的用户的用户名作为参数插入到作为vagrant用户在来宾计算机上执行的脚本中

假设主机上用户的用户名为“axiopisty”,我希望得到以下结果:

预期产出

# Host Machine:
$ whoami
axiopisty

# Guest Machine:
$ whoami
vagrant
$ git config --list
user.email=vagrant@stackoverflow.com
user.name=vagrant
# Host Machine:
$ whoami
axiopisty

# Guest Machine:
$ whoami
vagrant
$ git config --list
user.email=axiopisty@stackoverflow.com
user.name=axiopisty
问题


如何让vagrant对主机上的表达式求值,并将求值结果作为参数传递给provisioning shell脚本?

您就快到了,但vagrant使用所有参数运行SSH命令,以便在来宾VM中解析您的参数。您需要做的是在使shell配置作为参数传递该值之前,从主机保存用户名值

下面是要添加到您的文件中的示例

  username = `whoami`.chomp # you need chomp as the result of the command executed this way returns \n at the end
  config.vm.provision "shell", privileged: false, path: "provisioning/config-git.sh", args: "#{username}"
本地执行的输出

fhenri@machine:~/project/examples/vagrant/ubuntu$ whoami
fhenri
fhenri@machine:~/project/examples/vagrant/ubuntu$ vagrant ssh
Welcome to Ubuntu 12.04.1 LTS (GNU/Linux 3.2.0-29-virtual x86_64)

 * Documentation:  https://help.ubuntu.com/
Last login: Wed Dec 16 22:59:01 2015 from 172.16.42.1
vagrant@ubuntu:~$ whoami
vagrant
vagrant@ubuntu:~$ git config --list
user.email=fhenri@stackoverflow.com
user.name=fhenri

另外,我刚刚发现,对于这个特定的用例,我可以使用这样的环境变量:
config.vm.provision“shell”,privileged:false,path:“provisioning/config git.sh”,args:“#{ENV['USER']}”