xiaowei8782088 发表于 2015-11-26 14:32:10

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]
查看完整版本: puppet笔记(1)