在 CentOS 和 RHEL 上安装 Puppet 服务器和客户端

当手中有相当多的机器需要管理的时候,自动化处理冗余又无聊的任务对系统管理员来说就很重要了。很多管理员习惯了自己写脚本模拟复杂软件之间的调度。不幸的是,脚本会过时,脚本的作者会离职,如果不花费巨大精力来维护这些脚本的话,它们早晚会一点儿用也没有。如果能有一个系统,任何人都可以使用、安装工具,不论其受雇于何人,那真是太期待了。目前已有几种系统可以解决这类需求,这篇教程将介绍其中之一——Puppet——的使用方法。

Puppet 是什么?

Puppet 是一款为 IT 系统管理员和顾问们设计的自动化软件,你可以用它自动化地完成诸如安装应用程序和服务、补丁管理和部署等工作。所有资源的相关配置都以“manifests”的方式保存,单台机器或者多台机器都可以使用。如果你想了解更多内容,Puppet 实验室的网站上有关于 Puppet 及其工作原理的更详细的介绍。

Puppet 学习系列:

Puppet 学习一:安装及简单实例应用

Puppet学习二:简单模块配置和应用

相关阅读:

有关Puppet agent端三种备份恢复方案探讨研究
选择更安全的方式注册你的Puppet节点
通过配置SSH深刻理解Puppet的语法及工作机制
Puppet利用Nginx多端口实现负载均衡
CentOS(5和6)下Puppet的C/S模式实例

本教程要做些什么?

在这篇教程里,我们将一起安装配置一个 Puppet 服务器,然后在我们的客户端服务器(译注:这里的“客户端服务器”指需要部署业务逻辑的服务器)上完成一些基本配置。

准备工作

由于 Puppet 不是 CentOS 或 RHEL 发行版的基本仓库,所以我们得手动添加 Puppet 实验室提供的自定义仓库。在所有你想使用 Puppet 的地方执行以下命令安装这个仓库(版本不同,对应的 RPM 文件名可能略有不同)。

对于 CentOS/RHEL 6.5:

# rpm -ivh https://yum.puppetlabs.com/el/6.5/products/x86_64/puppetlabs-release-6-10.noarch.rpm

对于 CentOS/RHEL 7:

# rpm -ivh https://yum.puppetlabs.com/el/7/products/x86_64/puppetlabs-release-7-10.noarch.rpm

安装服务器端

在你打算用作 master 的服务器上安装 "puppet-server" 包。

# yum install puppet-server

安装完成后,设置 Puppet 服务器开机自动启动,然后启动它。

# chkconfig puppetmaster on

# service puppetmaster start

现在服务器已经运行起来了,我们试试看我们的网络能不能访问到它。

对于使用 iptables 当做防火墙的 CentOS/RHEL 6,在 /etc/sysconfig/iptables 文件的 OUTPUT ACCEPT 小节里添加下面这一行。

-A INPUT -m state --state NEW -m tcp -p tcp --dport 8140 -j ACCEPT

重新启动 iptables 服务让刚才的修改生效。

# service iptables restart

在安装了防火墙的 CentOS/RHEL 7 上,我们这么做:

# firewall-cmd --permanent --zone=public --add-port=8140/tcp

# firewall-cmd --reload

安装客户端

执行下面的命令,在客户端节点安装 Puppet 客户端。

# yum install puppet

安装完成后,确保 Puppet 会随开机自动启动。

# chkconfig puppet on

Puppet 客户端需要知道 Puppet master 服务器的地址。最佳方案是使用 DNS 服务器解析 Puppet master 服务器地址。如果你没有 DNS 服务器,在 /etc/hosts 里添加类似下面这几行也可以:

1.2.3.4 server.your.domain

2.3.4.5 client-node.your.domain

1.2.3.4 对应你的 Puppet master 服务器 IP 地址,“server.your.domain”是你的 master 服务器域名(默认通常是服务器的 hostname),“client-node.your.domain”是你的客户端节点。包括 Puppet master 和客户端,所有相关的服务器都要在 hosts 文件里配置。

完成这些设置之后,我们要让 Puppet 客户端知道它的 master 是谁。默认情况下,Puppet 会查找名为“puppet”的服务器,但通常这并不符合你网络环境的真实情况,所以我们要改成 Pupper master 服务器的完整域名。打开文件 /etc/sysconfig/puppet,把 PUPPET_SERVER 变量的值改成你在 /etc/hosts 文件里指定的 Puppet master 服务器的域名。

PUPPET_SERVER=server.your.domain

master 服务器名也要在 /etc/puppet/puppet.conf 文件的“[agent]”小节里事先定义好。

server=server.your.domain

现在可以启动 Puppet 客户端了:

# service puppet start

强制我们的客户端在 Puppet master 服务器上登记:

# puppet agent --test

你会看到类似于下面的输出。别怕,这是正常现象,因为服务器还没有在 Puppet master 服务器上验证过。

Exiting; no certificate found and waitforcert is disabled

返回 Puppet master 服务器,检查证书验证请求:

# puppet cert list

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/bee85c776ebec5eb437b4ed48c1966be.html