傀儡 -- 应用傀儡类

  • 本文关键字:傀儡 应用 puppet hiera
  • 更新时间 :
  • 英文 :


我有一个节点 1,我的应用程序将使用 puppet 部署在节点 1 上。我创建了一个 hiera 文件 (node1_application.yaml),其中说明了该应用程序将使用的所有服务器详细信息,例如

ldap_server = 节点 2

mq_server = 节点 3

有什么办法可以在node.pp中,我只给node1信息,这些信息统计了要在节点1上应用的类。然后这个类读取我的 hiera 文件,看到 ldap 服务器在节点 2 上,所以 ldap 模块应该应用于节点 2。

应该使用我的 hiera 文件动态决定应该在哪个节点上应用哪个类。可以做到吗?

我正在使用puppet enterprise,hiera,facter,puppetdb和mcollective。

我认为最好使用hiera_include('classes')

如果你现在有node01.example.com.yaml,你可以写这样的东西:

---
classes:
  - base
  - ldap

现在在node01.example.com.pp

node 'node01.example.com' {
      hiera_include('classes')
}

是的,这是可能的。

node default{
    if hiera("useldap") == 'true' {
      include ldap
    }
}

将在解析useldap = true的每个节点中安装ldap

你不能

那样做。您必须在节点 2 中定义必须包含 ldap 类。它不能被node1中的class/hiera"扣除",因为在将这些特定节点应用更改时,这些是独立解析的。

我将推荐一个更新的解决方案,其中节点将每个角色分开(如果 puppetmaster <4.0)。

现在,manifests/database.pp:

node /^(projectnameinthreechar)-([a-z]{3})-db([d]+)./ {
    class {
            "server::project::db":
                    ;
    }
}

class server::project::db ($paramteres) { ... }

匹配所有节点,主机名符合此模式:

 /^(projectnameinthreechar)-([a-z]{3})-db([d]+)./

例:

web-can-db01

是的,你可以。

您应该执行以下操作。

网站.pp

node default{
  hiera_include('classes')
}

hiera.yaml

---
:backends:
  - yaml
:yaml:
  :datadir: "/etc/puppetlabs/code/environments/{::environment}/hieradata"
:hierarchy:
  - "nodes/%{::trusted.certname}"
  - "common"

然后在 hieradata 下,您应该有包含

node01.domain.com.yaml

---
classes:
  - base
  - application

node02.domain.com.yaml

---
classes:
  - base
  - ldap

相关内容

  • 没有找到相关文章

最新更新