初识puppet


话说工欲善其事,必先利其器。当我们面对几十台机器需要同时进行环境管理时,一个适合的工具就非常重要了,这里我们介绍的工具是puppet,也就是google正在使用的devops工具。当新的工具引入时,大家肯定都会有个疑问:这个工具的使用成本有多高,让它运行起来困难吗?这篇文档将会回答这个问题,答案就是,搭建一个puppet的运行环境非常简单。

当然,第一个问题是puppet能帮我们做什么,当然,它能帮我们管理大量机器的环境,那么,它是如何做到这一点的?

一、      puppet的工作模式

puppet通过master/agent的工作模式管理环境,我们使用一台服务器作为我们的master,master的最重要职责就是管理需要应用到各个agent节点上的环境状态说明,这个环境状态说明我们使用manifest这个单词来描述。

需要被管理的机器我们称为agent,它们定时的去master查看是否有新的manifest需要应用,如果有的话就应用使自己的环境与master所要求的环境一致,并返回执行的结果report。

想象一下,我们是连锁酒店比如如家的老板,作为连锁酒店我们需要保持酒店风格的一致性,于是我找到了总管(master),我告诉他,我们现在有两种房间,一个是标准间一个是单人间,标准间的状态说明manifestA是两张床,单人间的状态说明manifestB是一张床,你去办。总管回答说,好,没问题。具体的各个房间就是agent,总管先给这些房间分类,1、2、3属于标准间,4、5、6属于单人间,总管对这些房间说,标准间要应用manifestA有两张床,单人间要应用manifestB有一张床。于是,奇迹发生了,所有的agent都拿到了各自的manifest,于是,属于标准间的agent给自己放了两张床,属于单人间的agent给自己放了一张床,然后将执行完的结果告诉了master。很好,又过了一天,我发财了,想给标准间增加电视这个manifest,我对master说,标准间,电视。于是agent们又照办了。可是有问题了,有人抗议单人间没有电视,怎么办?我想了想,决定标准间也不放电视了,也就是状态要回滚,怎么办?于是我将manifest们用SVN管理起来,直接回滚,真爽。

 

二、      安装puppet

好吧,我们已经了解了puppet的工作模式,那么接下来就是,我们如何安装puppet呢?恩,等等,我们好像要安装两种模式呢,master和agent。对的,master和agent是puppet两种不同的运行模式,但它们的安装却是相同的。我们需要在master服务器和所有需要被管理的机器上都安装puppet。

安装puppet需要先安装它的依赖,puppet依赖于ruby和facter。Ruby自然不用多说,因为puppet就是ruby写的,facter是做什么的呢?它是用以侦测机器的环境的,比如说机器是实体机还是虚拟机?机器安装的操作系统是什么?IP地址是什么?有了facter,统统搞定。

1、  安装ruby

版本1.8.7,源代码安装,ruby-1.8.7.tar.gz已经躺在版本库里了。

Ø  解压:

gzip -d -c ruby-1.8.7.tar.gz| tar xf -

Ø  配置:

cd  ruby-1.8.7

./configure

Ø  安装:

sudo make

sudo make install

Ø  运行:

ruby --version


2、  安装facter

版本1.6.3,源代码安装,facter-1.6.3.tar.gz同样已经在版本库里。

Ø  解压:

gzip -d -c facter-1.6.3.tar.gz| tar xf -

Ø  安装:

cd  facter-1.6.3

sudo ruby install.rb

Ø  运行:

facter --version


3、  安装puppet

版本2.7.6,源代码安装,puppet-2.7.6.tar.gz同样已经在版本库里。

Ø  解压:

gzip -d -c puppet-2.7.6.tar.gz| tar xf -

Ø  安装:

cd  puppet-2.7.6

sudo ruby install.rb

Ø  运行:

puppet --version

 

三、      配置puppet

安装完毕,我们开始配置,配置分为三步:配置master、配置agent以及建立master和agent之间的通联。

1、  配置master

Ø  配置/etc/hosts

127.0.0.1       localhost  master.puppet.com

 

Ø  配置puppet配置文件

Puppet的主配置文件为puppet.conf,位于/etc/puppet, 我们不需要改动。

几个重要的配置项:

n  confdir:puppet主工作目录,主要放置puppet配置文件、manifests、认证证书以及模块,静态内容。其中manifests和模块需要被SVN管理。默认/etc/puppet。

n  vardir:puppet运行时数据放置地址,主要有缓存的数据、报表、备份文件等,动态内容。默认/var/lib/puppet。

n  manifestdir:manifests放置的目录,默认/etc/puppet/manifests

n  modulepath:puppet运行时查找模块的搜索路径。同样,模块需要被SVN管理。默认/etc/puppet/modules。

我们可以通过下面命令查看puppet的各项配置:

puppet master –configprintconfdir

 

Ø  创建puppet用户/组

puppet master启动需要创建puppet这个用户和puppet这个用户组。

puppet master --mkusers

 

Ø  启动

puppet master

这是一个后台程序

 

2、  配置agent

Ø  配置/etc/hosts

127.0.0.1      localhost  agent1.puppet.com

10.6.222.87 [masterip]      master.puppet.com

 

Ø  配置puppet配置文件

与master相比,增加server的配置

server =master.puppet.com

 

3、  建立master与agent之间的通联

Ø  agent向master申请ssl证书

puppet agent --test

 

Ø  master认证agent请求

puppet cert list

puppet cert sign agent1.puppet.com

 

Ø  启动agent

puppet agent

 

四、      运行一个测试

好了,我们现在已经建立起puppet整个的运行环境了,是时候测试一下了。还记得在哪里放置我们的manifest吗?是的,在master机器,在manifestdir中。我们建立site.pp这个文件,声明我们想有个helloworld的文件。

#site.pp

    file { "/tmp/helloworld":

        content =>  “hello world!”

}

等待一下,会发生什么?是的,在agent机器上,我们能够看到/tmp/helloworld这个文件被建立了,内容也正是我们期望的“hello world!”。就是这样!很简单!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值