0

我有一个问题,如何使用 puppet 管理代理节点?

我正在使用 openstack 自动生成 vms,然后使用特殊模式的几个 puppet 代码来 puppet。

例如。

系统提供了几个vm,每个vm有两个attrs:

fqdn:也许重复(你知道虚拟机是由复杂环境中的系统生成的)

uuid:这将是唯一的,并存储在持久文件中。它不会改变

以下是其中两个。

虚拟机1:

fqdn: api-server.expamle.com
uuid: 20a558f1-2cd9-4068-b5fc-8d252c3f3262

虚拟机2:

fqdn: api-server.expamle.com
uuid: 096359d6-5dc9-47e9-946a-bd702fe7c2d5

(另外,我可以用 指定主机名uuid,但我认为这不是一个好主意。)

现在我想用puppet kickor来操纵它们mcollective puppet runonce

使用mco,我可以选择因子 uuid,这将区分 VM1 和 VM2。

mco pupppetd runonce --with-facter uuid=20a558f1-2cd9-4068-b5fc-8d252c3f3262

但我仍然必须在 puppet-code 中硬编码 fqdn

节点 api-server.expamle.com {
    ...
}

但实际上,我只想以以下样式使用它:

因素 20a558f1-2cd9-4068-b5fc-8d252c3f3262 {
    ...
}
因素 096359d6-5dc9-47e9-946a-bd702fe7c2d5 {
    ...
}

怎么写人偶?或者在架构上做一些改变?

4

1 回答 1

1

在 puppet 中有多种分配角色/分类节点的方法。

更接近您提供的示例的解决方案是使用以下 node.pp 文件

node default {

  case $::uuid {
    "20a558f1-2cd9-4068-b5fc-8d252c3f3262": {
        include apache
        ...
    }
    "096359d6-5dc9-47e9-946a-bd702fe7c2d5": {
        include ngnix
        ...
    }
    default: {
        ...
    }
  }

}

话虽如此,我不确定这是最好的解决方案。有更好的方法将类/角色分配给节点。

我建议查看 puppet hiera ( http://docs.puppetlabs.com/hiera/1/complete_example.html ) 或 ENC ( http://docs.puppetlabs.com/guides/external_nodes.html ) 以获得更好的机制。

于 2014-07-10T14:05:31.027 回答