运转自动化之puppet,puppet安装配备

puppet是一款开源自动化部署工具,下面介绍puppet安装和配置。
1、操作系统:redhat5.3 (64位系统)
2、系统架构:
   192.168.0.200  服务器
   192.168.0.201  客户端
   192.168.0.202  客户端

Server  IP:192.168.72.10/24   hostname:puppet-server
Client  IP:192.168.72.111/24  hostname:puppet-client-01
Clinet  IP:192.168.72.168/24  hostname:puppet-client-02
关闭selinux
1、配置服务器和客户端的IP地址和主机名,确保可以相互ping通主机名
2、服务器和客户端安装所需环境
[root@puppet]# yum install ruby* -y
注:如果需要精细安装,只需如下4个包
[root@puppet]# yum install ruby-libs ruby ruby-irb ruby-rdoc -y
3、同步服务器和客户端的时间
[root@puppet]# ntpdate time.nist.gov
注:如果没有ntpdate可以yum安装
[root@puppet]# yum install ntpdate -y
4、服务器和客户端安装facter和puppet主程序
5、下载安装facter
[root@puppet]# wget
[root@puppet]# tar -zxvf facter-latest.tgz
[root@puppet facter-1.6.6]# cd facter-1.6.6
[root@puppet facter-1.6.6]# ruby install.rb
6、下载安装puppet
[root@puppet]wget
[root@puppet]# tar -zxvf puppet-2.6.14.tar.gz
[root@puppet srv]# cd puppet-2.6.14
[root@puppet puppet-2.6.14]# ruby install.rb
运转自动化之puppet,puppet安装配备。7、修改hosts文件
server端
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 puppet-server
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.72.111 puppet-client-01
client端
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 puppet-client-01
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.72.10 puppet-server
8、服务器server端配置
copy源文件
[root@puppet-server puppet-2.6.14]# mkdir /etc/puppet
[root@puppet-server puppet-2.6.14]# cp conf/auth.conf /etc/puppet/
[root@puppet-server puppet-2.6.14]# cp conf/RedHat/fileserver.conf /etc/puppet/
[root@puppet-server puppet-2.6.14]# cp conf/redhat/puppet.conf /etc/puppet/
[root@puppet-server puppet-2.6.14]# cp conf/redhat/server.init /etc/init.d/puppetmaster
[root@puppet-server puppet-2.6.14]# chmod x /etc/init.d/puppetmaster
[root@puppet-server puppet-2.6.14]# chkconfig --add puppetmaster
[root@puppet-server puppet-2.6.14]# chkconfig puppetmaster on
[root@puppet-server puppet-2.6.14]# chkconfig --list puppetmaster
puppetmaster    0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@puppet-server puppet-2.6.14]# mkdir -p /etc/puppet/manifests
创建puppet帐号
[root@puppet-server puppet-2.6.14]# puppetmasterd --mkusers(目的是在/var/lib/puppet下创建一些目录)
启动服务
[root@puppet-server puppet-2.6.14]# /etc/init.d/puppetmaster restart
Stopping puppetmaster:                                     [  OK  ]
Starting puppetmaster:                                     [  OK  ]
9、客户client端配置
[root@puppet-client-01 puppet-2.6.14]# mkdir /etc/puppet/
[root@puppet-client-01 puppet-2.6.14]# cp conf/auth.conf /etc/puppet/
[root@puppet-client-01 puppet-2.6.14]# cp conf/namespaceauth.conf /etc/puppet/
[root@puppet-client-01 puppet-2.6.14]# cp conf/redhat/puppet.conf /etc/puppet/
[root@puppet-client-01 puppet-2.6.14]# cp conf/redhat/client.init /etc/init.d/puppet
[root@puppet-client-01 puppet-2.6.14]# chmod x /etc/init.d/puppet
[root@puppet-client-01 puppet-2.6.14]# chkconfig --add puppet
[root@puppet-client-01 puppet-2.6.14]# chkconfig puppet on

本文由秀依林枫提供友情赞助,首发于烂泥行天下。

烂泥:puppet3.7安装与配置,烂泥puppet3.7配置

本文由秀依林枫提供友情赞助,首发于烂泥行天下。

有关服务器的自动化管理,这方面以前没有接触过。打算这段时间把这块知识给补上。

现在服务器自动化管理软件,使用最多也最火的就是puppet了。

那么我们今天的主角也就是puppet。分以下几个步骤来介绍:

1、 puppet是什么

2、 puppet优点

3、 安装准备工作

4、 环境准备

5、 源码安装puppet

6、 RPM安装puppet

7、 puppet证书授权

8、 puppet资源

一、puppet是什么

puppet是一种基于ruby语言开发的Lnux、Unix、windows平台的集中配置管理系统。它使用自有的puppet描述语言,可管理配置文件file、用户user、cron任务、软件包、系统服务等系统实体。

puppet把这些系统实体称之为资源,puppet设计目标是简化对这些资源的管理以及妥善处理资源间的依赖关系。

puppet依赖于C/S(客户端/服务器)的部署架构。它需要在puppet服务器上安装puppet-server软件包(以下简称master),在需要管理的目标主机上安装puppet客户端软件(以下简称agent)。

当agent连接上master后,定义在master端的配置文件会被编译,然后在agent上运行。每个agent默认30分钟会连接一次master,确认配置信息的更新情况。但是这种方式在很多场景下不是很符合系统管理员的要求,所以很多系统管理员也会将agent通过crontab(任务计划)来管理,这样会更加灵活一些。

二、puppet优点

puppet的语法允许你创建一个单独的脚本,用来在你所有的目标主机上建立一个用户。所有的目标主机会依次使用适合本地系统的语法来解释和执行这个模块。如果这个配置是在Red Hat服务器上执行的话,建立用户使用useradd命令,如果这个配置是在FreddBSD服务器上执行的话,则使用adduser命令。

puppet另外一个卓越的地方就是它的灵活性。源于开源软件的天性,你可以自由地获得puppet的源代码。如果你遇到问题并且有能力处理的话,你可以修改或加强puppet的代码使其适用于你的环境,然后解决这个问题。

puppet也是易于扩展的。定制软件包的支持功能和特殊的系统环境配置能够快速简单地添加至puppet的安装程序中。

三、安装准备工作

本次实验OS为centos 6.5 64bit,服务端为:192.168.199.247,客户端为192.168.199.248。

在正式实验之前,我们有几个事情需要先进行处理。

3.1 主机时间同步

为了减少在实验过程中不必要的麻烦,我们需要对所有主机(包括服务器和客户端)进行时间同步。即服务器与客户端的时间相差不能超过秒级。

使用以下命令进行时间同步,如下:

ntpdate timekeeper.isi.edu

