- 浏览: 49607 次
- 性别:
- 来自: 上海
最新评论
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 244一,准备工作 1,Es下载链接 https://mirro ... -
计算机基础
2021-01-11 10:53 4141、计算机完整的体系结 ... -
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 937sendmail无法发送邮件 后面经过修改。 vi /etc/ ... -
msmtp
2013-06-06 10:43 804原来一直在Linux下使 ... -
sysctl优化脚本
2012-12-28 12:32 927#!/bin/sh sysctl -w net.ipv4.n ... -
linux date
2012-12-19 12:04 766linux date 我使用过的Linux命令之date - ... -
http错误
2012-07-26 17:09 9111xx - 信息提示 这些状态代码表示临时的响应。客户端在收到 ... -
nagios最新详细安装
2012-08-11 11:46 1649nagios最新详细安装 第一部分: 一、开发库等安装 首 ... -
centos_5中文语言包安装
2012-07-06 14:57 636第一:中文语言包: 在一台机子上装了centos 5,刚开始没 ... -
linux包批量安装
2012-06-30 10:09 709yum groupinstall "KDE (K D ... -
Linux系统信息查看命令大全
2012-06-30 09:59 1385系统 # uname -a # 查看内 ... -
python交互式自动部署
2012-06-26 09:06 1766python交互式自动部署 1、首先要做ssh互相信息 2、 ... -
linux下安装expect
2012-06-16 16:29 1359linux下安装expect expect ... -
python一些组件的安装
2012-06-16 16:17 5643paramiko是python(2.2或更高)的模块,遵循SS ... -
ssh不需要密码登录
2012-06-15 09:31 827ssh不需要密码登录 A为登录B、C、D三台机器 A的相关配置 ... -
MegaCli安装
2012-06-13 17:50 0下载地址:wget http://www.eth0.us/fi ... -
rsync配置及报错处理
2012-06-07 17:49 4025服务器端配置文件: 首先安装rsync+xinetd 并启用 ... -
mysql快速安装
2012-06-01 16:08 874一、快速安装mysql准备工作 首先需要保证自己的开发工具包 ...
相关推荐
强大的puppet。linux管理的好工具。 服务端安装的详细流程。
《Puppet实战》一共20章,共分为四部分:准备篇(第1~4章)介绍了Puppet用途、组织结构、工作原理、核心配置文件、各种平台下的安装与配置,以及它的运行环境,是使用Puppet前必须做好的准备工作;基础篇(第5~10...
脚本get-maestro.sh可以使用所有必需的 Maestro Puppet 配置安装 Puppet master,并触发 Puppet 更新以从最小的 CentOS 6.3 服务器安装 Maestro 和 Maestro 代理。 您可以从最小的 CentOS 6.3 服务器运行脚本以自动...
Puppet非常适合管理基础结构,但是存在将鸡皮蛋最初安装在计算机上的麻烦,但是随后的Puppet可以接管其余的系统设置。 该存储库包含一些小脚本,它们足以引导您的系统,以便Puppet可以接管。 请通过分叉并发送对您...
安装mod 'k8s_workernode', :git => 'https://github.com/arrnorets/puppet-k8s_workernode.git', :ref => 'main' 4. Hiera和结果文件中的配置示例该模块遵循所谓的“木偶中的XaaH”的概念。在和描述这些原理。这是...
能够直接编辑文件或通过提供的参数进行编辑,详细信息如下 安装 在人偶主文件上,编辑puppet.conf : [master] node_terminus = exec external_nodes = <location>/enc.py enc.py将在脚本的相对位置生成一个db....
达格比DYNAmic Git 管理的 pUPPet,是的! Dynaguppy](dynaguppy) 是一个自组装 Puppet 框架,它使用来管理 ...引导傀儡大师Dynaguppy 被开发为安装在 Ubuntu 14.04 LTS 服务器上并将其设置为 Puppet Master,其他发行
偶尔需要做新机安装系统时,总觉得用镜像不稳妥,手工装太麻烦,Puppet也不一定都带着。 于是乎,做了个本无人值守自动安装LAMP和Tomcat的 /*========== 主要特性 ==========*/ 关闭SELinux 安装Aapache 2.2.0 ...
木偶rpm -Uvh yum -y install puppet-agent引导程序echo -e“ [main] \ nserver =” >> /etc/puppetlabs/puppet/puppet.conf如果不是第一次安装找到/ etc / puppetlabs / puppet / -name“ $ {hostname) ” -delete...
有关可接受的参数值的更多详细信息,请参见。参数设定参数user :自定义用户保管库的运行方式,除非manage_user为false,否则还将创建用户。 manage_user :模块是否应创建用户。 group :自定义组保管库的运行方式...
有关puppet-compiler的更详细的了解,请访问 。 支持的Ruby + Puppet版本 Ruby的支持版本<>木偶组合被列在。 未列出的组合可能有效,但尚未经过测试。 安装 gem install puppet-catalog-test 用法 $ puppet-...
弃用通知 该模块是为Puppet版本2和3设计的。它也可以在Puppet 4上运行,但不使用其任何功能。... 有关Example42模块的逻辑和使用模式的详细信息,请查看Example42主模块集上的DOCS目录。 用法-基本管理 使用自定义dns服
人偶模块:shinken 这是一个基于 Example42 Puppet Modules 的第二代布局(... 只需在 puppet 模块根目录中运行 'bundler install' 即可轻松安装。 有关 Example42 模块的逻辑和使用模式的详细信息,请检查 Exa
有关 Example42 模块的逻辑和使用模式的详细信息,请检查 Example42 主要模块集上的 DOCS 目录。 用法 - 基本管理 使用默认设置安装 php class { 'php': } 安装特定版本的 php 包 class { 'php': version => '...
此人偶模块用于安装和配置人群应用程序。 Atlassian Crowd是单点登录(SSO)和身份管理服务。 配置 依存关系 当前的依赖关系是: puppetlabs / stdlib 姆克拉科维策/部署 maestrodev / wget 用法 class { '...
下面的README模板提供了一个起点,其中包含有关自述文件中包含哪些信息的详细信息。 目录 描述 简要告诉用户为什么他们可能要使用您的模块。 说明模块的功能以及用户可以解决的问题。 这应该是一个简短的描述,有...
此博客文章中提供了详细信息和屏幕截图: : 配置完成后,将有两个Docker容器可用-一个带有StreamExplorer(和OEP)服务器并已运行的容器,另一个带有JDeveloper 12.1.3来为SX / OEP环境提供IDE的容器。 可以通过...
使用Vagrant和VirtualBox在多个VM上安装Foreman和Puppet代理使用Vagrant和VirtualBox自动安装和配置开源基础设施生命周期管理工具Foreman,以及多个Puppet Agent VM。 该项目是我的博客文章“。 centos7分支创建于...
木偶WP-CLI 通过该模块,可以轻松使用WP CLI通过Puppet清单来控制WordPress网站。 它为常见的WP CLI命令提供了简单的抽象,并根据需要安装WP CLI二进制文件。 文献资料 详细文档可在。
有关更多配置详细信息,请参见init.pp 参数: swapon-设置为false以禁用交换。 默认为开(true) swapfile_path-默认为/ mnt,这是EC2实例上的快速临时文件系统。 这样可以在避免EBS上的I / O费用的同时保持合理...