《Puppet权威指南》——3.1 Puppet 各环境的安装-阿里云开发者社区

开发者社区> 华章出版社> 正文
登录阅读全文

《Puppet权威指南》——3.1 Puppet 各环境的安装

简介:

本节书摘来自华章计算机《Puppet权威指南》一书中的第3章,第3.1节,作者:王冬生著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.1 Puppet 各环境的安装

第1章介绍过Puppet和其他的几个自动化运维工具的异同,Puppet的优势有很多,安装方便只是其中之一。本节介绍Puppet在各主要环境下的安装方式。相信读者学完本章以后会深深体会到Puppet的安装是多么简单。由于Puppet是用Ruby语言编写的,所以先从Ruby版本支持Puppet状况讲起;接着介绍包管理工具和源;最后再来介绍Puppet在各环境下的安装方式。
3.1.1 Ruby不同版本对Puppet的支持状况
目前Puppet 提供了对多系统、多环境的支持,但不论是UNIX/Linux系列操作系统,还是微软的Windows系列操作系统,在安装Puppet前都需要先安装Ruby,因为Puppet配置的管理系统主要是由Ruby语言开发的。那么什么是Ruby?简而言之,Ruby是一种跨平台、面向对象的动态类型编程语言。
1995年12月,松本行弘(Yukihiro Masumoto)混合了他喜欢的语言发布了一种具有函数式及指令程序特性的新语言,并以发布的月份——7月的诞生石(红宝石)为名,将其命名为Ruby。
在安装Ruby前,先来看一下Puppet官网提供的Ruby不同版本对Puppet版本的支持情况,如表3-1所示。
从表3-1中我们了解到,虽然Ruby的版本很多,但是Puppet并不支持所有的Ruby版本,主流Puppet版本对Ruby 1.8.7支持要好一些,所以这里推荐大家使用Ruby 1.8.7版本,如果有特殊需求可以根据表中Puppet支持状况来选择相应的版本。

image


3.1.2 包管理系统和源
包管理系统是一个软件的安装工具,它解决了软件安装和软件之间的依赖问题。各UNIX/Linux系统环境都会有自己相对独立的包管理系统,如Fedora和RedHat系统的yum(Yellow dog Updater Modified),就是一个包管理系统,通过yum可以从指定的“源”自动下载RPM包并且安装,自动处理依赖性关系,并且一次安装所有依赖的软件包,这就是包管理系统的主要用途与优势。
我们再来看一下“源”。源是一些包含URL地址的文件,URL地址为安装软件安装包的位置。如果包管理系统是安装软件的工具,那源就是它的软件仓库,可以通过源与包管理系统的结合来满足安装不同软件的需求。下面来介绍系统“源”和Puppet源的安装。通常在使用系统源时会出现超时的情况,具体的解决方法我们将会在本节介绍。接着介绍“源”的搭建,很多企业内部网为了网络安全是禁止访问互联网的,使得软件包更新或安装需要借助其他工具实现。为了降低软件包管理的成本,我们可以搭建企业内部“源”来解决这个问题。
1 . “源”和Puppet源的安装
以RedHat系统为例来介绍系统“源”和Puppet源的安装。首先来看系统源的安装,通常它们存放在/etc/yum.d.report目录下的文件中。我们在安装软件时经常出现超时的情况,这是由于这些源存放在国外的原因导致。为了避免类似问题的发生,提高源的稳定性,建议尽量使用国内的镜像源,目前像网易、搜狐和淘宝都提供了一些镜像源,它们会定时同步更新国外的源到国内的服务器,这样使得我们更新软件更加稳定。这里以网易提供的源为例介绍。将CentOS6-Base-163.repo文件下载到/etc/yum.d.report目录,其中CentOS6-Base-163.repo文件内包含了软件包的网络地址路径,下载方式如下:

#网易镜像源
# wget http://mirrors.163.com/.help/CentOS6-Base-163.repo -P /etc/yum.report.d/

这样网易的系统源就安装好了,但是需要读者注意,源中的软件只包含发行版本中的常规软件,并不包含Puppet相关的软件,所以还要安装Puppet官网提供的源。Puppet官方为了方便人们安装Puppet,将源打包成了RPM,所以可以通过以下方式来安装Puppet的源:

# 安装Puppet官方源
# rpm –ivh https://yum.puppetlabs.com/puppetlabs-release-el-6.noarch.rpm

成功安装Puppet源后,再导入Puppet官网提供的GPG密钥(在网络传输中不免会发生丢包或者软件在互联网的转载过程中植入非官方提供的功能的情况,GPG密钥的作用是验证包的完整性和与官网提供的原始包的一致性)。