如果在进行时间同步时,出现如下错误:

21 Jan 17:20:45 ntpdate[2720]: the NTP socket is in use, exiting

请关闭主机的ntpd服务,然后再进行时间同步。

/etc/init.d/ntpd stop

3.2 修改主机名

因为安装 puppet 时会把主机名写入证书,同时客户端和服务端之间通信需要这个证书。所以需要修改服务器与客户端的主机名。

修改主机名。如下:

hostname s.ilanni.com

执行此命令,可以使主机的主机名立即生效。但是服务器重启后,此修改就会失效。

要是主机名永久生效的话,需要修改/etc/sysconfig/network文件。如下:

cat /etc/sysconfig/network

本次实验,我们就不搭建DNS服务器,直接通过修改服务端与客户端的hosts文件来达到各自解析域名的目的。如下:

cat /etc/hosts

192.168.199.247 s.ilanni.com

192.168.199.248 c.ilanni.com

3.3 关闭iptables和selinux

我们现在所有的实验都是在关闭iptables和selinux下进行的。

/etc/init.d/iptables status

cat /etc/selinux/config

四、环境准备

puppet的安装可以分为源码安装和RPM安装,但是无论哪一种安装方法,我们都需要在安装之前对其进行几点需要说明。

4.1 puppet安装说明

1、由于puppet是采用ruby语言开发,所以无论是源码还是RPM方式安装puppet,我们都必须要先安装ruby语言环境

2、puppet从2.7版本以后,就需要hiera的支持。所以也必须安装hiera。

3、在前面章节中,我们说明了puppet是一个配置管理系统,而管理的资源,都是系统的实体。但是这些实体,是如何来的呢?这就需要我们安装另外一个资源收集软件—facter。

facter主要用来收集主机的一些信息,比如:CPU、主机IP等。facter把这些收集的信息发送给puppet服务器端,服务器端就可以根据不同的条件来对不同的节点机器生成不同的puppet配置文件。

facter也是ruby语言开发的,这个我们可以在facter的安装文档中可以查看到,如下:

cat README.md

4.2 安装ruby

ruby的安装比较简单,我们在此使用是yum进行安装。如下:

yum -y install ruby

ruby安装完毕后,我们来查看其生成的文件。如下:

rpm -ql ruby

我们可以查看ruby的帮助信息,如下:

ruby -h

除此之外,我们还要安装ruby-rdoc这个软件包。该软件包主要用于查看ruby的帮助文档。如下:

yum -y install ruby-rdoc

以上就是和ruby有关的软件包,安装完毕后,我们开始来安装facter。

4.3 安装facter

facter我们可以从puppet官网下载,如下:

注意:facter也可以通过yum进行安装,在此我们使用的是源码安装。

下载facter最新的版本,如下:

wget

解压facter软件包,如下:

tar -xf facter-2.3.0.tar.gz

开始安装facter,如下:

ruby install.rb或者./install.rb

facter安装完毕后,我们来查看下facter的使用帮助。如下:

facter -h

如果想查看facter详细帮助信息,我们也可以man下facter。如下:

man facter

如果安装没有问题的话,我们在执行facter命令后,会显示facter收集的相关信息。如下:

facter

4.4 安装hiera

hiera主要用于控制一些agent经常变化的数值,在puppet2.7以后的版本必须要安装。如果不安装的话,我们在安装puppet时,系统会提示如下错误:

Could not load hiera; cannot install

但是在安装hiera之前,我们必须安装额外的yum源,否则系统会提示找不到该软件包。

该yum源,我们可以puppet官网查看到。如下:

按照puppet官网的方法进行安装。如下:

rpm -ivh

yum源配置完毕后,我们现在来安装hiera。如下:

yum -y install hiera

以上安装完毕后,我们就可以正式安装puppet。

五、 源码安装puppet

puppet服务端与客户端的源码安装使用的是同一个软件包,安装步骤一样,只是在配置文件方面有细微的差别。

在下载puppet源码之前,我们还要在master端和agent端创建puppet运行时使用的用户puppet。master端如果不创建的话,master在启动时,会报如下错误:

创建puppet用户,如下:

useradd -M -s /sbin/nologin puppet

cat /etc/passwd |grep puppet

注意:puppet服务端是以puppet用户运行的,而puppet客户端是root用户运行。

这样做的目的是:master在服务端以普通用户运行安全性比较高,而agent在客户端以root用户运行,是因为master在创建用户、修改系统文件等资源时,需要具有最高权限。

5.1 puppet源码安装

puppet的源码包,我们可以从puppet官网下载。目前puppet最新版为3.7.3.如下:

下载puppet软件包。如下:

wget

解压puppet软件包,如下:

tar -xf puppet-3.7.3.tar.gz

puppet的安装方法与facter的安装一样,如下:

ruby install.rb或者./install.rb

puppet安装完毕后,我们来查看下其帮助信息,如下:

puppet help

查看puppet的安装位置如下:

ll /etc/puppet/

以上就是puppet的安装,安装完毕后。我们现在来配置puppet。

5.2 master端配置

puppet安装完毕后,我们来配置下master端。把puppet源码包ext/redhat/目录下的puppet.conf文件复制到puppet的安装目录/etc/puppet/下,如下:

cp ext/redhat/puppet.conf /etc/puppet/

vi /etc/puppet/puppet.conf

server = s.ilanni.com

certname = s.ilanni.com

pluginsync = false

其中s.ilanni.com表示puppet服务器的主机名。

pluginsync = false表示关闭模块中的插件功能

配置文件修改完毕后,我们现在来配置master端的启动脚本。

复制puppet源码包ext/redhat/目录下的server.init文件到/etc/init.d/下,并重命名为puppetmaster。然后赋予puppetmaster可执行权限。如下:

cp ext/redhat/server.init /etc/init.d/puppetmaster

chmod u x /etc/init.d/puppetmaster

注意:master端启动,我们也可以通过puppet master命令来启动。如下:

puppet master

netstat -tunlp |grep "8140"

ps aux |grep puppet

其实puppetmaster启动脚本就是使用puppet master命令启动的,如下:

cat /etc/init.d/puppetmaster

把puppetmaster加入到开机启动项。如下:

chkconfig --add puppetmaster

chkconfig puppetmaster on

chkconfig |grep puppetmaster

以上都配置完毕后,我们来启动puppet服务,如下:

/etc/init.d/puppetmaster start

ps aux |grep puppet

netstat -tunlp

通过上图,我们可以很puppet服务使用TCP协议的8140端口,而且运行时使用puppet用户。

puppet服务端配置完毕后,我们现在来配置puppet客户端。

5.3 agent端配置

agent端的配置,只需要把puppet.conf文件复制到puppet的安装目录/etc/puppet/下即可,如下:。

