Puppet在不同平台上的安装方法不一样,个人不是特别推荐用源码的方式,推荐使用yum和apt-get,因为既然用到了puppet环境,说明应用场景的机器数量还是很多的,yum和apt-get更为方便。很多朋友比较关心puppet master和puppet agent端的版本不一致的问题,其实就一个规则就行:puppet master的版本号是必须高于puppet agent的,二者的版本不要相差太远,差太远了就容易连接不上。
Puppet对时间要求是非常严格的,这是因为证书申请是通过SSL连接,而SSL连接依赖主机上的正确时间,如果时间不正确,得到的错误信息而导致证书申请失败,所以我们在puppet client连接puppet
master时都应该通过ntpdate命令来自动对时,如果Xen虚拟机要加入puppet环境,建议也要修改sysctrl内核,然后再通过ntpdate命令来自动对时,详见:
http://andrewyu.blog.51cto.com/1604432/1301516。
定义(define)在puppet的官方文档里是没有这一说法的,我们可以理解为资源的组合容器,很多资料和文档将其翻译成函数,这里是错误的;puppet的函数是puppet master上运行的,并且也只能在puppet master上面运行,比如包含类和模块的include指令,我们将其称之为puppet的函数,函数和定义还是有区别的。
在模块中定义的类要跟模块同名的,比如nginx模块中定义的类起名也要为nginx,不然puppet客户端连接puppet服务器时会报报不到class的错误,模块可以由多个类来组成,我们可以使用::命名空间语法作为在模块中创建结构和组织的一种方法,比如nginx::install,nginx::config。
自动化运维工具puppet的工作流程、基础概念及入门学习资料见附件。