2013年11月11日星期一

通过自定义fact增强MCollective推送更新元数据的灵活性

本邮件内容由第三方提供,如果您不想继续收到该邮件,可 点此退订
通过自定义fact增强MCollective推送更新元数据的灵活性  阅读原文»

通过自定义fact增强MCollective推送更新元数据的灵活性

原文:http://kisspuppet.com/2013/11/10/my-fact/

www.kisspuppet.com puppet实战

欢迎puppet爱好者加入自动化运维交流总QQ群:296934942

目前由于Facter并不全面,许多关于主机和环境的信息并没有作为Facter的fact。编写自定义的fact,可以让节点的facter包含更多的元数据fact,增加MCollective选择元数据定位主机的灵活性。

1 自定义节点变量

首选,需要在每个节点自定义一个facts文档,文档中包含了每个节点自定义的fact信息。为了方便管理,所有变量的值都必须事先定义好,可在puppet服务端定义一个fact变量列表,里面包含所有节点的自定义fact信息。然后,节点根据各自的主机特性选择合适的fact信息。

[root@puppetserver ~]# vim /etc/mcollective/facts.txt #收集并定义所有节点的fact信息,仅仅作为查看用
fact_certname=<自定义>
fact_apply1=apache
fact_apply2=php
fact_apply3=mysql
fact_apply4=java
fact_apply5=tomcat
fact_apply6=oracle
fact_apply7=nginx
fact_apply8=jboss
fact_apply9=haproxy
fact_apply10=db2
[root@agent1 ~]# cat /etc/mcollective/facts.txt #假设agent1节点具有以下fact变量信息
fact_certname=agent1.kisspuppet.com #puppet认证用,可写成其他名称
fact_apply3=mysql
fact_apply4=java
fact_apply10=db2
[root@agent2 ~]# cat /etc/mcollective/facts.txt #假设agent1节点具有以下fact变量信息
fact_certname=agent2.kisspuppet.com #puppet认证用,可写成其他名称
fact_apply2=php
fact_apply3=mysql
fact_apply7=nginx

2 创建file资源模块

由于自定义fact信息属于每个节点的特性,放在agents(存放单个节点个性模块的目录)目录中,可将这部分定义成一个class包含到每个节点的class agentN{}中。

[root@puppetserver ~]# cat /etc/puppet/agents/modules/agent1/manifests/init.pp
include agent1::facts
class agent1::facts{
file{ "/etc/mcollective/facts.txt":
content => template("agent1/facts.txt.erb"),
[root@puppetserver agents]# cat modules/agent1/templates/facts.txt.erb
------------Some custom facts variables-------------
fact_certname=agent1.kisspuppet.com
fact_apply3=mysql
fact_apply4=java
fact_apply10=db2
[root@puppetserver agents]# cat modules/agent1/manifests/init.pp
include agent1::facts
class agent1::facts{
file{ "/etc/mcollective/facts.txt":
content => template("agent1/facts.txt.erb"),
[root@puppetserver agents]# cat modules/agent2/templates/facts.txt.erb
------------Some custom facts variables-------------
fact_certname=agent2.kisspuppet.com
fact_apply2=php
fact_apply3=mysql
fact_apply7=nginx

3 创建fact模块

3.1 创建全局模块

新建一个模块可命名为public,放在environment(存放基础环境的模块)模块中,自定义fact fact_a

阅读更多内容

没有评论:

发表评论