设为首页 收藏本站
查看: 1271|回复: 0

[经验分享] 初识puppet

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-11-26 13:14:30 | 显示全部楼层 |阅读模式
  

  话说工欲善其事,必先利其器。当我们面对几十台机器需要同时进行环境管理时,一个适合的工具就非常重要了,这里我们介绍的工具是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管理起来,直接回滚,真爽。
   DSC0000.gif
  二、      安装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、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-143907-1-1.html 上篇帖子: puppet视频 下篇帖子: puppet 简介
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表