如何没有fqdn的木偶和差异?

时间:2014-07-10 08:28:30

标签: deployment puppet openstack facter mcollective

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

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

例如

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

  

fqdn:也许重复一下(你知道vms是复杂env中系统的genrate)

     

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

以下是其中两个。

VM1:

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

VM2:

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

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

现在我想用puppet kickmcollective puppet runonce傀儡。

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

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

但我仍然必须在puppet-code

中对fqdn进行硬编码
node api-server.expamle.com {
    ...
}

但事实上,我只想以下列风格使用它:

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

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

1 个答案:

答案 0 :(得分:1)

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

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

node default {

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

}

说,我不确定这是最好的解决方案。有更好的方法为节点分配类/角色。

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