本文共 4003 字,大约阅读时间需要 13 分钟。
日,搞了很久才发现,puppet 多环境配置在3.6版本 前后配置不同,我的书是旧的,软件是新的,掉坑里都不知道怎么爬上来
3.6之前
[master]
# modulepath=
# manifest=
environments = production, development, testing
[production]
modulepath=/etc/puppet/environments/production/modules/
manifest=/etc/puppet/environments/production/manifests/site.pp
[development]
modulepath=/etc/puppet/environments/development/modules/
manifest=/etc/puppet/environments/development/manifests/site.pp
[testing]
modulepath=/etc/puppet/environments/testing/modules/
manifest=/etc/puppet/environments/testing/manifests/site.pp
3.6 之后
[master]
environmentpath = $confdir/environments
$confdir一般指/etc/puppet这个目录
在多环境配置目录下为每个环境准备一个子目录
ENVIRONMENT_NAME/
manifests/
site.pp
modules/
额外配置文件:
文件系统:fileserver.conf,默认配置可用,不需要调整
认证(URL):auth.conf:在该文件中,method为find表示读请求,method为save为其他请求,默认没有指定任何操作,则默认表示拒绝所有,如最后的path /
先创建目录
mkdir -pv /etc/puppet/environments/{development,production,testing}/manifests
mkdir -pv /etc/puppet/environments/{development,production,testing}/modules/memcached/{manifests,files,templates}
vim /etc/puppet/puppet.conf
[master]
environmentpath = $confdir/environments
查看section读取的环境目录
puppet config print environmentpath --section master
准备redis模块
#testing环境
vim /etc/puppet/environments/testing/modules/memcached/manifests/init.pp
class memcached($maxmemory='64'){
package{'memcached':
ensure => latest,
provider => yum,
}
file{'/etc/sysconfig/memcached':
ensure => file,
content => template('memcached/memcached.erb'),
owner => 'root',
group => 'root',
mode => '0644',
}
service{'memcached':
ensure => running,
enable => true,
}
Package['memcached'] -> File['/etc/sysconfig/memcached'] ~>Service['memcached']
}
#development环境
vim /etc/puppet/environments/development/modules/memcached/manifests/init.pp
class memcached($maxmemory='128'){
package{'memcached':
ensure => latest,
provider => yum,
}
file{'/etc/sysconfig/memcached':
ensure => file,
content => template('memcached/memcached.erb'),
owner => 'root',
group => 'root',
mode => '0644',
}
service{'memcached':
ensure => running,
enable => true,
}
Package['memcached'] -> File['/etc/sysconfig/memcached'] ~>Service['memcached']
}
production环境
vim /etc/puppet/environments/production/modules/memcached/manifests/init.pp
class memcached($maxmemory='256'){
package{'memcached':
ensure => latest,
provider => yum,
}
file{'/etc/sysconfig/memcached':
ensure => file,
content => template('memcached/memcached.erb'),
owner => 'root',
group => 'root',
mode => '0644',
}
service{'memcached':
ensure => running,
enable => true,
}
Package['memcached'] -> File['/etc/sysconfig/memcached'] ~>Service['memcached']
}
准备memcached配置模板文件
vim /etc/puppet/environments/production/modules/memcached/templates/memcached.erb
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="<%= @maxmemory %>"
OPTIONS=""
把该模板复制到其他两个环境下
cp /etc/puppet/environments/production/modules/memcached/templates/memcached.erb /etc/puppet/environments/development/modules/memcached/templates/memcached.erb
cp /etc/puppet/environments/production/modules/memcached/templates/memcached.erb /etc/puppet/environments/testing/modules/memcached/templates/memcached.erb
在不同环境下定义site.pp
vi /etc/puppet/environments/development/manifests/site.pp
node 'puppetagent'{
class {'memcached':
maxmemory => '512',
}
}
vi /etc/puppet/environments/testing/manifests/site.pp
node 'puppetagent'{
include memcached
}
vi /etc/puppet/environments/production/manifests/site.pp
node 'puppetagent'{
include memcached
}
在客户端配置文件agent里指定当前机器为testing环境
vim /etc/puppet/puppet.conf
[agent]
environment = testing
查看当前操作环境
puppet config print environment
#开发
puppet agent --no-daemonize -v --environment=development
#生产环境
puppet agent --no-daemonize -v --environment=production
#测试环境
puppet agent --no-daemonize -v --environment=testing
客户端测试下
puppet agent --test --server puppetmaster --environment=testing
rpm -qa | grep mem
cat /etc/sysconfig/memcached
可以发现测试环境memcached配置为64m
puppet agent --test --server puppetmaster --environment=production
cat /etc/sysconfig/memcached
环境参数的更新可以更新客户端的配置
转载地址:http://eorml.baihongyu.com/