推荐书
Pro puppet
无法忍受
Puppet Cookbook的排版
这里有个更好的[url=http://www.puppetcookbook.com/]Puppet Cookbook[/url]
[size=xx-large]1. 基本概念[/size]
puppet是一个CS结构的配置管理工具,用ruby开发的。
作为服务器端的S,puppet的术语叫master
作为客户端的C,puppet的术语叫agent
在每台机器上所做的配置,puppet术语叫configuration
[size=x-large]1.1 ubuntu下的启动[/size]
启动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进行配置了。
[size=x-large]1.2 Hello, puppet[/size]
在master端,需要配置site.pp文件(Pro Puppet说没有这个文件master不能启动?)
可以在site.pp文件中为指定配置文件所在位置,一般在site.pp中导入nodes.pp文件,后者为每个节点指定哪些配置适用。这两个pp文件一般都在/etc/puppet/manifests目录下
master# vim manifests/site.pp
master# vim manifests/nodes.pp
default表示所有节点的缺省配置,当然也可以为指定节点指定配置,例如
通过正则表达式指定节点:
然后在/etc/modules/下创建目录mytest/manifests和文件init.pp
master# mkdir -p mytest/manifests
master# vim modules/mytest/manifests/init.pp
在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文件
然后在agent机器上运行一下,就发现tree已经被puppet装上了。
[size=xx-large]其它[/size]
关于变量:
http://docs.puppetlabs.com/guides/language_guide.html#variables
[size=x-large]templates目录下的erb模版的问题[/size]
如果用facter中的变量,直接使用:
<%= ipaddress %>
如果用自己pp文件中定义的变量,需要加@符号在变量名前:
<%= @myvar %>
常用资源类型:
http://docs.puppetlabs.com/references/stable/type.html
[size=large]pull和push[/size]
puppet是个[url=http://agiletesting.blogspot.com/2010/03/automated-deployment-systems-push-vs.html]pull模型[/url],也就是说agent从master拉取配置到本地执行。
如果有个命令想让所有agent执行,也就是说想从master将指令push到agents,可以在master的机器上运行:
这样所有连接的agents就会执行pull操作,从master拉取配置到本地
参考[url=https://groups.google.com/forum/?fromgroups=#!topic/puppet-users/8z05rmH0RX4]这里[/url]
一个常用的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
Pro puppet
无法忍受
Puppet Cookbook的排版
这里有个更好的[url=http://www.puppetcookbook.com/]Puppet Cookbook[/url]
[size=xx-large]1. 基本概念[/size]
puppet是一个CS结构的配置管理工具,用ruby开发的。
作为服务器端的S,puppet的术语叫master
作为客户端的C,puppet的术语叫agent
在每台机器上所做的配置,puppet术语叫configuration
[size=x-large]1.1 ubuntu下的启动[/size]
启动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进行配置了。
[size=x-large]1.2 Hello, puppet[/size]
在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装上了。
[size=xx-large]其它[/size]
关于变量:
http://docs.puppetlabs.com/guides/language_guide.html#variables
[size=x-large]templates目录下的erb模版的问题[/size]
如果用facter中的变量,直接使用:
<%= ipaddress %>
如果用自己pp文件中定义的变量,需要加@符号在变量名前:
<%= @myvar %>
常用资源类型:
http://docs.puppetlabs.com/references/stable/type.html
[size=large]pull和push[/size]
puppet是个[url=http://agiletesting.blogspot.com/2010/03/automated-deployment-systems-push-vs.html]pull模型[/url],也就是说agent从master拉取配置到本地执行。
如果有个命令想让所有agent执行,也就是说想从master将指令push到agents,可以在master的机器上运行:
puppet kick
这样所有连接的agents就会执行pull操作,从master拉取配置到本地
参考[url=https://groups.google.com/forum/?fromgroups=#!topic/puppet-users/8z05rmH0RX4]这里[/url]
一个常用的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