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']}”