cp ext/redhat/puppet.conf /etc/puppet/

cat /etc/puppet/puppet.conf

server = s.ilanni.com

pluginsync = false

其中s.ilanni.com表示puppet服务器的主机名。

pluginsync = false表示关闭模块中的插件功能

agent端启动,我们可以通过puppet agent命令来启动。如下:

puppet agent

ps aux |grep puppet

通过上图,我们也可以看出agent端运行时使用的用户为root,而不是puppet用户。

注意:agent端我们使用puppet agent命令来进行各种管理,包括证书的申请、资源的同步,我们都是通过这个命令进行的。

agent可以以两种方式运行:第一种方式是命令接参数连接master,第二种是以守护进程的形式在系统后台运行,默认每30分钟连接一次master,但是这样并不灵活。我们一般是使用第一种方式,并配合crontab使用。

六、 RPM安装puppet

RPM方式安装puppet比较简单,我们只需yum安装即可。如下:

6.1 puppet安装准备工作

在使用RPM安装之前,我们要先配置额外的yum源,否则系统会提示找不到puppet软件包。如下:

yum -y install puppet-server

安装额外的yum源,我们可以在puppet的官网查找到yum源。如下:

按照puppet官网的方法进行安装。如下:

rpm -ivh

注意:该yum源无论是master端和agent端都需要进行配置。

6.2 master端安装与配置

现在开始yum安装master端,如下:

yum -y install puppet-server

通过上图,我们可以看到安装puppet-server是要依赖于facter、hiera和puppet三个软件包。

现在我们来查看puppet-server安装时新建的用户以及puppet服务运行时所用的用户,如下:

cat /etc/passwd

ps aux |grep puppet

通过上图,我们可以看到puppet-server在安装时确实新建用户puppet,以及在运行时使用的确实puppet用户。

查看puppet服务所使用的端口,如下:

/etc/init.d/puppetmaster start

netstat -tunlp

master端安装完毕后,我们来配置puppet服务的配置文件,其方法和源码安装方法一样。如下:

vi /etc/puppet/puppet.conf

server = s.ilanni.com

certname = s.ilanni.com

pluginsync = false

6.3 agent端安装与配置

master端安装完毕后,我们来安装agent端如下:

yum -y install puppet

RPM安装的puppet客户端与源码安装的一样,我们现在来启动puppet客户端。如下:

通过上图,我们可以看出agent端安装时也创建了puppet用户,但是puppet运行时没有使用该用户而是使用root用户。这个与源码安装的相对应。

agent端安装完毕后,我们来配置agent端的配置文件,其方法和源码安装方法一样。如下:

vi /etc/puppet/puppet.conf

server = s.ilanni.com

pluginsync = false

七、 puppet证书授权

我们知道puppet为了安全,采用ssl隧道通信,因此需要申请证书来验证。

7.1 master端证书初始化

当master端第一次启动的时候,可以查看/var/log/message日志文件中,有类似如下的信息:

tail -f /var/log/messages

Jan 23 06:39:03 localhost puppet-master[1622]: Signed certificate request for ca

Jan 23 06:39:04 localhost puppet-master[1622]: s.ilanni.com has a waiting certificate request

Jan 23 06:39:04 localhost puppet-master[1622]: Signed certificate request for s.ilanni.com

Jan 23 06:39:04 localhost puppet-master[1622]: Removing file Puppet::SSL::CertificateRequest s.ilanni.com at '/var/lib/puppet/ssl/ca/requests/s.ilanni.com.pem'

Jan 23 06:39:04 localhost puppet-master[1622]: Removing file Puppet::SSL::CertificateRequest s.ilanni.com at '/var/lib/puppet/ssl/certificate_requests/s.ilanni.com.pem'

Jan 23 06:39:04 localhost puppet-master[1634]: Reopening log files

Jan 23 06:39:04 localhost puppet-master[1634]: Starting Puppet master version 3.7.3

从日志中我们可以看出第一次启动master端时,puppet服务会在本地创建认证中心,给自己授权证书和key,这个我们可以在/var/lib/puppet/ssl看到那些证书和key。如下:

ll /var/lib/puppet/ssl

这个目录和/etc/puppet/puppet.conf文件中配置的ssldir路径有关系。

我们也可以查看master端给自己授权的证书文件,如下:

ll /var/lib/puppet/ssl/ca/signed

7.2 agent端申请证书

agent端在第一次连接master端时,会向master端申请证书。如果master端没有授予agent端证书,那么agent端和master端之间的连接是不会建立成功的。

此时agent端会持续等待master端授权证书,并会每隔2分钟去检查master端是否签发证书。

我们现在使用puppet agent --server s.ilanni.com连接master端,如下:

puppet agent --server s.ilanni.com

7.3 master端授权证书

agent端申请证书完毕后,需要我们切换到master端,使用puppet cert命令来对agent端授权证书。

有关puppet cert的使用,我们可以查看pupper cert的帮助信息。如下:

pupper cert

在上图中,puppet cert已经给出如何给一个agent端进行授权证书的例子。

现在我们来查看master端有哪些主机在申请证书,如下:

puppet cert list

通过上图,我们很明显的可以看到c.ilanni.com客户端正在申请证书。

现在我们来给agent端授权证书,使用如下命令:

puppet cert sign c.ilanni.com

注意:如果实际生产环境客户端数量比较多的话,我们可以一次性授权所有证书。如下:

puppet cert sign --all

在master端查看所有已经通过认证的agent端,如下:

puppet cert -all

现在我们再来看看master端给agent端授权的证书文件,如下:

ll /var/lib/puppet/ssl/ca/signed

通过上图,我们可以看出master端授权客户端c.ilanni.com的证书文件是c.ilanni.com.pem。

7.4 查看agent端证书

在master端授权完毕后,我们现在切换到agent端查看授权的证书文件,如下:

ll /var/lib/puppet/ssl/certs

通过上图,我们可以看出agent端的证书文件c.ilanni.com.pem与master端的证书文件是一样的。

7.5 puppet证书问题

在实际的生产环境中,可能会出现已经通过master端认证的agent端主机名被修改或者其他一些误操作,从而导致agent端无法与master端进行正常通信。

当遇到这种情况时,我们一般的处理方法是先删除master端和agent端的相关的认证文件,然后在agent端重新申请证书。

具体操作如下:

agent端,删除/var/lib/puppet/ssl目录,如下:

rm -fr /var/lib/puppet/ssl

master端,删除/var/lib/puppet/ssl/ca/signed目录下的证书文件,如下:

rm -fr /var/lib/puppet/ssl/ca/signed/c.ilanni.com.pem

以上操作完毕后,agent端再次申请证书即可。

八、 puppet资源

