puppet详细安装

puppet详细安装
首先要确定服务器端和客户端都安装了
gcc-c++、openssl、openssl-devel
cronte -e
*/2 * * * * /usr/sbin/ntpdate clock.nc.fukuoka-u.ac.jp >/dev/null 2>&1


rpm -Uvh http://mirrors.sohu.com/fedora-epel/5Server/x86_64/epel-release-5-4.noarch.rpm
yum -y install mysql* ruby-mysql ruby ruby-devel ruby-irb ruby-rdoc ruby-ri
查看版本ruby -v
cd /usr/local/src/
wget http://puppetlabs.com/downloads/facter/facter-latest.tgz
tar -zxvf facter-latest.tgz && cd facter-1.6.6
ruby install.rb
服务器端安装puppet-server

rpm -Uvh http://mirrors.sohu.com/fedora-epel/5Server/x86_64/epel-release-5-4.noarch.rpm
yum install puppet-server
vi /etc/hosts
192.168.1.231 server.cbcv.net server
192.168.1.232 client.cbcv.net client
vi /etc/sysconfig/network
HOSTNAME=server.cbcv.net

service puppetmaster start
时间需要同步
/usr/sbin/ntpdate clock.nc.fukuoka-u.ac.jp


客户端
rpm –Uvh http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
yum install puppet


puppetd --server server.cbcv.net --test

服务端:
# md5sum /var/lib/puppet/ssl/ca/signed/client.puppet.com.pem
f833cbbd129456d3e4df5daec0b612b8 /var/lib/puppet/ssl/ca/signed/client.puppet.com.pem
客户端:
# md5sum /var/lib/puppet/ssl/certs/client.puppet.com.pem
f833cbbd129456d3e4df5daec0b612b8 /var/lib/puppet/ssl/certs/client.puppet.com.pem
上边揭黑部分的两串代码相同,说明客户端和服务端的认证签名完成。
注意:
如果想重新生成签名可以先在服务端用puppetca –clean client.puppet.com清除服务端的证书,然后在客户端删除/var/lib/puppet这个文件夹,删除之后再认证的话可以重新生成这个文件夹
在主服务器上/etc/puppet/manifests

vi /etc/puppet/manifests/site.pp
node default{
file { "/tmp/tmp1.txt":
content=> "hello, first puppet manifest";
}
}


然后在客户端执行:
puppetd --test --server server.cbcv.net
再查看/tmp/看是否生成tmp1.txt


1、puppet 用户管理特性
allows_duplicates: 支持同样的用户拥有同样的uid
manages_homedir: 管理用户的home目录,删除和新建
manages_passwords: 管理用户密码
manages_solaris_rbac: 管理角色和普通用户
puppet 用户资源管理参数
allowdupe: 是否允许相同的uid用户存在,可以设置的值为true或者false.
auths: 指定用户的认证方式。多个认证方式可用数组列出来
comment: 用户的描述。
ensure: 指定用户是否存在,可以设置的值为present,absent,role.
gid :用户的组ID。
groups:指定该用户属于那些组的成员.
home: 用户的主目录。
managehome: 指定用户是否管理home主目录.
provider
指定用provider,用什么命令来执行用户操作,可用的provider有:
directoryservice OS X 上面的用户管理命令,不详述,有需求请参考原文档
hpuxuseradd hp-ux 系统的用户管理命令
ldap ldap方式管理用户
pw freebsd上面的用户管理
user_role_add solaris 上面的用户管理
useradd linux上面的用户管理


puppet和facter下载地址:


http://downloads.puppetlabs.com/puppet/
ruby下载地址:

http://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7.tar.gz

环境准备:
# more /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
#127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
192.168.1.231 server.cbcv.net server
192.168.1.232 client.cbcv.net client
# more /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=server.cbcv.net

<客户端也是类似一样,略......>


tar -zxvf ruby-1.8.7.tar.gz
cd ruby-1.8.7
./configure --prefix=/usr/local/ruby
make
make install
操作系统PATH路径:
export PATH=/usr/local/ruby/bin:$PATH

查看ruby --version版本

安装facter
tar -zxvf facter-1.6.7.tar.gz
cd facter-1.6.7
ruby install.rb

安装puppet
tar -zxvf puppet-2.7.13.tar.gz
# cp conf/auth.conf /etc/puppet/
# cp conf/namespaceauth.conf /etc/puppet/
# cp conf/redhat/puppet.conf /etc/puppet/
# cp conf/redhat/server.init /etc/init.d/puppetmaster
# chmod +x /etc/init.d/puppetmaster
# /etc/init.d/puppetmaster start
Starting puppetmaster: /bin/bash: /usr/sbin/puppetmasterd: No such file or directory
[FAILED]

