puppert master,agent 应用(2)

puppet的配置文件:

puppet.conf:主配置文件,用于设置相关的参数、文件配置路径、认证文件等等;

主要存在的配置段:

[main]

[master]

[agent]


配置生成命令:

[master]

puppet master --genconfig > /etc/puppet/puppet.conf

[agent]

puppet agent --genconfig >> /etc/puppet/puppet.conf


各参数的参考手册可使用如下命令获取:

puppet doc --reference configuration


显示配置文件中指定参数的值:

puppet master --configprint PARAMETER

puppet agent --configprint PARAMETER


[master]一个特殊配置参数:

autosign = /etc/puppet/autosign.conf


指明证书请求自动签署配置文件路径;


fileserver.conf:

访问模块中提供的静态文件:puppet:///modules/module_name/file_name


配置agent是否有权限访问master之上的指定路径下的文件; puppet:///modules/<module name>/<file name>已经被自动授权;


auth.conf:

主要用于对Puppet的Restful风格API进行定义ACL


https://master:8140/{environment}/{resource}/{key}


path ~ regex             # alternately, regex match

[environment envlist]

[method methodlist]

[auth[enthicated] {yes|no|on|off|any}]

allow [host|backreference|*|regex]

deny [host|backreference|*|regex]

allow_ip [ip|cidr|ip_wildcard|*]

deny_ip [ip|cidr|ip_wildcard|*]


autosign.conf:

用于签署证书;每行一个主机名,或主机的通配信息;

web1.mageedu.com

*.magedu.com


puppet的多环境(environment)配置:

[master]

environment = dev, test, prod


[dev]

manifest = /etc/puppet/manifests/dev/site.pp

modulepath = /etc/puppet/modules/dev

fileserverconfig = /etc/puppet/fileserver.dev.conf


[test]

manifest = /etc/puppet/manifests/test/site.pp

modulepath = /etc/puppet/modules/test

fileserverconfig = /etc/puppet/fileserver.test.conf


[prod]

manifest = /etc/puppet/manifests/prod/site.pp

modulepath = /etc/puppet/modules/prod

fileserverconfig = /etc/puppet/fileserver.prod.conf


auth.conf

path /

auth any

environment test

allow localhost, *.test.magedu.com


客户端配置:

[agent]

environment = dev


注意:必要时,可以使用版本管理系统:cvs, svn, git


puppet的tag功能:

标签的用途:

收集资源

分析报告

限制catalog的运行


标签命名格式:只能由小写字母、数字、下划线、冒号和连字符组成;


一个资源可有任意数量的标签;


puppet的标签定义方式有两种:

自动分配:

资源:

title

资源所属类型

所在容器的类型

所在容器的title

容器:

title

容器的类型


自定义:

使用Metaparameters中的tag为资源添加自定义标签


tag => 'nginxpackage'


对容器自定义标签,则要使用tag函数;

class nginx {

tag('nginxsrv')

...puppet code...

}


判断容器或资源是否拥有标签:tagged函数

if tagged('nginxsrv') {

notify("")

}


简单示例:


package {'memcached':

ensure => present,

} -> 


file {'memcached':

path => '/etc/sysconfig/memcached',

source => '/tmp/memcached',

ensure => file,

tag => 'memcachedconf',

} ~>


service {'memcached':

ensure => running,

enable => true,

}


仅运行清单中的指定的标签:

# puppet apply --tags memcachedconf --verbose 


puppet的kick机制:

在master推送指定的配置至agent;


配置前提:agent监听端口,8139/tcp


puppet客户端默认每30分钟跟服务器通讯一次,但是有时,我们希望服务端能给客户端紧急推送一些任务,于是就有了puppet kick(puppet 2.6以前叫puppetrun)。

 

编辑客户端/etc/puppet/puppet.conf

在[agent]后面添加   

listen = true  //这个是让puppet监听8139端口 


在agent端,编辑或新建文件/etc/puppet/namespaceauth.conf,包含下面内容

[puppetrunner] 

allow *.exmple.com 

 

在agent端,编辑文件auth.conf

path /run 

method save 

allow puppet.magedu.com    

# puppet master

 

# this one is not stricly necessary, but it has the merit 

# to show the default policy which is deny everything else 

path / 

auth any 

 

推送方法,在服务端运行命令

                puppet help kick #帮助信息

puppet kick -p 10 –host 客户端 



puppet如何进行扩展:

Ruby的Web Server: WEBRick

apache + passenger

nginx + passenger


puppet dashboard的应用:

Web GUI