<51cto文档上传功能较弱,读者可留言索取puppet word文档,tks>
在掌握《集中管理利器-puppet快速入门-上》的基本功学习后,我们可以进行接下来的学习
Puppet配置
文件管理 file
文件服务器写法:
/etc/puppet/ fileserver.conf 定义
http://docs.puppetlabs.com/references/latest/type.html#user
http://docs.puppetlabs.com/references/latest/type.html#group
用户管理
http://docs.puppetlabs.com/references/latest/type.html#file
命令执行
实例:
###命令执行 /etc/puppet/manifests/site.pp 配置 file {"/tmp/mysql_test/mysql_test.tgz": ##将pmaster /tmp/files/mysql_test.tgz文件下发到agent /tmp/mysql_test/目录下 source => "puppet://pmaster.example.com/files/mysql_test.tgz", } exec { "unzip tgz packget": command => "tar -xvf /tmp/mysql_test/mysql_test.tgz", ###所有命令必须为全路径或者path参数指定命令搜索路径 path => "/usr/bin:/usr/sbin:/bin:/sbin", cwd => "/tmp/mysql_test" ##命令执行的路径为: /tmp/mysql_test/ creates => "/etc/my.cnf" #当/etc/my.cnf不存在的时候,才会执行该命令 tries => 2, #重试次数 try_sleep => 3, #重试间隔 s为单位 } |
常用命令诠释:
1. command 2. creates 3. cwd 4. environment 5. group 6. logoutput 7. onlyif 8. path 9.timeout 10.tries 11.try_sleep 12.user 更多请参见: http://docs.puppetlabs.com/references/latest/type.html#exec |
Cron管理
实例:
cron { "sh /tmp/a.sh": command => "/bin/sh /tmp/a.sh", user=> root, minute => '*/3' #ensure => "absent"; ##cron删除 } |
命令用法:
puppet –genconfig#查看当前配置 service puppetmasterd start #启动puppetmaster service puppet start ##启动客户端 客户端的运行报告在服务器端:/var/lib/puppet/reports/ Agent /etc/hosts中添加主机信息 puppetmasterd –genconfig > puppet.conf puppet master --verbose --no-daemon agent 连接server puppet agent --server=pmaster --no-daemonize --verbose 使用—waitforcert 参数改变agent等待时间 puppetmasterd --configprint modulepath ##打印默认路径 连接并对agent进行验证,我们需要对agent发送到master的证书进 puppet cert –list ##显示等待签名的服务器 puppet cert --sign node1.example.com ##签名 puppert cert –sign –all #对所有等待的证书进行签名 |
服务器控制客户端立即运行
Puppet kick 官网不造成使用,只检查客户端返回状态,不检查命令执行结果,新版本会弃用
Agent配置:
puppet.conf
[agent]
listen = true
auth.conf 红色部分为新增
path /run
auth any
method save
allow pmaster.example.com
# this one is not stricly necessary, but ithas the merit
# to show the default policy which is denyeverything else
path /
auth any
demo方式启动agent
service puppet restart ###启动成功不代表成功了,netstat确认端口被监听,puppet这块功能有待完善…
Master远程确认8139端口可通
Client确认文件是否被重新生成
class类的尝试
配置文件作如下变更:
Mysql单独起一个模块配置
[root@pmaster puppet]# tree manifests/ manifests/ |-- init.pp |-- nodes | `-- nodes.pp |-- site.pp |-- site.pp_normal `-- site.ppaa 1 directory, 5 files [root@pmaster puppet]# pwd /etc/puppet [root@pmaster puppet]# tree modules/ modules/ |-- mysql | |-- manifests | | |-- config.pp | | |-- init.pp | | |-- init.ppa | | |-- install.pp | | `-- service.pp | `-- template | `-- my.cnf.erb `-- test `-- manifests `-- init.pp 5 directories, 7 files [root@pmaster puppet]# cat modules/mysql/manifests/config.pp class mysql::config{ file {"/tmp/mysql_test/mysql_test.tgz": ##将pmaster /tmp/files/mysql_test.tgz文件下发到agent /tmp/mysql_test/目录下 source => "puppet://pmaster.example.com/files/mysql_test.tgz", } } [root@pmaster puppet]# cat modules/mysql/manifests/init.pp class mysql::mysql{ include mysql::install,mysql::config } [root@pmaster puppet]# cat modules/mysql/manifests/service.pp class mysql::service{ service{"mysql": ensure => running, hasstatus => true, hasrestart => true, enable => true, name => "mysql", require => Package["mysql"], #subscribe => File["/etc/my.cnf"], } } [root@pmaster puppet]# cat modules/mysql/manifests/install.pp class mysql::install{ exec { "unzip tgz packget": command => "tar -xvf /tmp/mysql_test/mysql_test.tgz", ###所有命令必须为全路径或者path参数指定命令搜索路径 path => "/usr/bin:/usr/sbin:/bin:/sbin", cwd => "/tmp/mysql_test", ##命令执行的路径为: /tmp/mysql_test/ creates => "/etc/my.cnf", #当/etc/my.cnf不存在的时候,才会执行该命令 tries => 2, #重试次数 try_sleep => 3, #重试间隔 s为单位 } } |
高级扩展:
Master kick 主动推送配置到agent
*******************************************************************************************
* 为最大限度不影响读者感官: *
* http://fengzhilinux.blog.51cto.com/1343279/1320317另起栏目,也请大家多支持 *
*******************************************************************************************