# cp sbin/puppetmasterd /usr/sbin/
# chmod -R 777 /usr/sbin/puppetmasterd
# cp sbin/puppetmasterd /bin/puppetmasterd
# chmod -R 777 /bin/puppetmasterd
# /etc/init.d/puppetmaster start
Starting puppetmaster: /usr/bin/env: ruby: No such file or directory
[FAILED]
# ln -s /usr/local/ruby/bin/
erb filebucket pi puppetdoc rdoc ruby
facter irb puppet ralsh ri testrb
# ln -s /usr/local/ruby/bin/ruby /usr/bin/
# /etc/init.d/puppetmaster start
Starting puppetmaster: Could not prepare for execution: Got 6 failure(s) while initializing: change from absent to directory failed: Could not set 'directory on ensure: Could not find group puppet; change from absent to directory failed: Could not set 'directory on ensure: Could not find group puppet; change from absent to directory failed: Could not set 'directory on ensure: Could not find group puppet; change from absent to directory failed: Could not set 'directory on ensure: Could not find group puppet; change from absent to directory failed: Could not set 'directory on ensure: Could not find group puppet; change from absent to directory failed: Could not set 'directory on ensure: Could not find group puppet
[FAILED]
# useradd puppet
# /etc/init.d/puppetmaster start
Starting puppetmaster: [ OK ]

# pwd
/usr/local/src/puppet-2.7.9/sbin
cp -r * /usr/sbin/


# chkconfig --add puppetmaster
# chkconfig puppetmaster on


客户端其它安装和服务器安装相同,除了用cp conf/redhat/client.init /etc/init.d/puppet
# cp conf/auth.conf /etc/puppet/
# cp conf/namespaceauth.conf /etc/puppet/
# cp conf/redhat/puppet.conf /etc/puppet/
# cp conf/redhat/client.init /etc/init.d/puppet
# chmod +x /etc/init.d/puppet
# service puppet start
Starting puppet: /bin/bash: /usr/sbin/puppetd: No such file or directory
[FAILED]
# cp sbin/puppetd /usr/sbin/puppetd
# service puppet start
Starting puppet: /usr/bin/env: ruby: No such file or directory
[FAILED]
# chmod +x /usr/sbin/puppetd
# service puppet start
Starting puppet: /usr/bin/env: ruby: No such file or directory
[FAILED]
# ln -s /usr/local/ruby/bin/ruby /usr/bin/
# /etc/init.d/puppet start
Starting puppet: [ OK ]


进行测试:
在服务器端执行:
puppetca --list
应该是无
在客户端执行 puppetd --server server.cbcv.net --test
再到服务器端执行:
puppetca –s client.cbcv.net
clinet.cbcv.net (BF:5D:58:D0:F2:06:8C:FB:5C:AA:08:80:87:DC:92:20)

如果看到了客户端的证书请求,
针对客户端请求为
puppetca –s client.cbcv.net
用下面的命令对所有证书请求签名:
puppetca -s –a

在主服务器上/etc/puppet/manifests

vi /etc/puppet/manifests/site.pp
node default{
file { "/tmp/test.txt":
content=> "hello, Test";
}
}

再重启一下服务器service puppetmaster restart 和客户端service puppet restart
再执行puppetd --server server.cbcv.net --test
看/tmp下面是不是有test.txt文件了


2、文件传输


默认时间vim /etc/puppet/puppet.con
server = puppet-server #指定服务端

runinterval =1800 ###默认是30分钟,可以修改此处的值,单位为秒
在客户端修改即可!最好重启一下server puppet restart

puppet 如何全客户端自动签名
a.vim /etc/puppet/puppet.conf
[puppetmaster]
autosign=true #增加这两行
autosing=/etc/puppet/autosign.conf
#增加这两行添加
* 表示所有,或者添加域名,IP或者网段。举例:
b.再编辑 /etc/puppet/autosign.conf**.test.com192.168.0.1/24


错误总结<此错误是因为用了yum去安装。看到别人写的OK......>:
第一次认证的时候报下边的错误:
# puppetd --server server.cbcv.net --test
err: Could not retrieve catalog from remote server: certificate verify failed
我做测试发现的原因有三种:
第一:是hostname没有设置好,在安装前一定要把hostname设置好,设置好之后尽量重启机器。实在不行就删了重新安装。
第二:时间不同步,时间不同步也会报认证失败的错误,可以用date设置时间,只要不是差得太多就没事。
第三:是ssl的问题,在你用的这个客户端puppet已经做过其他的机器的客户端的情况下,因为已经生成的有证书,可能会和现在的冲突,把/var/lib/puppet/ssl这个文件夹删掉之后就行了。