# 导入GPG密钥
# rpm -import http://yum.puppetlabs.com/RPM-GPG-KEY-puppetlabs

最后系统会在/etc/yum.d.report目录下生成Puppet的镜像源。这时就可以用yum命令来安装或升级Puppet及其相关组件了,yum命令如表3-2所示。

image


2 . “源”的搭建
源的搭建就是在企业内部网指定能访问公网的服务器,将某系统发行版本的源复制到该服务器上,所有内部网机器指定这台服务器为授权访问互联网的机器进而更新与安装软件。以笔者使用CentOS系统发行版本为例,分为5步来搭建:
1)选择国内镜像下载,这样下载速度会有保障。以下为搜狐提供的CentOS镜像下载地址。

# http://mirrors.sohu.com/centos/6.5/isos/x86_64/CentOS-6.5-x86_64-bin-DVD1.iso
# http://mirrors.sohu.com/centos/6.5/isos/x86_64/CentOS-6.5-x86_64-bin-DVD2.iso

2)在本机创建临时挂载点,挂载下载后的镜像文件。

# mkdir ios_mount1 ios_mount2 
# mount -o loop -t iso9660 CentOS-6.5-x86_64-bin-DVD1.iso ios_mount1 
# mount -o loop -t iso9660 CentOS-6.5-x86_64-bin-DVD2.iso ios_mount2

3)复制挂载的镜像文件到指定目录,并创建yum索引。

# 创建挂载目录
# mkdir -p /data/yum_repodata/centos6.5/x86_64
# 复制镜像文件到挂载目录
# cp ios_mount1/*  /data/yum_repodata/centos6.5/x86_64 
# cp ios_mount2/Packages/*  /data/yum_repodata/centos6.5/x86_64/Packages
# 创建yum索引
# createrepo -p -d -o /data/yum_repodata/centos6.5/x86_64
/data/yum_repodata/centos6.5/x86_64

注意新加入的RPM软件包,需要通过createrepo --update /data/yum_repodata/centos6.5/x86_64更新本地源。

4)为本机的yum仓库搭建Web服务。以Nginx为例来搭建Web服务器。

# 安装Nginx软件包
# yum install nginx 
# 修改nginx.conf文件,指定发布目录为刚创建的目录路径/data/yum_repodata/
# root /data/yum_repodata/
# 启动Nginx
# service nginx restart

5)在需要更新软件包的服务器上指定搭建好的源。

# 删除原有的新建 /etc/yum.repos.d/目录下后缀为.repo的文件
# rm –rf /etc/yum.repos.d/*.repo
# 新建 /etc/yum.repos.d/centos_6_5.repo,内容如下(注意: xx.xx.xx.xx为自己搭建的CentOS 6.5源的Nginx监听的IP, yyyy为端口 )
[base]
name=centos6
baseurl=http://xx.xx.xx.xx:yyyy/centos6.5/x86_64
gpgcheck=0
# 更新配置
# yum clean all
# yum makecache

3.1.3 在RedHat企业版或CentOS上安装Puppet
在确认包管理系统和源已经安装的基础上再来安装Puppet。Puppet的安装顺序是首先安装Ruby和Ruby-lib相关扩展包,然后安装Ruby-shadow(此包作用是在Puppet中可以通过user资源来管理系统账户的密码),最后安装Puppet的相关环境。
1 . Ruby的安装
在RedHat企业版或CentOS的发行版本上安装Puppet时推荐使用yum,它可以根据计算出来的软件依赖关系进行相关的升级、安装、删除等操作。首先需要在系统中打开终端界面输入如下命令,来安装Ruby相关环境。

# yum install ruby ruby-libs ruby-shadow

2 . Puppet的安装
安装好Ruby环境后,以同样的方式可以在Puppet机器上安装Puppet、Puppet-server和Facter。Puppet软件包包含了Agent程序,Puppet-server软件包包含了Master程序,Facter 是一个收集系统信息上报给Master的工具,具体的安装命令如下:

# yum install puppet puppet-server facter

3.1.4 在Debian和Ubuntu上安装Puppet
Debian和Ubuntu发行版本是个人用户使用比较多的版本。特别是Ubuntu,笔者在初学Linux时也使用过Ubuntu发行版。Debian和Ubuntu版本的安装顺序与RedHat企业版或CentOS的发行版安装顺序一致。具体步骤如下。
1 . Ruby的安装
在Debian和Ubuntu发行版本上安装软件推荐使用apt-get。apt-get是一个命令,适用于Deb包管理式的操作系统,主要用于自动从互联网的软件仓库中搜索、安装、升级、卸载软件。它和yum类似,可以帮助用户解决软件包的依赖问题。apt-get以空格作为分割,安装Ruby与libshadow-ruby命令如下:
# apt-get install ruby libshadow-ruby
2 . Puppet的安装
安装好Ruby环境后,可以通过apt-get继续安装Puppet。安装Puppet 的Master、Agent和Facter的命令如下所示:

