puppet如何写module,以snmp为例

1150阅读 0评论2015-09-14 expert1
分类:系统运维

# module snmp

一般来说目录下应该有manifests /files  /templates  /providers/  facters  /functions等,但除了mainfests,其他都是optional。下边的例子虽然简单,但很有代表性。

# snmp/manifests/init.pp

class (arg1,arg2){

package {'SNMP Packages':
        name => 'net-snmp',
#        ......

        }

->   #资源依赖关系,the equivalent of require/notify。

file  {'snmpd.conf':
        path     => '/etc/snmp/snmpd.conf',
        content  => template("snmp/snmpd.conf.erb") ,
        notify   => Service['snmpd'],   # S必须大写,因为是资源关系。
        }

service  {'snmpd':
 ......

        }

}


# snmp/templates/snmpd.conf.erb, Ruby ERB template, 调用ruby。

com2sec your default banet
......

<%- if(@hostname =~ /^aws-/) -%>   # 调用hostname这个fact, 用regexp来匹配, 包含了if/elsif逻辑。

extend .1.3.6.1.4.1.2021.5000 check_up  /usr/local/scripts/check_alive.sh
<%- elsif (@hostname == "mon01") -%>
extend .1.3.6.1.4.1.2021.5000 check_puppet_update /root/check_report_update.py
<%- end -%>

上一篇:nagios+python检测report是否生成
下一篇:python总结