puppet笔记(1)
前几天,亮哥让我看puppet,他们准备部署PanelManager系统了(他们辛苦了两个月了,终于快结束了),在实习的时候看过一些puppet,不过已经忘得差不多了,这几天作了一些实验,重新看了puppet的语法,把其中的一些我认为关键的部分记录下来,测试是在centos下进行的。1.安装
centos下面可以用下面脚本安装(别人提供的)
#!/bin/bash
rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
echo "" >> /etc/yum.repos.d/epel.repo
echo "" >> /etc/yum.repos.d/epel.repo
echo "name=epel puppet" >> /etc/yum.repos.d/epel.repo
echo "baseurl=http://tmz.fedorapeople.org/repo/puppet/epel/5/\$basearch/" >> /etc/yum.repos.d/epel.repo
echo "enabled=0" >> /etc/yum.repos.d/epel.repo
echo "gpgcheck=0" >> /etc/yum.repos.d/epel.repo
echo "" >> /etc/yum.repos.d/puppet.repo
echo "name=Puppet Labs Packages" >> /etc/yum.repos.d/puppet.repo
echo "baseurl=http://yum.puppetlabs.com/base/" >> /etc/yum.repos.d/puppet.repo
echo "enabled=0" >> /etc/yum.repos.d/puppet.repo
echo "gpgcheck=0" >> /etc/yum.repos.d/puppet.repo然后执行 yum install puppet-serveryum install puppet来安装服务端和客户端
在ubuntu下可以通过源安装 puppet ,puppetmaster
2.配置
注意:修改机器主机名,因为puppet是基于证书的,证书中包含主机名;centos下修改主机名/etc/sysconfig/network的文件中,而ubuntu的是在/etc/hosts文件中。
以下配置在目录 /etc/puppet/
auth.conf
fileserver.conf
puppet.conf
puppet是主要的配置文件:
在 server端中需要以下配置
开启tcp端口 8140 ,使client能访问
启动 停止
/etc/init.d/puppetmaster{start|stop}
在client端中需要以下配置
在auth.conf中的
path /
auth any
之前添加如下
path /run
method save
allow ${server_hostname}
在puppet.conf中添加下面的内容:
server = ${server_hostname}
runinterval = 3600 ###每隔3600s后client主动请求server
listen = true ###使server可以kick开启tcp端口 8139 ,使server能访问
启动 停止
/etc/init.d/puppet {start|stop}
一定要按上面的配置,而且要注意内容是否正确,中间就是出了好多问题,配置完之后就是认证,首先由client发起请求:
puppet agent --testnote :出现
Exiting; no certificate found and waitforcert is disabled可以忽略,查看server端有无收到认证请求
然后由server进行认证:
puppet cert list --all ##得到client注册过来的certname,默认hostname;
puppet cert sign ${client_certname}
client,server的时间不一致可能会导致认证失败,出现 certificate verify failed ,需要同步,然后删除之前生成的ssl文件(/var/lib/puppet/ssl),重新认证。
文件的目录结构如下,注意目录的名字是不能改变的,昨天把templates写成template调试了半天,悲剧啊
modules/ manifests/site.pp,node.pp...auth.conf puppet.conf fileserver.confnamespace.conf(后两个配置文件只有在用到相应的功能的时候才会用到,装完之后可能会不存在该文件)modules目录位置
/etc/puppet/modules
/usr/share/puppet/modules (建议在此编写模块,在主site.pp引用模块)modules文件结构
mymodule/ 模块名字
manifests/
init.pp 入口的pp,含有一个class,名字为mymodule node.pp 包含一些节点信息(尽量放在此处,也可以放在/etc/puppet/manifests下,中其中include要包含的类和函数)
myclass.pp — class named mymodule::myclass.
mydefinedtype.pp — defined type named mymodule::mydefinedtype.
mydir/
foo.pp — class named mymodule::mydir:foo.
files/ -存放需要直接拷贝的文件
templates/ -存放在部署过程中会变动的文件,如配置文件
一些说明:1.puppet的文件的调用顺序是,首先调用manifests下面的site.pp,若site.pp引用了modules.pp或者node.pp则去相应的文件中去调用,自己写的每个modules下必须有个init.pp。2.目录的名字是唯一的,如果改掉可能就会出现错误PanelManager2:/etc/puppet>tree
.
|-- auth.conf
|-- fileserver.conf
|-- manifests
| |-- modules.pp
| |-- node.pp
| `-- site.pp
|-- modules
| `-- test
| |-- manifests
| | |-- init.pp
| | |-- node.pp
| | `-- tconf.pp
| `-- templates
| `-- file.erb
|-- namespaceauth.conf
`-- puppet.conf
5 directories, 11 files
页:
[1]