# apt-get install puppet puppetmaster facter

3.1.5 在微软Windows系列操作系统上安装Puppet
在微软Windows系列操作系统上安装Ruby、Puppet和Facter也是非常方便的。官方提供了集成安装软件包供大家下载,下载地址为https://downloads.puppetlabs.com/windows/。这里有一点需要特别注意,Puppet对Windows支持的版本比较特殊,其从2.6.0版本后开始支持微软的Windows系列操作系统,目前支持的平台如下:
Windows Server 2003/2003 R2
Windows Server 2008/2008 R2
Windows 7

注意目前Puppet只支持微软Windows系列系统的Agent,尚未支持Master。

要在Windows上安装Puppet,只需到Puppet官网下载集成安装包后双击安装就可以了,如图3-1所示。集成软件安装包会自动安装Puppet、Facter和Ruby等相关软件,如图3-2所示。这部分内容非常简单,这里就不过多介绍了。

image

3.1.6 在Mac上安装Puppet
在Mac(苹果系统)上可以使用dmg和pkg来安装软件,但是还可以通过更简单的MacPorts工具来安装。MacPorts与刚介绍的yum安装工具非常相似,它可以帮助我们直接从网上查找软件,下载并安装它。首先安装MacPorts工具,然后再通过MacPorts工具来安装Ruby,最后介绍通过官方网安装Facter和Puppet等工具。
1 . 包系统安装
Mac系统的包管理系统与其他发行版本有些不同,它有自己的独立安装方式。这里推荐通过MacPorts工具来安装相关软件包。
目前Macport支持Mac以下几种版本:
OS X 10.9 Mavericks
OS X 10.8 Mountain Lion
OS X 10.7 Lion

# 这里笔者以OS X 10.7 Lion版本介绍,下载MacPorts工具
# wget https://distfiles.macports.org/MacPorts/MacPorts-2.2.1-10.7-Lion.pkg

下载后双击安装,如图3-3所示。安装后可以通过port 命令来安装软件。关于MacPorts工具的使用,更多信息请参考官方网站http://guide.macports.org

image

2 . Ruby的安装
在Mac系统上可以使用源码安装Ruby,在这里推荐使用MacPorts工具来安装,这种安装方法比较简单,其功能与yum和apt-get类似。在Mac系统上打开终端,执行以下命令,它会自动从网上下载Ruby-1.8.7软件包并安装好。

# port install ruby ruby-libs

3 . Facter的安装
Puppet官网提供Mac版本的Facter安装包,下载地址为http://downloads.puppetlabs. com/mac/facter-1.6.16.dmg。从网站上下载后直接双击软件包,按照指示顺序安装即可,如图3-4所示。

image

4 . Puppet的安装
Puppet官网提供Mac版本的Puppet安装包,下载地址为http://downloads.puppetlabs. com/mac/puppet-2.7.20.dmg。同样从官网下载后直接双击软件包,按照指示顺序安装即可,如图3-5所示。

image

3.1.7 通过RubyGems安装Puppet
安装好Ruby后,也可以通过Ruby的RubyGems来安装Puppet和Facter。RubyGems是一个用于对 Rails 组件进行打包的 Ruby 打包系统,功能类似于Linux下的apt-get工具。 它提供一个分发 Ruby 程序和库的标准格式,还提供一个管理程序包安装的工具。以下是通过RubyGems的gem命令来安装Puppet和Facter的方法。
gem命令默认使用Ruby官方提供的镜像源,由于镜像源在国外不是很稳定,推荐使用淘宝提供的镜像源,更换源方式如下:

#ruby.taobao.org
# gem sources --remove https://rubygems.org
# gem sources -a http://ruby.taobao.org
# gem sources -l

以下为通过gem命令来安装Puppet与Facter。

# gem install puppet facter

