0

我设置了 Vagrant,它使用 Puppet 作为配置程序,使用 Puppet 脚本设置 MySQL、PHP 等,但 Puppet 脚本具有密码、地址等的硬编码值。

我想将它们拉出来并将它们存储在 Vagrantfile 旁边的外部文件中(不嵌套在 Puppet 文件夹中)。

我认为这就是 Hiera 的用途,但在尝试解决我的问题时无法理解文档。有什么建议吗?

4

1 回答 1

1

我发现这个工作示例是关于如何使用 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其中说要在(例如)下加载任何 YAML 配置文件,/etc/puppet/hieradata/node/kermit.example.com.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

common.yaml

---
classes: ntp
ntp::autoupdate: true
ntp::enable: true
ntp::servers:
  - grover.example.com iburst
  - kermit.example.com iburst
于 2015-06-27T14:26:41.547 回答