puppet环境搭建完毕后,我们现在开始来介绍puppet资源相关的内容。

8.1 puppet的资源类型及帮助

puppet的资源,我们是可以通过相关命令查看puppet支持的资源类型。

通过前面的章节,我们知道puppet是支持子命令进行查询的。如下:

puppet help ca

查看puppet支持的资源类型。如下:

puppet describe --list

也可以通过puppet resource --type命令查询,如下:

puppet resource --type

通过上图,我们可以看到puppet支持用户user、文件file、crontab等大部分的资源。

如果想查看user的资源,我们还是继续使用puppet describe user命令进行查看。如下:

puppet describe user

如果我们想查看user在puppet站点site.pp文件中的具体使用方法,可以通过如下命令进行查看:

puppet resource user

通过上图,我们可以看到puppet已经给出了user使用的例子,我们只需要按照这个例子进行操作即可。

注意:如果puppet describe帮助中没有该资源在site.pp站点中的使用详情,我们可以去到puppet resource中进行查看。

这个只是以user资源为例,如果想查看host资源的帮助,我们也可以使用类似的命令,如下:

puppet resource host

如果你不想在本机进行查看,那么也可以去puppet官网进行查看,如下:

8.2 puppet资源配置文件

puppet的资源配置文件在服务端的/etc/puppet/manifests目录下,我们需要在该目录下创建一个站点文件site.pp。

我们在该文件中创建需要同步到agent端的资源,如下:

cat /etc/puppet/manifests/site.pp

node default{

file { "/tmp/test.txt":

content => "Hello,ilanni,this is puppet test!n"}

}

以上命令表示在puppet资源配置文件冲创建一个默认节点,使用file资源,在agent端的/tmp/目录下创建test.txt,内容为:Hello,ilanni,this is puppet test!n

注意:其中的n表示换行。如果不加n的话,查看该文件内容时会显示成这样:

同时site.pp文件创建完毕后,我们要先重启下master端,如下:

/etc/init.d/puppetmaster restart

现在切换到agent端同步该资源,如下:

puppet agent --test --server s.ilanni.com

通过上图,我们可以看到agent端已经把master端的资源的同步到本地。

现在我们来查看,agent端的/tmp目录下是否有test.txt这个文件。如下:

cat /tmp/test.txt

通过上图,我们可以看到agent端确实已经同步到master端的资源。/tmp目录下确实有test.txt这个文件,而且内容也确实和master端的一样。

到此有关puppet3.7搭建与配置介绍完毕,下一篇文章我们会介绍在生产环境中,puppet同步的资源。

本文由秀依林枫提供友情赞助,首发于烂泥行天下。 有关服务器的自动化管理,这方面以前没...

3、安装ruby.(安装puppet先决条件服务端和客户端都要安装)
   #rpm –Uvh
   #yum -y install mysql* ruby-mysql ruby ruby-devel ruby-irb ruby-rdoc ruby-ri

[root@puppet-client-01 puppet-2.6.14]# vim /etc/puppet/namespaceauth.conf
......
[fileserver]
    allow *
[puppetmaster]
    allow *
[puppetrunner]
    allow *
[puppetbucket]
    allow *
[puppetreports]
    allow *
[resource]
    allow *
......
创建puppet帐号和rra目录
[root@puppet-client-01 puppet-2.6.14]# puppetd --mkusers
注:如果报错,可以手动创建用户。
重启服务
[root@puppet-client-01 puppet]# /etc/init.d/puppet restart
10、服务server端防火墙配置
[root@puppet-server ~]# iptables -A INPUT -p tcp --dport 8140 -j ACCEPT
[root@puppet-server ~]# /etc/init.d/iptables save
11、客户client端防火墙配置
[root@puppet-client-01 ~]# iptables -A INPUT -p tcp --dport 8139 -j ACCEPT
[root@puppet-client-01 ~]# /etc/init.d/iptables save
12、服务端修改配置文件,设置允许的地址
[root@puppet-server ~]# vim /etc/puppet/fileserver.conf
......
 [files]
  path /tmp/srv/
  allow 192.168.72.0/24
......
手动认证
1、客户端发送请求
[root@puppet-client-01 ~]# puppetd --test --server puppet-server
2、服务器端查看
[root@puppet-server ~]# puppetca -l
  puppet-client-01 (4B:58:77:C0:52:22:DD:1E:A4:A8:B8:5E:4F:9C:71:25)
3、服务器签名认证
[root@puppet-server ~]# puppetca -s -a(对所有客户端认证)
notice: Signed certificate request for puppet-client-01
notice: Removing file Puppet::SSL::CertificateRequest puppet-client-01 at '/var/lib/puppet/ssl/ca/requests/puppet-client-01.pem'
注:[root@puppet-server ~]# puppetca -s $hostname(对某个主机认证)
自动认证
1、服务端
[root@puppet-server ~]# vim /etc/puppet/puppet.conf
......
[main]
autosign = true
......
2、客户端
[root@puppet-client-01 puppet-2.6.14]# vim /etc/puppet/puppet.conf
[agent]
......
    listen = true          #打开客户端的监听服务端的puppetrun命令
    server = puppet-server #指定服务端
    puppetport = 8139      #客户端的监听端口,默认是8139,可不加
    runinterval = 60       #同步文件时间,默认1800s
......
3、[root@puppet-client-01 puppet-2.6.14]#puppetd
#客户端运行命令puppetd,会放在后台运行,从此客户端会每隔60s同步一次服务器里的site.pp配置

有关服务器的自动化管理,这方面以前没有接触过。打算这段时间把这块知识给补上。

安装ruby 1.8.2以上版本,但不要安装1.87以上版本。还不支持。
4、服务端安装
   (1)安装Facter  用来获取客户端系统信息(如hostname,ip,OS-version,fqdn等)采用源码安装
   #cd /usr/local/src
   #wget
   #tar -xvzf facter-latest.tgz
   #cd facter-latest
   #ruby install.rb   安装
   #cd ../
  
   (2)安装puppet
   #wget 下载最新稳定版puppet。
   #cd puppet-*
   #ruby install.rb安装
   #mkdir /etc/puppet
   #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
 
  
5、客户端安装
   和服务端安装方法一样。
   #mkdir /etc/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

功能测试:

现在服务器自动化管理软件,使用最多也最火的就是puppet了。

6、服务端配置
   (1)、修改/etc/vhosts
 
   #vim /etc/hosts
   # Do not remove the following line, or various programs
   # that require network functionality will fail.
   127.0.0.1               puppet localhost.localdomain localhost puppet
   ::1             localhost6.localdomain6 localhost6
  (2)、修改hostname
   #vim /etc/sysconfig/network
   NETWORKING=yes
   NETWORKING_IPV6=no
   HOSTNAME=master.gangpao.com
   GATEWAY=192.168.0.1
