通过 Puppet config.yaml 或 Vagrantfile 设置 VM 的 $PATH?

Set VM's $PATH via Puppet config.yaml or Vagrantfile?

我想通过使用我的人偶 config.yamlVagrant 文件(或我不知道的其他一些 VM 外部机制)向我的 VM 的 $PATH 环境变量添加一个额外的路径).

这可能吗?如果是,怎么做?

在 Vagrant 中,您可以使用 shell script 轻松配置内容。因此,首先,创建一个脚本(在与 Vagrantfile 相同的文件夹中),将附加路径添加到 $PATH。例如,创建一个名为 bootstrap.sh 的文件,内容如下:

export PATH=$PATH:/foo/bar
# Or if you want it for all users :
echo 'PATH=$PATH:/foo/bar' >> /etc/profile

然后在您的 Vagrantfile 中添加此行以在启动 VM 时执行此脚本:

config.vm.provision :shell, path: "bootstrap.sh"

这种方法是中途的,但如果出于某种原因你重新运行在你的 Vagrant 盒子上配置,你最终会在每次 运行 置备。为了避免这种情况:

grep -s -E "PATH=$PATH:/foo/bar" /etc/profile || echo 'PATH=$PATH:/foo/bar' >> /etc/profile  

我对 Chef 了解不多,但 Salt 在此类文件中创建托管部分然后自行处理方面做得很好。如果 Chef 不做同样的事情,我会感到惊讶。