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