7、客户端配置192.168.0.201
   (1)、修改/etc/vhosts
   # 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.0.200   master.gangpao.com      puppet
   192.168.0.202   agent02.gangpao.com     agent02
 (2)、修改hostname
   #vim /etc/sysconfig/network
   NETWORKING=yes
   NETWORKING_IPV6=no
   HOSTNAME=agent02.gangpao.com
   GATEWAY=192.168.0.1
   #/etc/init.d/network restart
8、启动服务端服务
   (1)、生成config文件
   #puppet --genconfig > /etc/puppet/puppet.conf
   (2)、启动服务
   #puppet master --mkusers
9、客户端请求服务端认证
   在客户端执行
   #puppet agent --server master.gangpao..com --waitforcert 60 --test
   在服务端执行
   #puppet cert --list   查看客端请求
   agent02.gangpao.com
   #puppet cert --sign agent02.gangpao.com 签发证书
10、启动客户端服务
   #/etc/init.d/puppet start

1、puppet运维自动化之组管理
......
group { "ceshi":                              
            gid => 800,                         #该组的 gid,必须是数字,如果不指定,将自动分配 ,不同的系统自动分配的算法不一样,不推荐使用自动分配gid
            allowdupe => false,                 #是否允许两个相同的gid, 这个参数不能在freebsd上面使用, 可以设置的值是false , true
            ensure => present,                  #创建或者删除组,设置absent就删除该组,设置 present就创建该组
            members => [ ceshi1,ceshi2,ceshi3 ] #该组的成员
}
......
2、puppet运维自动化之文件分发
通过puppet服务器向客户端分发文件
[root@puppet-server ~]# vim /etc/puppet/manifests/site.pp
......
file
    {"/tmp/srv/darren":        #资源的标题
  name => "/tmp/srv/darren",#name等于标题,所以可以省略
     source => "puppet://puppet-server/files/darren",
     owner =>root,             #客户端下载后的文件属主
     group =>root,             #客户端下载后的文件属组
     mode =>777                #客户端下载后的文件权限
}

那么我们今天的主角也就是puppet。分以下几个步骤来介绍:

1、操作系统:redhat5.3 (64位系统) 2、系统架构: 192.168.0.200 服务器 192.168.0.201...

......
file
    {"/tmp/srv/darren":
     source => "puppet://puppet-server/files/darren",
}
......
file {
     "/tmp/srv/ceshi.txt":
     content => file("/tmp/srv/ceshi.txt");
}
......

1、 puppet是什么

3、puppet运维自动化之crontab文件管理
......
cron { "reboot":
    command => "/sbin/init 6",
    user =>root,
    minute =>35,
    hour =>13
}
#除了name和command这两个参数以外,其他都是可选项
#name该crontab的名字,用于区分不同的crontab
#command是crontab要执行的命令,环境变量按照系统本地规则进行管理,推荐使用绝对路径
#ensure指定该资源是否启用,可设置成true或false
#environment在crontab环境里指定环境变量,例如PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
#user把crontab任务加入到默认的crontab列表,默认是运行puppet的用户
#minute运行crontab的分钟,可设置0-59
#hour运行crontab的小时,可设置0-23
#monthday运行crontab的每月中的某一天,可设置1-31
#month运行crontab的月份,1-12
#weekday运行crontab的星期数,0-7
......
4、puppet运维自动化之分类管理客户端
......
node puppet-client-01 {
file {
     "/tmp/srv/192.168.72.0":
     source => "puppet://puppet-server/files/192.168.72.0",
     owner =>root,
     group =>root,
     mode =>777,
     ensure =>present
     }
}
......
#node,节点定义,当一个节点(puppet客户端)连接到puppet服务器端,puppet解析器会查找这个节点的node代码片断,然后利用这个代码片断来生成该客户端的配置代码。
5、puppet运维自动化之yum安装软件包,以httpd模拟测试
......
package { "httpd": ensure => "installed" }
#ensure设置软件包得状态:installd(present)表示要安装该软件,absent表示卸载该软件,latest表示安装软件包的最新版本。
......
6、puppet运维自动化之网络下载安装rpm包
......
     package { "epel":
                ensure => present,
                provider => rpm,
                source => ""
}
......
7、puppet运维自动化之安装多个软件包
......
Package { ensure => "installed" }  #注意:第一个P是大写,这就意味着对软件包管理设置了一个全局的的参数。
     package { "lrzsz": }
     package { "telnet": }
     package { "sudo": }
......
8、puppet运维自动化之服务管理
......
service {
            "nfs":
             ensure => running;
            "iptables":
             ensure => stopped;
            "puppet":
             enable => true;
            "httpd":
             enable => false;
}
......
参数
#binary :运行服务的命令的路径, 只用于不支持init的操作系统, 如果没有指定启动脚本,就用这个命令来启动服务。
#enable :服务是否随开机而启动,可设置的值为true,false,需要provider支持enableable。
#ensure: 服务是否运行,可设置的值为running,stopped,也可以用true,false。
#hasrestart:指出管理脚本是否支持restart参数,如果不支持,就用stop和start实现restart效果。可以设置的值是true 或 false。
#hasstatus :服务的init脚本是否支持status参数,可设置的值为ture,false。
#name: 该资源的namevar, 服务的名字,通常就是在/etc/init.d/目录下的名字。
#path: 指定查找init 脚本的路径。
#pattern :搜索进程表匹配字符串,用于不支持init的脚本,当要停止一个服务的时候,通过查看进程运行列表来判断。
#provider :The specific backend for provider to use,可设置的值有base, daemontools,init等。
#restart :重启服务
#start: 开启服务
#status :服务运行状态
#stop: 停止服务
9、puppet运维自动化之主机管理
......
#客户端192.168.72.128添加主机别名name01和name02
host { "name":           
           ip => '192.168.72.128',
           host_aliases => ["name01", "name02" ],
           ensure =>'present'
}
......
#host:安装和管理主机实体。对大部分系统来说,这些实体就在/etc/hosts文件中
#ip:主机的IP地址
#host_aliases:主机别名,可以有多个,多个值需要指定为一个数组。
#ensure:确定该主机是否启用,有效值present和absent
10、puppet运维自动化之执行外部命令
......
#客户端解压puppet软件包
exec { "tar xf /tmp/srv/puppet-2.6.14.tar.gz":
        cwd => "/tmp/srv/",
        creates => "/tmp/srv/puppet",
        path => ["/bin","/usr/bin","/usr/sbin"]
}
......
#cwd:指定命令执行的目录。如果目录不存在,则命令执行失败
#creates:指定命令所生成的文件。如果提供了这个参数,那么命令只会在所指定的文件不存在的情况的被执行
#path:命令执行的搜索路径。如果path没有被定义,命令需要使用绝对路径。路径可以以数组或以冒号分隔的形式来定义。