1.3配置c/s模式的puppet的实验环境
Puppet的的客户端和服务端是靠ssl链接的,在服务端有一个自签名的根证书,在安装软件的时候自动生成。每个客户端的证书要经过根证书签名才能和服务器连接。所以首先要在客户端执行下面的命令来请求服务器签名证书。
puppetd --server server.cbcv.net --test


执行上面的命令,客户端将生成证书,并且把证书签名请求发到服务器端。登录到服务
器端,执行下面的命令查看是否有客户端的证书请求:
puppetca --list 这个查看没有签名的证书
client..cbcv.net
如果看到了客户端的证书请求,用下面的命令对所有证书请求签名:
puppetca –s client.cbcv.net
或者puppetca -s –a 这条命令是对所有为签名的请求签名。
签过名之后可以看到:
# puppetca --list --all
puppetca --list --all
+ client.cbcv.net (A1:6C:15:FF:36:8C:F0:9A:89:BA:E1:2B:39:34:5C:3A)
+ server.cbcv.net (75:66:8E:DD:F0:A4:F2:ED:6F:B0:88:74:A0:CD:C8:48)

如果出现这些就说明签名完成。


puppet记录
1. 修改文件属性的site.pp
file { "/home/1.txt":
owner => "root",
group => "root",
mode => 644,
}
2.执行shell命令
exec { "echo111":
cwd => "/tmp",
command => " echo abcd >> /home/1.txt",
user => "root",
path => "/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin",
}

3.文件传输
需要有fileserver.conf例如
[abc]
path /etc/puppet/files/
allow *
其中 site.pp的设置如下
file { "/home/test.txt":
source => "puppet://puppet/abc/test.txt",
}
此处的abc为fileserver.conf中定义模块
其前面的蓝色部分是puppet server端的名称(在hosts中解析,未使用DNS)

4.服务检查及修改
可以通过puppet对一些服务进行检查。puppet是通过service命令操作的。所以,只能针对在/etc/init.d/目录下的服务
site.pp的配置示例
service { portmap:
ensure => "stopped",
}
ensure 还有一个参数是 running 如果服务停止,puppet会让服务启动。

puppet.conf
[puppetmasterd]
reports = store
hostprivkey = /etc/puppet/ssl/private_keys/sh-zj1.tele.trac.i.vmx.cn.pem
hostcsr = /etc/puppet/ssl/csr_sh-zj1.tele.trac.i.vmx.cn.pem
hostpubkey = /etc/puppet/ssl/public_keys/sh-zj1.tele.trac.i.vmx.cn.pem
hostcert = /etc/puppet/ssl/certs/sh-zj1.tele.trac.i.vmx.cn.pem
autosign = true


5.cron
cron { "test1": #title部分,可用来作为注释。
ensure => absent, #删除相应的crontab
command => "( /bin/echo 123 >/home/lipengfei/abc )", #要执行的命令
user => "root", #添加到root用户下的crontab中
minute => "*/3", #即第一个星号
hour => ['2-4'], #即第二个星号
monthday => "21", #即第三个星号
month => "12", #即第四个星号
weekday => "2", #即第五个星号
}
说明:absent 选项可以支持 cron中的5个时间位置,如:monthday => absent,
即把 monthday 对应该的位置至为 *


增加多个site.pp

可以先在site.pp中增加

import "test.pp"

然后再在里面执行需要操作的内容。

可用puppetd --server server.cbcv.net --test进行测试。

如果有报错:notice: Ignoring --listen on onetime run
notice: Skipping run of Puppet configuration client; administratively disabled; use 'puppet Puppet configuration client --enable' to re-enable.

那么需要在客户端执行puppet agent --enable即可。

puppet agent --disable为关闭。


资源:
常用的资源主要有以下几个:
file:文件管理
package:软件包管理
service:系统服务管理
cron:配置定时任务
exec:运行shell命令
定义一个资源,需要指定资源的类型和title。看下例:


file { “/etc/password”: name => “/etc/passwd”, owner => root, group => root, mode => 644; } 上边代码:file是指定资源的类型,第二行的”/etc/password”是资源的title,title的作用是让puppet能唯一识别这个资源。后边的三个就不用说了。 下一个例子:

file { "/etc/ssh/sshd_config": mode => 0644, owner => root , group => root, source => puppet://$fileserver/ssh/sshd_config ", } Service { “sshd”: subscribe => File[/etc/sshd/sshdconfig], }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值