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

[经验分享] Puppet笔记:介绍及基本用法

[复制链接]

尚未签到

发表于 2018-8-3 10:24:52 | 显示全部楼层 |阅读模式
  转自:http://blog.csdn.net/kozazyh/archive/2010/05/13/5588707.aspx
  Puppet笔记:介绍及基本用法
  Puppet是一个可以管理大量linux主机的系统,它的中心思想是让主机上的某个资源与配置文件(manifest)对该资源的设计一致,这里资源可以指一个文件、一个用户、一个软件包、一条cron中的任务等实体。例如下面的一段manifest:
  file { “/etc/sudoers”:
  owner => root,
  group => root,
  mode => 440
  }
  它的作用就是指明了:/etc/sudoers这个文件,其owner应为root,group应为root,mod应为440。执行的时候,客户端会判断这三点是否符合,如果不符合,它会去设置user、group、mode等的值为设置的值。
  安装
  Puppet的结构也是一个唯一(以后会有failover冗余)的中心Server与所有的Client组成。
  Puppet是基于Ruby写成的,所以安装前要准备好Ruby环境,并且需要安装RubyGems以用来安装。Server与Client的安装没有区别,都在相同的包内,只是中心的server上运行的是puppetmasterd,被管理机上运行的是puppetd。另外,每台主机上一定要配置好自己的hostname,之后每台机器要以hostname区分。
  如果ruby环境和gems都装好了,执行下面几句就可以安装好puppet了:
  wget puppet.proximic.cnpuppet/facter-1.5.5.gem
  gem install facter-1.5.5.gem
  wget puppet.proximic.cn/puppet/puppet-0.24.8.gem
  gem install puppet-0.24.8.gem
  使被管理机与中心机连接
  server端首次运行前,编辑/etc/puppet/manifests/site.pp文件,内容可以用最基本的:
  # site.pp
  file { "/etc/sudoers":
  owner => root, group => root, mode => 440
  }启动server,执行:puppetmasterd –mkusers,这个参数是为了生成puppet运行所用用户,以后执行就不需要了。
  然后在客户机上执行:puppetd –server <你的服务器地址> –waitforcert 60 –test,这时客户机会去连server,但是由于连接是在ssl上的,而Server还没有sign过客户的cert,这时客户机被被断开。到server上执行:puppetca –list,会显示出刚才这个客户的hostname为等待签名的客户,执行:puppetca –sign <客户hostname> 即可为其签名。这时再到客户机上执行上面的puppetd命令,即可看到客户在正常地连接server,并且检测上面关于sudoers文件的策略了。
  向被管理机分发文件
  通过puppet可以向被管理机上推送文件,方法是使用file类型的source属性,例如:
  file {
  ”/etc/profile.d/java.sh”:
  source => “puppet://puppet.domain.com/profiles/javaprofile.sh”,
  owner => root,
  group => root,
  mode => 755
  }
  这里的文件来源是什么呢?puppetmasterd自带一个简易的文件服务器,配置方法是创建并编辑/etc/puppet/fileserver.conf ,其中每个section是一个module,module就是指上述puppet://路径中域名之后的第一段(即“profiles”),下面可以配置该module对应的server上的物理路径以及acl等,例如:
  [profiles]
  path /home/misc/profiles
  allow *
  这样如果客户端上该文件不存在,或者内容不同(通过checksum),就会从server上把这个文件拉过去。
  执行脚本
  很复杂的部署任务肯定不能完全靠puppet完成,这时我会写一个部署用的脚本。Puppet有一种“资源”叫exec,通过它可以执行程序,还可以设置执行时的path,环境变量,user/group,是否记录output等,很方便,例如:
  exec { “/root/puppet/nagiosclient/nrpe.sh”:
  cwd => “/root/puppet”,
  timeout => 7200,
  logoutput => on_failure,
  user => root,
  path => [&quot;/sbin&quot;, &quot;/usr/sbin&quot;, &quot;/usr/local/sbin&quot;, &quot;/root/bin&quot;, &quot;/usr/local/bin&quot;, &quot;/usr/bin&quot;, &quot;/bin&quot;, &quot;/usr/lib64/jvm/jre/bin&quot;],
  require => File[&quot;/root/puppet/nagiosclient/nrpe.sh&quot;]
  }
  想在各客户机上执行时,我一般就是先用上述file资源的配置把该脚本推送到客户机上,然后用空上exec资源去执行它,注意exec中要配置好require 该file,否则无法保证exec在file之类在客户上执行。
  参考:
  http://blog.loudly.me/tag/puppet/
  Puppet中文wiki: http://puppet.wikidot.com/

运维网声明 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-545758-1-1.html 上篇帖子: 支持更多客户端,puppet之mongrel+nginx模式 下篇帖子: 开源自动化配置管理工具Puppet入门教程 
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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