puppet Server: 172.18.60.200
puppet Client: 172.18.60.59 172.18.60.88
一、下载地址
puppet下载地址:
http://downloads.puppetlabs.com/puppet/puppet-2.7.22.tar.gz
facter下载地址:
http://downloads.puppetlabs.com/facter/facter-1.6.18.tar.gz
ruby下载地址:
http://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7.tar.gz
二、环境准备
1.时间必须一致:
crontab -e
*/2 * * * * /usr/sbin/ntpdate clock.nc.fukuoka-u.ac.jp >/dev/null 2>&1
2.必須安装:gcc-c++、install openssl*
3.修改主機名: 服务器及客户端一样
[root@zserpap ~]# more /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
#127.0.0.1 ZSAP localhost.localdomain localhost
#172.18.60.200 ZSAP localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
172.18.60.200 zserpap.zs_py.com.cn zserpap
172.18.60.59 pyytestdb.zs_py.com.cn pyytestdb
172.18.60.88 zsperdb.zs_py.com.cn zsperdb
[root@zserpap ~]# more /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=zserpap.zs_py.com.cn
GATEWAY=172.18.60.254
[root@zserpap ~]# hostname zserpap.zs_py.com.cn
4.检查防火墙确保8140端口开放.
禁用防火墙和SELinux
service iptables stop
chkconfig iptables off
setenforce 0
cat /etc/sysconfig/selinux <<EOF
SELINUX=disabled
SELINUXTYPE=targeted
EOF
三、安装应用软件
1、首先安装ruby
tar -zxvf ruby-1.8.7.tar.gz
cd ruby-1.8.7
./configure --prefix=/usr/local/ruby
make
make install
操作系统PATH路径:
vi /etc/profile
export PATH=/usr/local/ruby/bin:$PATH
查看ruby --version版本
顯示ruby的lib搜索路徑:
$ ruby -e 'puts $:'
安裝 rubygems
ruby setup.rb
puppet要求gem在1.3.4以下.
2、安装facter
tar -zxvf facter-1.6.18.tar.gz
cd facter-1.6.18
ruby install.rb
3、安装puppet
tar -zxvf puppet-2.7.22.tar.gz
cd puppet-2.7.22/
ruby install.rb
[root@zserpap puppet-2.7.22]# cp conf/auth.conf /etc/puppet/
[root@zserpap puppet-2.7.22]# cp conf/namespaceauth.conf /etc/puppet/
[root@zserpap puppet-2.7.22]# cp conf/redhat/puppet.conf /etc/puppet/
[root@zserpap puppet-2.7.22]# cp conf/redhat/server.init /etc/init.d/puppetmaster
[root@zserpap puppet-2.7.22]# chmod +x /etc/init.d/puppetmaster
[root@zserpap puppet-2.7.22]# /etc/init.d/puppetmaster start
Starting puppetmaster: /bin/bash: /usr/sbin/puppetmasterd: No such file or directory
[FAILED]
[root@zserpap puppet-2.7.22]# cp sbin/puppetmasterd /usr/sbin/
[root@zserpap puppet-2.7.22]# chmod -R 777 /usr/sbin/puppetmasterd
[root@zserpap puppet-2.7.22]# cp sbin/puppetmasterd /bin/puppetmasterd
[root@zserpap puppet-2.7.22]# chmod -R 777 /bin/puppetmasterd
[root@zserpap puppet-2.7.22]# /etc/init.d/puppetmaster start
Starting puppetmaster: /usr/bin/env: ruby: No such file or directory
[FAILED]
[root@zserpap puppet-2.7.22]# ls /usr/local/ruby/bin/
erb filebucket pi puppetdoc rdoc ruby
facter irb puppet ralsh ri testrb
[root@zserpap puppet-2.7.22]# ln -s /usr/local/ruby/bin/ruby /usr/bin/
[root@zserpap puppet-2.7.22]# /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@zserpap puppet-2.7.22]# useradd puppet
[root@zserpap puppet-2.7.22]# /etc/init.d/puppetmaster start
Starting puppetmaster: [ OK ]
[root@zserpap sbin]# pwd
/usr/local/src/puppet-2.7.22/sbin
cp -r * /usr/sbin/
[root@zserpap manifests]# chkconfig --add puppetmaster
[root@zserpap manifests]# chkconfig puppetmaster on
客户端其它安装和服务器安装相同,除了用 cp conf/redhat/client.init /etc/init.d/puppet
tar -zxvf puppet-2.7.22.tar.gz
cd puppet-2.7.22/
ruby install.rb
[root@pyytestdb puppet-2.7.22]# cp conf/auth.conf /etc/puppet/
[root@pyytestdb puppet-2.7.22]# cp conf/namespaceauth.conf /etc/puppet/
[root@pyytestdb puppet-2.7.22]# cp conf/redhat/puppet.conf /etc/puppet/
[root@pyytestdb puppet-2.7.22]# cp conf/redhat/client.init /etc/init.d/puppet
[root@pyytestdb puppet-2.7.22]# chmod +x /etc/init.d/puppet
[root@pyytestdb puppet-2.7.22]# service puppet start
Starting puppet: /bin/bash: /usr/sbin/puppetd: No such file or directory
[FAILED]
[root@pyytestdb puppet-2.7.22]# cp sbin/puppetd /usr/sbin/puppetd
[root@pyytestdb puppet-2.7.22]# service puppet start
Starting puppet: /usr/bin/env: ruby: No such file or directory
[FAILED]
[root@pyytestdb puppet-2.7.22]# chmod +x /usr/sbin/puppetd
[root@pyytestdb puppet-2.7.22]# service puppet start
Starting puppet: /usr/bin/env: ruby: No such file or directory
[FAILED]
[root@pyytestdb puppet-2.7.22]# ln -s /usr/local/ruby/bin/ruby /usr/bin/
[root@pyytestdb puppet-2.7.22]# /etc/init.d/puppet start
Starting puppet: [ OK ]
启动服务
chkconfig puppet on
service puppet start
安装完毕后进行测试:
在服务器端执行:
# puppetca --list
应该是无
在服务端查看验证签名,注意前面的+号,说明已经签名
# puppetca -a --list
在客户端执行
[root@pyytestdb ~]# puppetd --server zserpap.zs_py.com.cn --test
info: Caching certificate for ca
info: Creating a new SSL certificate request for pyytestdb.zs_py.com.cn
info: Certificate Request fingerprint (md5): F0:83:B6:70:D4:C0:D2:40:C2:CD:5B:B3 :00:31:D4:39
Exiting; no certificate found and waitforcert is disabled
再到服务器端执行:
[root@zserpap ~]# puppetca –s pyytestdb.zs_py.com.cn
Invalid method –s to apply
如果看到了客户端的证书请求,
针对客户端请求为
puppetca –s pyytestdb.zs_py.com.cn
用下面的命令对所有证书请求签名:
puppetca -s –a
[root@zserpap ~]# puppetca -s -a
notice: Signed certificate request for pyytestdb.zs_py.com.cn
notice: Removing file Puppet::SSL::CertificateRequest pyytestdb.zs_py.com.cn at '/var/lib/puppet/ssl/ca/requests/pyytestdb.zs_py.com.cn.pem'
在主服务器上/etc/puppet/manifests
vi /etc/puppet/manifests/site.pp
node default{
file { "/tmp/puppet_test.txt":
content=> "hello, This is test of PUPPET";
}
}
再重启一下服务器 service puppetmaster restart 和客户端 service puppet restart
再执行 puppetd --server zserpap.zs_py.com.cn --test
[root@pyytestdb ~]# puppetd --server zserpap.zs_py.com.cn --test
info: Caching certificate for pyytestdb.zs_py.com.cn
info: Caching certificate_revocation_list for ca
info: Caching catalog for pyytestdb.zs_py.com.cn
info: Applying configuration version '1372658911'
notice: /Stage[main]//Node[default]/File[/tmp/test.txt]/ensure: defined content as '{md5}100b144907af2a4786003758a0a6a563'
info: Creating state file /var/lib/puppet/state/state.yaml
notice: Finished catalog run in 0.03 seconds
看/tmp下面是不是有 puppet_test.txt 文件了
==============================================================================================================================
增加多个site.pp
可以先在site.pp中增加
import "test.pp"
然后再在里面执行需要操作的内容。
可用 puppetd --server zserpap.zs_py.com.cn --test 进行测试。
如果有报错
err: Could not retrieve catalog from remote server: Error 400 on SERVER: Node 'default' is already defined at /etc/puppet/manifests/test.pp:1; cannot redefine at /etc/puppet/manifests/site.pp:2 on node zsperdb.zs_py.com.cn
warning: Not using cache on failed catalog
err: Could not retrieve catalog; skipping run
那么需要在客户端执行 puppet agent --enable 即可。
puppet agent --disable 为关闭。
记得重启 puppetmaster 和 puppet
参考内容:
默认时间 vi /etc/puppet/puppet.con
runinterval =1800 ###默认是30分钟,可以修改此处的值,单位为秒
有的时间修改了这个没有用,是什么原因呢:
我也曾修改过多次,没效果,后在客户端的配置文件再加了一句 server = zserpap.zs_py.com.cn
然后重启
在客户端修改即可!最好重启一下 service puppet restart
puppet 如何全客户端自动签名
a. vi /etc/puppet/puppet.conf
[puppetmaster]
autosign=true #增加这两行
autosing=/etc/puppet/autosign.conf
#增加这两行添加
* 表示所有,或者添加域名,IP或者网段。举例:
b.再编辑 /etc/puppet/autosign.conf
*
*.test.com
192.168.0.1/24
错误总结:
第一次认证的时候报下边的错误:
[root@client ~]# puppetd --server zserpap.zs_py.com.cn --test
err: Could not retrieve catalog from remote server: certificate verify failed
原因有三种:
第一:是hostname没有设置好,在安装前一定要把hostname设置好,设置好之后尽量重启机器。实在不行就删了重新安装。
第二:时间不同步,时间不同步也会报认证失败的错误,可以用date设置时间,只要不是差得太多就没事。
第三:是ssl的问题,在你用的这个客户端puppet已经做过其他的机器的客户端的情况下,因为已经生成的有证书,可能会和现在的冲突,把/var/lib/puppet/ssl这个文件夹删掉之后就行了。
配置c/s模式的puppet的实验环境
Puppet的的客户端和服务端是靠ssl链接的,在服务端有一个自签名的根证书,在安装软件的时候自动生成。每个客户端的证书要经过根证书签名才能和服务器连接。所以首先要在客户端执行下面的命令来请求服务器签名证书。
puppetd --server zserpap.zs_py.com.cn --test
參考:
http://qinghua.blog.51cto.com/202629/837268
http://www.chenshake.com/puppet-study-notes/
相关推荐
1. 下载 Puppet 的源代码: ```bash wget http://downloads.puppetlabs.com/puppet/puppet-2.7.14.tar.gz ``` 2. 解压并进入解压后的目录: ```bash tar -zxvf puppet-2.7.14.tar.gz cd puppet-2.7.14 ``` ...
##### 2.3 源代码安装 Puppet 除了通过软件包管理器安装 Puppet 外,还可以从源代码编译安装,这对于定制化需求较高的场景尤为适用。首先需要安装必要的构建工具,如 gcc、make 等,然后下载 Puppet 的源代码并编译...
- 安装Puppet,同样下载最新稳定版Puppet源码并执行安装脚本: ```bash # wget http://puppetlabs.com/downloads/puppet/puppet-latest.tgz # cd puppet-* # ruby install.rb ``` - 配置Puppet,创建 `/etc/...
##### 2.3 从源代码安装 Puppet 如果需要从源代码编译安装 Puppet,则需要先获取 Puppet 的源代码,然后按照官方文档中的说明进行编译安装。这通常适用于需要自定义 Puppet 功能的情况。 ##### 2.4 配置 C/S 模式...
为了简化安装过程,创建了一个本地的安装源,位于`http://192.168.1.111/CentOS/x86_64/puppet-server/`。 ##### 2.3 服务器端安装 服务器端的安装涉及Ruby环境的搭建、Puppet Server的安装以及相关依赖库的配置。...
此外,还提供了源代码安装的方法,满足特定环境下的需求。配置C/S模式的Puppet试验环境,涉及服务器端与客户端的设置,确保二者之间的通信畅通无阻。 #### Puppet语法详解:构建配置管理的基础 Puppet的语法设计...
1. **安装与更新**:`puppet-nginx` 可以自动处理 Nginx 的安装,无论是从源码编译还是通过包管理器如 apt 或 yum 安装。同时,它可以确保 Nginx 的版本保持最新。 2. **配置管理**:该模块允许用户定义 Nginx 配置...
4. **Puppet Server配置**:在Puppet Server的配置文件`puppetserver.conf`中,需要指定代码存储的位置。例如: ```ruby [main] code_dir = /etc/puppetlabs/code [master] environment_timeout = 86400 ...
对于源代码安装,需要下载Puppet源代码,编译并安装。配置客户端-服务器模式时,需要在Master上设置认证和SSL证书,并在Agent上配置Master的地址。 ### 3. Puppet语法 - **资源**:Puppet中的核心概念,代表系统中...
在"puppet-2.7.9"的压缩包中,包含的文件很可能是Puppet的源码或者预编译的二进制包,用于在Linux系统上安装和运行Puppet。安装这个版本的Puppet后,用户可以通过配置Puppet Master和Agent来实现对多台服务器的集中...
首先,要进行OpenStack的自动化部署,我们需要对Puppet的安装和使用有一定的了解。Puppet是一种基于Ruby的自动化配置管理工具,它允许系统管理员通过声明式的配置语言来定义IT基础设施的代码,从而实现系统配置的...
一个从源代码完全安装ZoneMinder的人偶模块。 运行此模块后,您将从ZoneMinder GitHub存储库的master分支中的最新代码中安装可用的ZoneMinder。 该模块旨在在新安装的新Ubuntu服务器上运行。 现在听到这个-警告 这个...
通过定义基础设施即代码(Infrastructure as Code, IaC),Puppet 能够确保服务器按照预设的标准状态运行。这大大减少了手动配置的时间,并提高了系统的可预测性和一致性。 ##### Puppet 的工作模型 Puppet 采用了...
Puppet 遵循 GPLv2 许可协议,允许用户自由地获取源代码、修改和扩展以适应特定环境。 【Puppet 的特性】 1. **统一语法**:Puppet 使用声明式语言来定义配置,这意味着你可以编写一个模块,该模块将在所有目标...
最后一章专注于如何扩展Puppet的功能,包括自定义函数、提供者和类型,以及如何将外部数据源(如数据库或API)整合到Puppet配置中。此外,还讨论了如何构建和发布自己的Puppet模块,供社区共享和使用。 《Pulling ...