当前位置:首页 > 开发 > 研发管理 > 正文

关于puppet

发表于: 2012-07-20   作者:cryolite   来源:转载   浏览:
摘要: 推荐书 Pro puppet 无法忍受 Puppet Cookbook的排版 这里有个更好的 Puppet Cookbook 1. 基本概念 puppet是一个CS结构的配置管理工具,用ruby开发的。 作为服务器端的S,puppet的术语叫master 作为客户端的C,puppet的术语叫agent 在每台机器上所做的配置,puppet术语叫config
推荐书
Pro puppet

无法忍受
Puppet Cookbook的排版
这里有个更好的 Puppet Cookbook


1. 基本概念

puppet是一个CS结构的配置管理工具,用ruby开发的。

作为服务器端的S,puppet的术语叫master
作为客户端的C,puppet的术语叫agent
在每台机器上所做的配置,puppet术语叫configuration

1.1 ubuntu下的启动
启动puppet master:
master# service puppetmaster start
为了调试方便,也可以让master在控制台上直接输出日志方便察看:
puppet master --verbose --no-daemonize

puppet agent的启动:
修改/etc/default/puppet配置文件,自动随机启动
agent# service puppet start

为了测试方便也可以手工启动,指定master,例如
agent# puppet agent --server=puppet.mysite.com --no-daemonize --onetime


在agent连接master后,还需要在master机器上给agent授权才能访问:
察看需要授权的agent:
master# puppet cert --list
  agent2.mysite.com (F6:68:CB:27:E7:17:5E:60:DA:39:66:A3:A5:56:E4:DD)

给指定的agent授权
master# puppet cert --sign agent2.mysite.com

之后,agent就可以从master读取configuration进行配置了。


1.2 Hello, puppet
在master端,需要配置site.pp文件(Pro Puppet说没有这个文件master不能启动?)
可以在site.pp文件中为指定配置文件所在位置,一般在site.pp中导入nodes.pp文件,后者为每个节点指定哪些配置适用。这两个pp文件一般都在/etc/puppet/manifests目录下
master# vim manifests/site.pp
import 'nodes.pp'


master# vim manifests/nodes.pp
node default {
  include mytest
}

default表示所有节点的缺省配置,当然也可以为指定节点指定配置,例如
node 'agent02.mysite.com' {
  include mytest
}

通过正则表达式指定节点:
node /^agent\d+\.mysite\.com/ {
  include mytest
}



然后在/etc/modules/下创建目录mytest/manifests和文件init.pp
master# mkdir -p mytest/manifests
master# vim modules/mytest/manifests/init.pp
class mytest {
  notify {hi: 
    message => "Hello, Puppet",
  }
}


在agent上测试一下:
agent# puppet agent --server=puppet.mysite.com --no-daemonize --onetime --verbose

info: Caching catalog for a2.mysite.com
info: Applying configuration version '1343644644'
notice: Hello, Puppet
notice: /Stage[main]/Mytest/Notify[hi]/message: defined 'message' as 'Hello, Puppet'    
notice: Finished catalog run in 0.20 seconds  


用agent安装一个软件试试,比如tree。修改init.pp文件
class mytest {
  notify {hi: 
    message => "Hello, Puppet",
  }
  package { tree:
    ensure => present,
  }
}


然后在agent机器上运行一下,就发现tree已经被puppet装上了。


其它

关于变量:
http://docs.puppetlabs.com/guides/language_guide.html#variables

templates目录下的erb模版的问题

如果用facter中的变量,直接使用:
<%= ipaddress %>

如果用自己pp文件中定义的变量,需要加@符号在变量名前:
<%= @myvar %>




常用资源类型:
http://docs.puppetlabs.com/references/stable/type.html


pull和push

puppet是个 pull模型,也就是说agent从master拉取配置到本地执行。
如果有个命令想让所有agent执行,也就是说想从master将指令push到agents,可以在master的机器上运行:
puppet kick


这样所有连接的agents就会执行pull操作,从master拉取配置到本地

参考 这里



一个常用的vim支持:
首先要有pathogen
https://github.com/tpope/vim-pathogen/
然后安装
https://github.com/rodjek/vim-puppet/

riak的puppet模块:
http://forge.puppetlabs.com/bruce/riak
不过好像无法访问

Install Riak using Basho packages on Ubuntu/Debian
https://github.com/brhelwig/puppet-riak

另外一个,不过有一年没更新了
https://github.com/monokrome/puppet-riak

https://gist.github.com/1038441

关于puppet

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号