tilac 发表于 2015-11-26 13:14:30

初识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 -
  Ø配置:
  cdruby-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 -
  Ø安装:
  cdfacter-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 -
  Ø安装:
  cdpuppet-2.7.6
  sudo ruby install.rb
  Ø运行:
  puppet --version
  
  三、      配置puppet
  安装完毕,我们开始配置,配置分为三步:配置master、配置agent以及建立master和agent之间的通联。
  1、配置master
  Ø配置/etc/hosts
  127.0.0.1       localhostmaster.puppet.com
  
  Ø配置puppet配置文件
  Puppet的主配置文件为puppet.conf,位于/etc/puppet, 我们不需要改动。
  几个重要的配置项:
  nconfdir:puppet主工作目录,主要放置puppet配置文件、manifests、认证证书以及模块,静态内容。其中manifests和模块需要被SVN管理。默认/etc/puppet。
  nvardir:puppet运行时数据放置地址,主要有缓存的数据、报表、备份文件等,动态内容。默认/var/lib/puppet。
  nmanifestdir:manifests放置的目录,默认/etc/puppet/manifests
  nmodulepath: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      localhostagent1.puppet.com
  10.6.222.87       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]
查看完整版本: 初识puppet