分类: 系统运维
2015-05-14 18:00:39
Puppet是一个用来管理计算机系统配置的开源框架和工具集合。可以用来管理一台主机的整个生命周期,从初始化安装,升级,维护以及最后的下架。
Puppet简单模型:部署,配置语言及资源抽象,事务层。
部署通常是C/S架构,服务端被称为Master,客户端软件被称为agent,主机本身则被称为一个节点。
资源:是Puppet最基础的元素。资源可以是文件,服务,软件包,自定义脚本等。 资源的结构:
类型 { 标题:
属性 => 值
}
资源抽象:每个资源有很多提供者,Puppet根据Facter返回的值来选择合适的提供者。
Puppet事务层就是它的引擎。负责的工作有:
CentOS:
yum install ruby ruby-libs ruby-shadow
yum -Uvh
master节点:
yum install puppet puppet-server facter
agent节点:
yum install puppet facter
Puppet配置
配置文件:/etc/puppet.conf
如果文件不存在,用puppetmasterd --genconfig > puppet.conf 生成。
puppet.conf构造和ini格式的配置文件非常相似。[agent]段用于配置Puppet agent, [master]段用于配置Puppet master。
还有个[main]段存放全局配置,puppet的所有组件遵循[main]段的配置。
site.pp文件
这个文件告诉你去哪里寻找并载入指定的客户端配置。
服务器端配置好并对客户端认证过后,就可以在对客户端进行部署了。
手动认证过程:
master:
启动服务 /etc/init.d/puppetmaster start
agent:
puppet agent --test
master:
puppet cert --sign --all 对所有等待的证书进行签名
也可以把all换成对应的节点
puppet cert --list --all
可以看到签名过的节点前有个"+"
单个节点的定义:
node puppet.example.com{
}
处理类似的节点 node 'web1.example.com', 'web2.example.com', 'web1.example.com' {}
或者 node /^web\d+\.example\.com$/ {}
知道默认节点 node default {}
节点继承 node base {}
node 'web example.com' inherits base {}
以sudo为例说明
sudo/
sudo/manifests
sudo/manifests/init.pp
sudo/files
sudo/templates
在init.pp中会有一个和模块名同名的类。class sudo {}.
用include将模块应用到某个节点。node 'puppet.example.com' { include sudo}
模板测试:
erb -x -T '-' mytemplate.erb ruby -c