我已经设置了Vagrant,它使用Puppet作为provisioner,Puppet脚本设置MySQL、PHP等
我想把它们取出,存储在Vagrantfile旁边的一个外部文件中(不嵌套在Puppet文件夹中)。
我以为这就是Hiera的目的,但在试图解决我的问题时,无法理解文档。有什么建议吗?
我发现这个工作示例是关于如何将Hiera与Puppet一起用于节点特定配置的一个很好的入门教程。
上面的例子基本上让你从一个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
这意味着在/etc/puppet/hieradata/node/%{::fqdn}.yaml
(例如,/etc/puppet/hieradata/node/kermit.example.com.yaml
)下加载任何YAML配置文件,并且在第一步中找不到所需的配置选项的地方,然后从/etc/puppet/hieradata/common.yaml
中提取任何剩余的配置数据。
YAML文件本身的定义如下:
kermit.example.com.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
普通。yaml:
---
classes: ntp
ntp::autoupdate: true
ntp::enable: true
ntp::servers:
- grover.example.com iburst
- kermit.example.com iburst