Mik*_*ell 1 puppet puppetmaster
我是木偶新手。因此,我正在尝试以最佳方式来设置有意义的清单。遵循 DRY(不要重复自己)原则,我尝试在一个模板中加载通用指令,然后从与环境匹配的文件中加载特定于环境的指令。基本上是这样的:
# nodes.pp
node base_dev {
$service_env = 'dev'
}
node 'service1.ownij.lan' inherits base_dev {
include global_env_specific
}
class global_env_specific {
include shell::bash
}
# modules/shell/bash.pp
class shell::bash inherits shell {
notify{"Service env: ${service_env}": }
file { '/etc/profile.d/custom_test.sh':
content => template('_global/prefix.erb', 'shell/bash/global.erb', 'shell/bash/$service_env.erb'),
mode => 644
}
}
Run Code Online (Sandbox Code Playgroud)
但是每次我运行puppet agent --test
puppet 时都会抱怨它找不到该shell/bash/$service_env.erb
文件,但我仔细检查了它是否存在。由于输出预期值的通知语句,我知道 var 是可访问的,所以我怀疑我正在做的事情是不允许的。
我知道我可以有一个单一的template.erb
并将变量传递给模板,这在这种情况下会起作用,因为 custom.sh 文件很小而且跨环境没有太多变化,但是对于更复杂的配置(httpd、solr 等)我会更喜欢访问特定于环境的文件。我也知道我可以指定特定于环境的模块路径,但我更愿意只在模板级别处理这种行为,而不是拥有多个密切命名的目录。
谢谢。
归档时间: |
|
查看次数: |
160 次 |
最近记录: |