2、 puppet优点

11、puppet运维自动化之目标客户端执行脚本(前提是客户端已经存在该脚本)
......
#客户端执行hello.sh脚本
exec {
     "/tmp/srv/hello.sh":
      cwd =>"/tmp/srv",
      timeout =>120,      #脚本的执行时间,防止死循环,单位为秒
      user =>root,
      path =>["/sbin","/usr/local/sbin","/usr/local/bin","/usr/bin","/bin"],
}
......

3、 安装准备工作

图片 1

4、 环境准备

5、 源码安装puppet

6、 RPM安装puppet

7、 puppet证书授权

8、 puppet资源

一、puppet是什么

puppet是一种基于ruby语言开发的Lnux、Unix、windows平台的集中配置管理系统。它使用自有的puppet描述语言,可管理配置文件file、用户user、cron任务、软件包、系统服务等系统实体。

puppet把这些系统实体称之为资源,puppet设计目标是简化对这些资源的管理以及妥善处理资源间的依赖关系。

puppet依赖于C/S(客户端/服务器)的部署架构。它需要在puppet服务器上安装puppet-server软件包(以下简称master),在需要管理的目标主机上安装puppet客户端软件(以下简称agent)。

当agent连接上master后,定义在master端的配置文件会被编译,然后在agent上运行。每个agent默认30分钟会连接一次master,确认配置信息的更新情况。但是这种方式在很多场景下不是很符合系统管理员的要求,所以很多系统管理员也会将agent通过crontab(任务计划)来管理,这样会更加灵活一些。

二、puppet优点

puppet的语法允许你创建一个单独的脚本,用来在你所有的目标主机上建立一个用户。所有的目标主机会依次使用适合本地系统的语法来解释和执行这个模块。如果这个配置是在Red Hat服务器上执行的话,建立用户使用useradd命令,如果这个配置是在FreddBSD服务器上执行的话,则使用adduser命令。

puppet另外一个卓越的地方就是它的灵活性。源于开源软件的天性,你可以自由地获得puppet的源代码。如果你遇到问题并且有能力处理的话,你可以修改或加强puppet的代码使其适用于你的环境,然后解决这个问题。

puppet也是易于扩展的。定制软件包的支持功能和特殊的系统环境配置能够快速简单地添加至puppet的安装程序中。

三、安装准备工作

本次实验OS为centos 6.5 64bit,服务端为:192.168.199.247,客户端为192.168.199.248。

在正式实验之前,我们有几个事情需要先进行处理。

3.1**主机时间同步**

为了减少在实验过程中不必要的麻烦,我们需要对所有主机(包括服务器和客户端)进行时间同步。即服务器与客户端的时间相差不能超过秒级。

使用以下命令进行时间同步,如下:

ntpdate timekeeper.isi.edu

图片 2

如果在进行时间同步时,出现如下错误:

21 Jan 17:20:45 ntpdate[2720]: the NTP socket is in use, exiting

图片 3

请关闭主机的ntpd服务,然后再进行时间同步。

/etc/init.d/ntpd stop

图片 4

3.2**修改主机名**

因为安装 puppet 时会把主机名写入证书,同时客户端和服务端之间通信需要这个证书。所以需要修改服务器与客户端的主机名。

修改主机名。如下:

hostname s.ilanni.com

执行此命令,可以使主机的主机名立即生效。但是服务器重启后,此修改就会失效。

图片 5

要是主机名永久生效的话,需要修改/etc/sysconfig/network文件。如下:

cat /etc/sysconfig/network

图片 6

本次实验,我们就不搭建DNS服务器,直接通过修改服务端与客户端的hosts文件来达到各自解析域名的目的。如下:

cat /etc/hosts

192.168.199.247 s.ilanni.com

192.168.199.248 c.ilanni.com

图片 7

3.3 关闭iptables和selinux

我们现在所有的实验都是在关闭iptables和selinux下进行的。

/etc/init.d/iptables status

cat /etc/selinux/config

图片 8

四、**环境准备**

puppet的安装可以分为源码安装和RPM安装,但是无论哪一种安装方法,我们都需要在安装之前对其进行几点需要说明。

4.1 puppet**安装说明**

1、由于puppet是采用ruby语言开发,所以无论是源码还是RPM方式安装puppet,我们都必须要先安装ruby语言环境

2、puppet从2.7版本以后,就需要hiera的支持。所以也必须安装hiera。

3、在前面章节中,我们说明了puppet是一个配置管理系统,而管理的资源,都是系统的实体。但是这些实体,是如何来的呢?这就需要我们安装另外一个资源收集软件—facter。

facter主要用来收集主机的一些信息,比如:CPU、主机IP等。facter把这些收集的信息发送给puppet服务器端,服务器端就可以根据不同的条件来对不同的节点机器生成不同的puppet配置文件。

facter也是ruby语言开发的,这个我们可以在facter的安装文档中可以查看到,如下:

cat README.md

图片 9

4.2**安装ruby**

ruby的安装比较简单,我们在此使用是yum进行安装。如下:

yum -y install ruby

图片 10

ruby安装完毕后,我们来查看其生成的文件。如下:

rpm -ql ruby

图片 11

我们可以查看ruby的帮助信息,如下:

ruby -h

图片 12

除此之外,我们还要安装ruby-rdoc这个软件包。该软件包主要用于查看ruby的帮助文档。如下:

yum -y install ruby-rdoc

图片 13

以上就是和ruby有关的软件包,安装完毕后,我们开始来安装facter。

4.3**安装facter**

facter我们可以从puppet官网下载,如下:

图片 14

注意:facter也可以通过yum进行安装,在此我们使用的是源码安装。

下载facter最新的版本,如下:

wget

图片 15

解压facter软件包,如下:

tar -xf facter-2.3.0.tar.gz

图片 16

开始安装facter,如下:

ruby install.rb或者./install.rb

图片 17

图片 18

facter安装完毕后,我们来查看下facter的使用帮助。如下:

facter -h

图片 19

如果想查看facter详细帮助信息,我们也可以man下facter。如下:

man facter

图片 20

如果安装没有问题的话,我们在执行facter命令后,会显示facter收集的相关信息。如下:

facter

图片 21

4.4**安装hiera**

hiera主要用于控制一些agent经常变化的数值,在puppet2.7以后的版本必须要安装。如果不安装的话,我们在安装puppet时,系统会提示如下错误:

Could not load hiera; cannot install

图片 22

但是在安装hiera之前,我们必须安装额外的yum源,否则系统会提示找不到该软件包。

