我有Vagrant设置,它使用Puppet作为配置器,Puppet脚本设置MySQL,PHP等,但Puppet脚本具有密码,地址等的硬编码值。
我希望将它们拉出来并将它们存储在Vagrantfile旁边的外部文件中(不嵌套在Puppet文件夹中)。
我认为这是Hiera的用途,但在尝试解决问题时无法理解文档。任何建议?
答案 0 :(得分:1)
我发现this worked example是关于如何将Hiera与Puppet一起用于节点特定配置的非常好的入门读物。
上面的例子基本上是你从0.1.3
文件看起来像:
sites.pp
简单地定义节点列表:
node "kermit.example.com" {
class { "ntp":
servers => [ '0.us.pool.ntp.org iburst','1.us.pool.ntp.org iburst','2.us.pool.ntp.org iburst','3.us.pool.ntp.org iburst'],
autoupdate => false,
restrict => [],
enable => true,
}
}
node "grover.example.com" {
class { "ntp":
servers => [ 'kermit.example.com','0.us.pool.ntp.org iburst','1.us.pool.ntp.org iburst','2.us.pool.ntp.org iburst'],
autoupdate => true,
restrict => [],
enable => true,
}
}
node "snuffie.example.com", "bigbird.example.com", "hooper.example.com" {
class { "ntp":
servers => [ 'grover.example.com', 'kermit.example.com'],
autoupdate => true,
enable => true,
}
}
然后根据hiera_include('classes')
node "kermit.example.com", "grover.example.com", "snuffie.example.com", "bigbird.example.com", "hooper.example.com"
中定义的层次结构继承配置。在他们的例子中,他们只是使用它:
hiera.yaml
其中说要加载---
:backends:
- yaml
:yaml:
:datadir: /etc/puppet/hieradata
:hierarchy:
- "node/%{::fqdn}"
- common
下的任何YAML配置文件(例如,/etc/puppet/hieradata/node/%{::fqdn}.yaml
),并且在第一步中找不到所需的配置选项,然后将所有剩余的配置数据拉入来自/etc/puppet/hieradata/node/kermit.example.com.yaml
。
然后将YAML文件本身定义为:
<强> kermit.example.com.yaml 强>:
/etc/puppet/hieradata/common.yaml
<强> common.yaml 强>:
---
classes: ntp
ntp::restrict:
-
ntp::autoupdate: false
ntp::enable: true
ntp::servers:
- 0.us.pool.ntp.org iburst
- 1.us.pool.ntp.org iburst
- 2.us.pool.ntp.org iburst
- 3.us.pool.ntp.org iburst