puppet 安装及试用

Life is short , play more!
本文来自lihao's Blog,转载请注明。

什么是Puppet:
puppet是一种Linux、Unix平台的集中配置管理系统,使用自有的puppet描述语言,可管理配置文件、用户、cron任务、软件包、系统服务等。puppet把这些系统实体称之为资源,puppet的设计目标是简化对这些资源的管理以及妥善处理资源间的依赖关系。
puppet采用C/S星状的结构,所有的客户端和一个或几个服务器交互。每个客户端周期的(默认半个小时)向服务器发送请求,获得其最新的配置信息,保证和该配置信息同步。每个puppet客户端每半小时(可以设置)连接一次服务器端, 下载最新的配置文件,并且严格按照配置文件来配置服务器. 配置完成以后,puppet客户端可以反馈给服务器端一个消息. 如果出错,也会给服务器端反馈一个消息.

简单来说,是可以实现自动部署,系统软件自动更新,系统自动配置等功能的一个配置管理系统。 当你有很多固定内容的工作, 有很多的服务器或者工作站事,你就可以考虑puppet。

安装之前:
1. http://docs.puppetlabs.com/guides/installation.html 官方的文档说的很详细。

有些是需要明确注意的:
1) 安装之前,系统必须安装ruby 解析器
2) 关于网络, server端是需要8140 端口可以被client端进行访问。 server就是集中配置管理的服务器。客户端可以认为是被执行自动部署,自动配置的服务器或者工作站。
3) 关于域名解析。 安装之前,必须保证每一个节点(server 和 client) 必须有一个唯一的主机名。 可以设置自己的dns 解析服务器。 或者通过 hosts 文件及自己节点的hostname 来进行设定。 但必须每个节点有唯一的主机名, 并可以互相通过主机名(域名)进行互相访问.

2. 如果是ubuntu,debian,redhat 等,可以通过包管理工具进行方便的安装。 我这里只说明一下tarball安装步骤。

1) 确定安装之前的内容必须做到。 为了模拟c/s 结构的工作模式,我们需要2台机器. 一台作为server, 一台座位client.
2) linux平台需要确认lsb的工具是否都安装了。 一般我们默认安装一个发行版本的linux,都没有问题。 关于lsb 请访问 http://www.ibm.com/developerworks/cn/linux/l-lsb-intr/
Download Puppet http://downloads.puppetlabs.com/puppet/.
Download Facter http://downloads.puppetlabs.com/facter/.
3) 解压,先安装 facter
sudo ruby install.rb
4) 安装puppet
sudo ruby install.rb
5) 配置和启用
手动创建puppet 用户组,手动创建puppet 用户
sudo puppet resource group puppet ensure=present
sudo puppet resource user puppet ensure=present gid=puppet shell=’/sbin/nologin’
创建启动脚本及配置文件

将puppet解压开的conf目录里,有 (Red Hat, Debian, SUSE, systemd, FreeBSD, Gentoo, Solaris) 文件夹。 将里面的配置文件都拷贝到 /etc/puppet/目录里。

6) client.init 和 server.init 分别为客户端及服务端的启动脚本。

启动之前,我们将/etc/puppet/puppet.conf 里加入 server = serverhostname (serverhostname 为server 的主机名)

启动客户端及服务端后。 在服务端执行:
puppet cert list -all
puppetagent.localdomain (34:AE:C3:FA:8C:23:23:BC:FE:D1:2F:DA:F2:F6:34:A9)
+ qa-admin-01 (FE:1B:F4:BA:0D:D9:CE:CE:17:0F:F6:AB:D0:94:B1:BE)
puppet cert sign -all
+ puppetagent.localdomain (34:AE:C3:FA:8C:23:23:BC:FE:D1:2F:DA:F2:F6:34:A9)
+ qa-admin-01 (FE:1B:F4:BA:0D:D9:CE:CE:17:0F:F6:AB:D0:94:B1:BE)

7) 在server端,建立/etc/puppet/manifests/site.pp 内容如下
node default {

file {
“/tmp/temp1.txt”: content=>”hello”;
}
file {
“/tmp/temp2.txt”: content=>”hello\n”;
}
file {
“/tmp/temp3.txt”: content=>”hello\n”;
}
}

文件,及文件夹删除,创建,拷贝脚本示例请阅读该文章 点击这里

8) 在客户端, 手动触发或者等半个小时候, 可以看到在客户端的 /tmp/里看到 3个文件。

客户端手动触发puppet, 则首先将puppet 的客户端服务关闭掉。 例如/etc/init.d/client.init stop 。 然后运行 puppet agent –test 即可。 如果puppet server端配置的puppet 脚本有问题,则会有提示。

此篇文章已被阅读2340 次


发表评论

电子邮件地址不会被公开。 必填项已用*标注