通过 Puppet config.yaml 或 Vagrantfile 设置 VM 的 $PATH?
Set VM's $PATH via Puppet config.yaml or Vagrantfile?
我想通过使用我的人偶 config.yaml
或 Vagrant
文件(或我不知道的其他一些 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 不做同样的事情,我会感到惊讶。
我想通过使用我的人偶 config.yaml
或 Vagrant
文件(或我不知道的其他一些 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 不做同样的事情,我会感到惊讶。