我需要在$PATH
的前面添加一个环境变量:
$PATH
使用,因此我无法全局设置as this cookbook says to。我尝试了the answer here:
Exec { environment => [ "foo=$bar" ] }
但我收到错误Error: All resource specifications require names
。当我添加一个名字时,我得到了关于语法的其他错误,为此我正在摆弄修复只会给我带来其他错误(错误Syntax error at '}'; expected '}'
是我最喜欢的!)
我已尝试使用export
进行设置,但我看到:Error: Could not find command 'export'
我也尝试过使用set
和setenv
,结果相似。必须有一种直截了当的方法来做到这一点,但我找不到它。
非常感谢任何帮助或见解。
编辑:只需添加,这些是可用的shell:
$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
/bin/zsh
/usr/bin/zsh
zsh是配置的一部分,但如果需要,它可能是答案的要求。
答案 0 :(得分:1)
添加到您的路径前面,您想要添加您的资源默认值,我相信:
Exec { environment => "PATH=value:$PATH", }
这可能不正确,但我知道它会替换你设置的变量,默认情况下不附加到它们。更多详情请见https://docs.puppetlabs.com/puppet/latest/reference/type.html#exec-attribute-environment
答案 1 :(得分:0)
我为此尝试了几种方法,但我找到的最好的方法是使用Hiera。我读了很多关于如何用Vagrant设置这个内容的博客,但this was the best我找到了。
Vagrantfile
pp/
manifests/
modules/
data/
hiera.yml
common.yml
Vagrantfile的相关部分:
config.vm.provision "puppet" do |puppet|
puppet.manifests_path = "pp/manifests"
puppet.module_path = "pp/modules/custom"
puppet.manifest_file = "default.pp"
puppet.hiera_config_path = "pp/data/hiera.yaml"
end
我还不知道为什么需要hiera.yaml
指向common.yaml
,但这就是它的方式。
---
:backends:
- yaml
:hierarchy:
- "common"
:yaml:
:datadir: '/vagrant/pp/data'
---
ruby_version: "2.3.0"
ruby_prefix: "/opt/rubies"
...
$ruby_version = hiera("ruby_version")
$ruby_prefix = hiera("ruby_prefix")
$ruby_dir_fullpath = "${ruby_prefix}/ruby-${ruby_version}"
对我来说似乎付出了很多努力,但同样,这就是它的方式。