该yum源,我们可以puppet官网查看到。如下:

图片 23

按照puppet官网的方法进行安装。如下:

rpm -ivh

图片 24

yum源配置完毕后,我们现在来安装hiera。如下:

yum -y install hiera

图片 25

以上安装完毕后,我们就可以正式安装puppet。

五、 源码安装puppet

puppet服务端与客户端的源码安装使用的是同一个软件包,安装步骤一样,只是在配置文件方面有细微的差别。

在下载puppet源码之前,我们还要在master端和agent端创建puppet运行时使用的用户puppet。master端如果不创建的话,master在启动时,会报如下错误:

图片 26

创建puppet用户,如下:

useradd -M -s /sbin/nologin puppet

cat /etc/passwd |grep puppet

图片 27

注意:puppet服务端是以puppet用户运行的,而puppet客户端是root用户运行。

这样做的目的是:master在服务端以普通用户运行安全性比较高,而agent在客户端以root用户运行,是因为master在创建用户、修改系统文件等资源时,需要具有最高权限。

5.1 puppet源码安装

puppet的源码包,我们可以从puppet官网下载。目前puppet最新版为3.7.3.如下:

图片 28

下载puppet软件包。如下:

wget

图片 29

解压puppet软件包,如下:

tar -xf puppet-3.7.3.tar.gz

图片 30

puppet的安装方法与facter的安装一样,如下:

ruby install.rb或者./install.rb

图片 31

puppet安装完毕后,我们来查看下其帮助信息,如下:

puppet help

图片 32

查看puppet的安装位置如下:

ll /etc/puppet/

图片 33

以上就是puppet的安装,安装完毕后。我们现在来配置puppet。

5.2 master**端配置**

puppet安装完毕后,我们来配置下master端。把puppet源码包ext/redhat/目录下的puppet.conf文件复制到puppet的安装目录/etc/puppet/下,如下:

cp ext/redhat/puppet.conf /etc/puppet/

vi /etc/puppet/puppet.conf

server = s.ilanni.com

certname = s.ilanni.com

pluginsync = false

其中s.ilanni.com表示puppet服务器的主机名。

pluginsync = false表示关闭模块中的插件功能

图片 34

图片 35

配置文件修改完毕后,我们现在来配置master端的启动脚本。

复制puppet源码包ext/redhat/目录下的server.init文件到/etc/init.d/下,并重命名为puppetmaster。然后赋予puppetmaster可执行权限。如下:

cp ext/redhat/server.init /etc/init.d/puppetmaster

chmod u x /etc/init.d/puppetmaster

图片 36

注意:master端启动,我们也可以通过puppet master命令来启动。如下:

puppet master

netstat -tunlp |grep "8140"

ps aux |grep puppet

图片 37

其实puppetmaster启动脚本就是使用puppet master命令启动的,如下:

cat /etc/init.d/puppetmaster

图片 38

把puppetmaster加入到开机启动项。如下:

chkconfig --add puppetmaster

chkconfig puppetmaster on

chkconfig |grep puppetmaster

图片 39

以上都配置完毕后,我们来启动puppet服务,如下:

/etc/init.d/puppetmaster start

ps aux |grep puppet

netstat -tunlp

图片 40

通过上图,我们可以很puppet服务使用TCP协议的8140端口,而且运行时使用puppet用户。

puppet服务端配置完毕后,我们现在来配置puppet客户端。

5.3 agent**端配置**

agent端的配置,只需要把puppet.conf文件复制到puppet的安装目录/etc/puppet/下即可,如下:。

cp ext/redhat/puppet.conf /etc/puppet/

cat /etc/puppet/puppet.conf

server = s.ilanni.com

pluginsync = false

其中s.ilanni.com表示puppet服务器的主机名。

pluginsync = false表示关闭模块中的插件功能

图片 41

agent端启动,我们可以通过puppet agent命令来启动。如下:

puppet agent

ps aux |grep puppet

图片 42

通过上图,我们也可以看出agent端运行时使用的用户为root,而不是puppet用户。

注意:agent端我们使用puppet agent命令来进行各种管理,包括证书的申请、资源的同步,我们都是通过这个命令进行的。

agent可以以两种方式运行:第一种方式是命令接参数连接master,第二种是以守护进程的形式在系统后台运行,默认每30分钟连接一次master,但是这样并不灵活。我们一般是使用第一种方式,并配合crontab使用。

六、 RPM安装puppet

RPM方式安装puppet比较简单,我们只需yum安装即可。如下:

6.1 puppet安装准备工作

在使用RPM安装之前,我们要先配置额外的yum源,否则系统会提示找不到puppet软件包。如下:

yum -y install puppet-server

图片 43

安装额外的yum源,我们可以在puppet的官网查找到yum源。如下:

图片 44

按照puppet官网的方法进行安装。如下:

rpm -ivh

图片 45

注意:该yum源无论是master端和agent端都需要进行配置。

6.2 master端安装与配置

现在开始yum安装master端,如下:

yum -y install puppet-server

图片 46

图片 47

通过上图,我们可以看到安装puppet-server是要依赖于facter、hiera和puppet三个软件包。

现在我们来查看puppet-server安装时新建的用户以及puppet服务运行时所用的用户,如下:

cat /etc/passwd

ps aux |grep puppet

图片 48

图片 49

通过上图,我们可以看到puppet-server在安装时确实新建用户puppet,以及在运行时使用的确实puppet用户。

查看puppet服务所使用的端口,如下:

/etc/init.d/puppetmaster start

netstat -tunlp

图片 50

master端安装完毕后,我们来配置puppet服务的配置文件,其方法和源码安装方法一样。如下:

vi /etc/puppet/puppet.conf

server = s.ilanni.com

certname = s.ilanni.com

pluginsync = false

图片 51

6.3 agent端安装与配置

master端安装完毕后,我们来安装agent端如下:

yum -y install puppet

图片 52

图片 53

RPM安装的puppet客户端与源码安装的一样,我们现在来启动puppet客户端。如下:

图片 54

图片 55

通过上图,我们可以看出agent端安装时也创建了puppet用户,但是puppet运行时没有使用该用户而是使用root用户。这个与源码安装的相对应。

agent端安装完毕后,我们来配置agent端的配置文件,其方法和源码安装方法一样。如下:

vi /etc/puppet/puppet.conf

server = s.ilanni.com

pluginsync = false

图片 56

七、 puppet证书授权

我们知道puppet为了安全,采用ssl隧道通信,因此需要申请证书来验证。

7.1 master端证书初始化

当master端第一次启动的时候,可以查看/var/log/message日志文件中,有类似如下的信息:

tail -f /var/log/messages

Jan 23 06:39:03 localhost puppet-master[1622]: Signed certificate request for ca