RubyGems会根据操作系统发行版本来自动匹配适合的Puppet和Facter版本。需要注意的是Puppet官网并不推荐以RubyGems的形式来安装Puppet,因为RubyGems对比较老的UNIX/Linux发行版本中的Puppet支持并不好,通过它安装软件时可能会出现一些错误,特别是对于刚接触Puppet的用户,会增加学习的成本。
3.1.8 源码编译Puppet
Puppet源码编译安装与前几节介绍的通过系统(yum、apt-get、RubyGems)安装相比要稍微复杂一些,同样Puppet官方网站也不推荐以这样的形式安装,但是在一些特殊场景下,还是需要通过源码编译安装Puppet。以笔者的工作环境为例,为确保网络安全,内网禁止访问互联网资源,笔者只能通过从互联网下载源码包,将源码包传入内网服务器,在内网一台服务器上通过源码编译的方式来安装Ruby、Puppet和Facter。下面介绍通过源码方式安装Ruby、Puppet 和Facter的过程。
1 . Ruby的安装
可以到Ruby官网下载Ruby 1.8.7版本。在安装Ruby时,Puppet官方网站建议安装以下Ruby的扩展支持,它们通常是Puppet在配置管理服务器时需要用到的库与模块。
base64
cgi
digest/md5
etc
fileutils
ipaddr
openssl
strscan
syslog
uri
webrick
webrick/https
xmlrpc
首先下载ruby-1.8.7的源码程序包,下载后解压,然后进入源码包。

# wget  http://ftp.ruby-lang.org/pub/ruby/ruby-1.8.7-p358.zip
# unzip ruby-1.8.7
# cd ruby-1.8.7

源码编译Ruby和很多传统的UNIX/Linux软件安装方法一样,分为3步,即configure(配置)、make(编译)和make install(安装)。安装过程如下。
步骤1 配置Ruby环境,并通过prefix参数指定它的安装目录。

#  ./configure --prefix=/usr/local/puppet

步骤2 编译Ruby环境。

#  make

步骤3 安装编译好的Ruby环境。

#  make install

通过安装configure参数将Ruby安装到/usr/local/puppet目录下。Ruby安装完成后,需要再次安装Ruby的扩展支持。这里需要注意一下环境变量,因为我们安装Ruby的位置并不在系统环境变量中,所以需要手动导入系统环境变量。安装过程如下:

#  export PATH=$PATH:/usr/local/puppet/bin/:/usr/local/puppet/sbin/
#  ruby  -r base64 -e "puts:installed"
#  ruby  -r cgi -e "puts:installed"
#  ruby  -r digest/md5 -e "puts:installed"
#  ruby  -r etc -e "puts:installed"
#  ruby  -r fileutils -e "puts:installed"
#  ruby  -r ipaddr -e "puts:installed"
#  ruby  -r openssl -e "puts:installed"
#  ruby  -r strscan -e "puts:installed"
#  ruby  -r syslog -e "puts:installed"
#  ruby  -r uri -e "puts:installed"
#  ruby  -r webrick -e "puts:installed"
#  ruby  -r webrick/https -e "puts:installed"
#  ruby  -r xmlrpc/client -e "puts:installed"

安装Ruby-1.8.7版本后还要安装ruby-shadow,之前已经介绍过它的用途,这里用的是ruby-shadow-2.1.4 版本。

#  tar –xvzf apalmblad-ruby-shadow-2.1.4-0-g248703f
#  ruby extconf.rb
#  make
#  make install

2 . Facter安装
先要到Puppet官方网站http://puppetlabs.com/downloads/facter/下载Facter,下载后通过以下方式编译安装Facter,这里以facter-1.7.4为例。

#  tar -zxvf facter-1.7.4.tar.gz
#  cd facter-1.7.4/
#  ruby install.rb

3 . Puppet安装
接下来安装Puppet。Puppet源码下载地址为http://puppetlabs.com/downloads/puppet/。在下载Puppet后需要注意Puppet与Ruby对应版本,这里以Puppet 2.7.25为例。

#  tar -zxvf puppet-2.7.25.tar.gz
#  cd puppet-2.7.25/
#  ruby install.rb?--full

提示 通过Puppet源码编译安装后,切莫急着删除源码包,可以将源码包中的配置,如puppet.conf、auth.conf、fileserver.conf和tagmail.conf模板文件复制到/etc/puppet目录下。

3.1.9 源码打包RPM
在前面讲解了通过源码编译的方式安装Puppet的原因,即一些企业内网为了网络安全禁止内网与互联网的服务器进行通信。利用上面介绍的方法,在一台或几台服务器上源码编译Ruby和Puppet还可以,如果机器比较多,那么进行源码编译也是需要一定成本的。所以推荐大家在一台服务器上安装好Puppet后,将源码打包成RPM的形式,然后通过RPM方式进行批量安装,这种方式比较方便快捷。
那什么是RPM呢?RPM是RedHat Package Manager(RedHat软件包管理工具)的缩写,其名称虽然打上了RedHat的标签,但其原始设计理念是开放式的,包括OpenLinux、SUSE以及Turbo Linux在内的很多发行版本都在使用。推荐在内网不连通互联网的情况下,使用RPM的安装方式,这样比较方便、快捷。关于RPM的打包方式可以在网上搜索到,这里不做过多的介绍。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:

华章出版社

官方博客
官网链接