- 浏览: 50949 次
- 性别:
- 来自: 上海
最新评论
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
服务端:
[root@server ~]# md5sum /var/lib/puppet/ssl/ca/signed/client.puppet.com.pem
f833cbbd129456d3e4df5daec0b612b8 /var/lib/puppet/ssl/ca/signed/client.puppet.com.pem
客户端:
[root@client ~]# 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
环境准备:
[root@server bin]# 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
[root@server bin]# 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
[root@server puppet-2.7.9]# cp conf/auth.conf /etc/puppet/
[root@server puppet-2.7.9]# cp conf/namespaceauth.conf /etc/puppet/
[root@server puppet-2.7.9]# cp conf/redhat/puppet.conf /etc/puppet/
[root@server puppet-2.7.9]# cp conf/redhat/server.init /etc/init.d/puppetmaster
[root@server puppet-2.7.9]# chmod +x /etc/init.d/puppetmaster
[root@server puppet-2.7.9]# /etc/init.d/puppetmaster start
Starting puppetmaster: /bin/bash: /usr/sbin/puppetmasterd: No such file or directory
[FAILED]
[root@server puppet-2.7.9]# cp sbin/puppetmasterd /usr/sbin/
[root@server puppet-2.7.9]# chmod -R 777 /usr/sbin/puppetmasterd
[root@server puppet-2.7.9]# cp sbin/puppetmasterd /bin/puppetmasterd
[root@server puppet-2.7.9]# chmod -R 777 /bin/puppetmasterd
[root@server puppet-2.7.9]# /etc/init.d/puppetmaster start
Starting puppetmaster: /usr/bin/env: ruby: No such file or directory
[FAILED]
[root@server puppet-2.7.9]# ln -s /usr/local/ruby/bin/
erb filebucket pi puppetdoc rdoc ruby
facter irb puppet ralsh ri testrb
[root@server puppet-2.7.9]# ln -s /usr/local/ruby/bin/ruby /usr/bin/
[root@server puppet-2.7.9]# /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]
[root@server puppet-2.7.9]# useradd puppet
[root@server puppet-2.7.9]# /etc/init.d/puppetmaster start
Starting puppetmaster: [ OK ]
[root@server sbin]# pwd
/usr/local/src/puppet-2.7.9/sbin
cp -r * /usr/sbin/
[root@server manifests]# chkconfig --add puppetmaster
[root@server manifests]# chkconfig puppetmaster on
客户端其它安装和服务器安装相同,除了用cp conf/redhat/client.init /etc/init.d/puppet
[root@localhost puppet-2.7.9]# cp conf/auth.conf /etc/puppet/
[root@localhost puppet-2.7.9]# cp conf/namespaceauth.conf /etc/puppet/
[root@localhost puppet-2.7.9]# cp conf/redhat/puppet.conf /etc/puppet/
[root@localhost puppet-2.7.9]# cp conf/redhat/client.init /etc/init.d/puppet
[root@localhost puppet-2.7.9]# chmod +x /etc/init.d/puppet
[root@localhost puppet-2.7.9]# service puppet start
Starting puppet: /bin/bash: /usr/sbin/puppetd: No such file or directory
[FAILED]
[root@localhost puppet-2.7.9]# cp sbin/puppetd /usr/sbin/puppetd
[root@localhost puppet-2.7.9]# service puppet start
Starting puppet: /usr/bin/env: ruby: No such file or directory
[FAILED]
[root@localhost puppet-2.7.9]# chmod +x /usr/sbin/puppetd
[root@localhost puppet-2.7.9]# service puppet start
Starting puppet: /usr/bin/env: ruby: No such file or directory
[FAILED]
[root@localhost puppet-2.7.9]# ln -s /usr/local/ruby/bin/ruby /usr/bin/
[root@localhost puppet-2.7.9]# /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......>:
第一次认证的时候报下边的错误:
[root@client ~]# 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 这条命令是对所有为签名的请求签名。
签过名之后可以看到:
[root@server ~]# 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], }
首先要确定服务器端和客户端都安装了
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
服务端:
[root@server ~]# md5sum /var/lib/puppet/ssl/ca/signed/client.puppet.com.pem
f833cbbd129456d3e4df5daec0b612b8 /var/lib/puppet/ssl/ca/signed/client.puppet.com.pem
客户端:
[root@client ~]# 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
环境准备:
[root@server bin]# 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
[root@server bin]# 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
[root@server puppet-2.7.9]# cp conf/auth.conf /etc/puppet/
[root@server puppet-2.7.9]# cp conf/namespaceauth.conf /etc/puppet/
[root@server puppet-2.7.9]# cp conf/redhat/puppet.conf /etc/puppet/
[root@server puppet-2.7.9]# cp conf/redhat/server.init /etc/init.d/puppetmaster
[root@server puppet-2.7.9]# chmod +x /etc/init.d/puppetmaster
[root@server puppet-2.7.9]# /etc/init.d/puppetmaster start
Starting puppetmaster: /bin/bash: /usr/sbin/puppetmasterd: No such file or directory
[FAILED]
[root@server puppet-2.7.9]# cp sbin/puppetmasterd /usr/sbin/
[root@server puppet-2.7.9]# chmod -R 777 /usr/sbin/puppetmasterd
[root@server puppet-2.7.9]# cp sbin/puppetmasterd /bin/puppetmasterd
[root@server puppet-2.7.9]# chmod -R 777 /bin/puppetmasterd
[root@server puppet-2.7.9]# /etc/init.d/puppetmaster start
Starting puppetmaster: /usr/bin/env: ruby: No such file or directory
[FAILED]
[root@server puppet-2.7.9]# ln -s /usr/local/ruby/bin/
erb filebucket pi puppetdoc rdoc ruby
facter irb puppet ralsh ri testrb
[root@server puppet-2.7.9]# ln -s /usr/local/ruby/bin/ruby /usr/bin/
[root@server puppet-2.7.9]# /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]
[root@server puppet-2.7.9]# useradd puppet
[root@server puppet-2.7.9]# /etc/init.d/puppetmaster start
Starting puppetmaster: [ OK ]
[root@server sbin]# pwd
/usr/local/src/puppet-2.7.9/sbin
cp -r * /usr/sbin/
[root@server manifests]# chkconfig --add puppetmaster
[root@server manifests]# chkconfig puppetmaster on
客户端其它安装和服务器安装相同,除了用cp conf/redhat/client.init /etc/init.d/puppet
[root@localhost puppet-2.7.9]# cp conf/auth.conf /etc/puppet/
[root@localhost puppet-2.7.9]# cp conf/namespaceauth.conf /etc/puppet/
[root@localhost puppet-2.7.9]# cp conf/redhat/puppet.conf /etc/puppet/
[root@localhost puppet-2.7.9]# cp conf/redhat/client.init /etc/init.d/puppet
[root@localhost puppet-2.7.9]# chmod +x /etc/init.d/puppet
[root@localhost puppet-2.7.9]# service puppet start
Starting puppet: /bin/bash: /usr/sbin/puppetd: No such file or directory
[FAILED]
[root@localhost puppet-2.7.9]# cp sbin/puppetd /usr/sbin/puppetd
[root@localhost puppet-2.7.9]# service puppet start
Starting puppet: /usr/bin/env: ruby: No such file or directory
[FAILED]
[root@localhost puppet-2.7.9]# chmod +x /usr/sbin/puppetd
[root@localhost puppet-2.7.9]# service puppet start
Starting puppet: /usr/bin/env: ruby: No such file or directory
[FAILED]
[root@localhost puppet-2.7.9]# ln -s /usr/local/ruby/bin/ruby /usr/bin/
[root@localhost puppet-2.7.9]# /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......>:
第一次认证的时候报下边的错误:
[root@client ~]# 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 这条命令是对所有为签名的请求签名。
签过名之后可以看到:
[root@server ~]# 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], }
发表评论
-
ES安装部署
2021-01-11 11:01 284一,准备工作 1,Es下载链接 https://mirro ... -
计算机基础
2021-01-11 10:53 4581、计算机完整的体系结 ... -
KVM详细安装
2016-02-22 09:59 700KVM详细安装 安装KVM yum -y install q ... -
linux for
2015-09-23 15:44 0for ((i=0;i<10000;i++)); do ... -
sendmail无法发送邮件
2013-07-25 11:57 979sendmail无法发送邮件 后面经过修改。 vi /etc/ ... -
msmtp
2013-06-06 10:43 842原来一直在Linux下使 ... -
sysctl优化脚本
2012-12-28 12:32 964#!/bin/sh sysctl -w net.ipv4.n ... -
linux date
2012-12-19 12:04 823linux date 我使用过的Linux命令之date - ... -
http错误
2012-07-26 17:09 9521xx - 信息提示 这些状态代码表示临时的响应。客户端在收到 ... -
nagios最新详细安装
2012-08-11 11:46 1649nagios最新详细安装 第一部分: 一、开发库等安装 首 ... -
centos_5中文语言包安装
2012-07-06 14:57 636第一:中文语言包: 在一台机子上装了centos 5,刚开始没 ... -
linux包批量安装
2012-06-30 10:09 758yum groupinstall "KDE (K D ... -
Linux系统信息查看命令大全
2012-06-30 09:59 1430系统 # uname -a # 查看内 ... -
python交互式自动部署
2012-06-26 09:06 1816python交互式自动部署 1、首先要做ssh互相信息 2、 ... -
linux下安装expect
2012-06-16 16:29 1438linux下安装expect expect ... -
python一些组件的安装
2012-06-16 16:17 5689paramiko是python(2.2或更高)的模块,遵循SS ... -
ssh不需要密码登录
2012-06-15 09:31 857ssh不需要密码登录 A为登录B、C、D三台机器 A的相关配置 ... -
MegaCli安装
2012-06-13 17:50 0下载地址:wget http://www.eth0.us/fi ... -
rsync配置及报错处理
2012-06-07 17:49 4096服务器端配置文件: 首先安装rsync+xinetd 并启用 ... -
mysql快速安装
2012-06-01 16:08 902一、快速安装mysql准备工作 首先需要保证自己的开发工具包 ...
相关推荐
- **文档内容**:涵盖从环境准备到Puppet组件的详细安装,配置文件的编写,以及如何设置和运行Puppet Master和Agent。 - **读者对象**:适合IT系统管理员、DevOps工程师以及对Puppet感兴趣的任何人。 - **引用标准**...
本文将详细介绍 Puppet 服务端的安装流程。 #### 二、安装必要的基础软件 在安装 Puppet 之前,首先需要确保服务器上安装了一些必要的基础软件包,包括 NTP(网络时间协议)、Cron、Wget、Vim Enhanced 和 Telnet ...
为了测试 Puppet 的客户端/服务器架构,需要在一台服务器上安装 Puppet Master,并在多台客户端机器上安装 Puppet Agent。配置步骤如下: 1. **安装 Puppet Master**: 在服务器上安装 Puppet Server: ```bash ...
本文将详细解析如何在集群上安装与测试Puppet,基于给定的文件内容,我们将深入探讨每一个步骤背后的原理与实践。 ### 一、基础环境准备 #### 1. 安装NTP服务 - **命令行**:`Yum install ntp` - **启动NTP服务**...
接下来,我们详细讨论服务端和客户端的安装步骤: 1. **服务端安装**: - 安装Facter,它是Puppet获取客户端系统信息的组件。通过下载最新稳定版Facter源码并执行安装脚本来完成: ```bash # cd /usr/local/src ...
7. 帮助文档和用户指南:详细介绍如何使用 Puppet 软件,包括手势的设定和操作教程。 使用 Puppet,用户可以享受到更加自然、直观的计算机控制体验,尤其对于那些受限于传统输入设备或者有特殊需求(如身体障碍)的...
在介绍了Puppet的安装、配置和工作原理之后,下面详细解释各个部分的知识点。 一、Puppet入门介绍 Puppet作为自动化配置管理工具,其目的在于简化软件和硬件的配置过程。Puppet支持多种操作系统,如Linux、Windows...
- **第2章:Building Hosts with Puppet**:详细介绍如何使用Puppet构建和配置主机,包括资源类型、依赖关系以及如何使用条件语句。 - **第3章:Working with Environments**:讲解Puppet如何管理不同环境下的配置,...
Puppet的文档非常详细,为用户提供了全面的指导和支持。用户可以轻松地找到关于如何安装和使用Puppet的信息,包括各种使用经验分享、特性探讨以及Openstack部署方案分析等。即使如此,本文并不聚焦于这些内容,而是...
Puppet运行完成后,它会生成详细的报告,显示哪些资源已改变、成功或失败。这些报告有助于监控系统状态和故障排查。日志文件通常位于`/var/log/puppetlabs/puppetserver/puppetserver.log`和`/var/log/puppetlabs/...
书中详细讲解了Puppet的基础知识,包括安装与设置环境、Puppet的架构和组件、资源类型与属性、类和定义、节点分类与分发、模块化设计、Hiera数据层次化管理以及Puppet的运行周期和反馈机制。此外,还涵盖了Puppet在...
本文将详细介绍如何利用Puppet搭建一套完整的LAMP环境。 #### 二、准备工作:文件服务器的配置 在搭建LAMP环境之前,首先需要准备一个文件服务器来存放各种配置文件和软件包。具体步骤如下: 1. **配置YUM源** - ...
- 需要在Master节点上安装Puppet Server,并在Agent节点上安装Puppet Agent。 - 可以通过官方文档中的指南进行安装。 **简单案例:** - 使用Puppet Manifests来配置Web服务器和数据库服务器。 **与Docker的关系:*...
6. **报告与日志**:Puppet提供详细的执行报告和日志,帮助管理员了解配置变更的过程和结果,以便于故障排查和审计。 7. **Facter**:Puppet自带的Facter工具用于收集系统信息,这些信息可供Puppet配置使用,如操作...
本文将详细介绍 Puppet 的运维管理工作流程、数据流向、原理,以及配置过程。 一、概述 1. 运维工作:运维是确保系统稳定运行的关键,涉及到服务器监控、性能优化、故障排查、软件更新等多个方面。手动处理这些...
- **安装Puppet**:书中详细讲解了Puppet的安装流程,确保读者能够顺利地在自己的系统上部署Puppet环境。 - **Manifest语法**:介绍了Puppet的核心——manifest文件的编写规则,包括如何使用各种内置函数。 - **内置...
首先,要进行OpenStack的自动化部署,我们需要对Puppet的安装和使用有一定的了解。Puppet是一种基于Ruby的自动化配置管理工具,它允许系统管理员通过声明式的配置语言来定义IT基础设施的代码,从而实现系统配置的...
"puppet101:使用 puppet 从安装到生产的指南"旨在帮助初学者了解并掌握 Puppet 的基本概念、安装过程以及如何在实际生产环境中运用。在这个指南中,我们将深入探讨 Puppet 的核心特性,包括其工作原理、模块化设计、...