Jan 23 06:39:04 localhost puppet-master[1622]: s.ilanni.com has a waiting certificate request

Jan 23 06:39:04 localhost puppet-master[1622]: Signed certificate request for s.ilanni.com

Jan 23 06:39:04 localhost puppet-master[1622]: Removing file Puppet::SSL::CertificateRequest s.ilanni.com at '/var/lib/puppet/ssl/ca/requests/s.ilanni.com.pem'

Jan 23 06:39:04 localhost puppet-master[1622]: Removing file Puppet::SSL::CertificateRequest s.ilanni.com at '/var/lib/puppet/ssl/certificate_requests/s.ilanni.com.pem'

Jan 23 06:39:04 localhost puppet-master[1634]: Reopening log files

Jan 23 06:39:04 localhost puppet-master[1634]: Starting Puppet master version 3.7.3

图片 57

从日志中我们可以看出第一次启动master端时,puppet服务会在本地创建认证中心,给自己授权证书和key,这个我们可以在/var/lib/puppet/ssl看到那些证书和key。如下:

ll /var/lib/puppet/ssl

图片 58

这个目录和/etc/puppet/puppet.conf文件中配置的ssldir路径有关系。

我们也可以查看master端给自己授权的证书文件,如下:

ll /var/lib/puppet/ssl/ca/signed

图片 59

7.2 agent端申请证书

agent端在第一次连接master端时,会向master端申请证书。如果master端没有授予agent端证书,那么agent端和master端之间的连接是不会建立成功的。

此时agent端会持续等待master端授权证书,并会每隔2分钟去检查master端是否签发证书。

我们现在使用puppet agent --server s.ilanni.com连接master端,如下:

puppet agent --server s.ilanni.com

图片 60

7.3 master端授权证书

agent端申请证书完毕后,需要我们切换到master端,使用puppet cert命令来对agent端授权证书。

有关puppet cert的使用,我们可以查看pupper cert的帮助信息。如下:

pupper cert

图片 61

在上图中,puppet cert已经给出如何给一个agent端进行授权证书的例子。

现在我们来查看master端有哪些主机在申请证书,如下:

puppet cert list

图片 62

通过上图,我们很明显的可以看到c.ilanni.com客户端正在申请证书。

现在我们来给agent端授权证书,使用如下命令:

puppet cert sign c.ilanni.com

图片 63

注意:如果实际生产环境客户端数量比较多的话,我们可以一次性授权所有证书。如下:

puppet cert sign --all

图片 64

在master端查看所有已经通过认证的agent端,如下:

puppet cert -all

图片 65

现在我们再来看看master端给agent端授权的证书文件,如下:

ll /var/lib/puppet/ssl/ca/signed

图片 66

通过上图,我们可以看出master端授权客户端c.ilanni.com的证书文件是c.ilanni.com.pem。

7.4 查看agent端证书

在master端授权完毕后,我们现在切换到agent端查看授权的证书文件,如下:

ll /var/lib/puppet/ssl/certs

图片 67

通过上图,我们可以看出agent端的证书文件c.ilanni.com.pem与master端的证书文件是一样的。

7.5 puppet证书问题

在实际的生产环境中,可能会出现已经通过master端认证的agent端主机名被修改或者其他一些误操作,从而导致agent端无法与master端进行正常通信。

当遇到这种情况时,我们一般的处理方法是先删除master端和agent端的相关的认证文件,然后在agent端重新申请证书。

具体操作如下:

agent端,删除/var/lib/puppet/ssl目录,如下:

rm -fr /var/lib/puppet/ssl

图片 68

master端,删除/var/lib/puppet/ssl/ca/signed目录下的证书文件,如下:

rm -fr /var/lib/puppet/ssl/ca/signed/c.ilanni.com.pem

图片 69

以上操作完毕后,agent端再次申请证书即可。

八、 puppet资源

puppet环境搭建完毕后,我们现在开始来介绍puppet资源相关的内容。

8.1 puppet的资源类型及帮助

puppet的资源,我们是可以通过相关命令查看puppet支持的资源类型。

通过前面的章节,我们知道puppet是支持子命令进行查询的。如下:

puppet help ca

图片 70

查看puppet支持的资源类型。如下:

puppet describe --list

图片 71

也可以通过puppet resource --type命令查询,如下:

puppet resource --type

图片 72

通过上图,我们可以看到puppet支持用户user、文件file、crontab等大部分的资源。

如果想查看user的资源,我们还是继续使用puppet describe user命令进行查看。如下:

puppet describe user

图片 73

如果我们想查看user在puppet站点site.pp文件中的具体使用方法,可以通过如下命令进行查看:

puppet resource user

图片 74

通过上图,我们可以看到puppet已经给出了user使用的例子,我们只需要按照这个例子进行操作即可。

注意:如果puppet describe帮助中没有该资源在site.pp站点中的使用详情,我们可以去到puppet resource中进行查看。

图片 75

图片 76

这个只是以user资源为例,如果想查看host资源的帮助,我们也可以使用类似的命令,如下:

puppet resource host

图片 77

如果你不想在本机进行查看,那么也可以去puppet官网进行查看,如下:

图片 78

图片 79

8.2 puppet资源配置文件

puppet的资源配置文件在服务端的/etc/puppet/manifests目录下,我们需要在该目录下创建一个站点文件site.pp。

我们在该文件中创建需要同步到agent端的资源,如下:

cat /etc/puppet/manifests/site.pp

图片 80

node default{

file { "/tmp/test.txt":

content => "Hello,ilanni,this is puppet test!n"}

}

以上命令表示在puppet资源配置文件冲创建一个默认节点,使用file资源,在agent端的/tmp/目录下创建test.txt,内容为:Hello,ilanni,this is puppet test!n

注意:其中的n表示换行。如果不加n的话,查看该文件内容时会显示成这样:

图片 81

同时site.pp文件创建完毕后,我们要先重启下master端,如下:

/etc/init.d/puppetmaster restart

图片 82

现在切换到agent端同步该资源,如下:

puppet agent --test --server s.ilanni.com

图片 83

通过上图,我们可以看到agent端已经把master端的资源的同步到本地。

现在我们来查看,agent端的/tmp目录下是否有test.txt这个文件。如下:

cat /tmp/test.txt

图片 84

通过上图,我们可以看到agent端确实已经同步到master端的资源。/tmp目录下确实有test.txt这个文件,而且内容也确实和master端的一样。

到此有关puppet3.7搭建与配置介绍完毕,下一篇文章我们会介绍在生产环境中,puppet同步的资源。

本文由星彩网app下载发布于星彩网app下载,转载请注明出处:运转自动化之puppet,puppet安装配备

TAG标签: 星彩网app下载
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。