我有一个问题,那就是如何用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 kick
或mcollective 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 { ... }
我怎么写木偶?或者在架构上做一些改变?
答案 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)以获得更好的机制。