如何在Ubuntu 14.04中安装Puppet Master和客户端
版本1.0
作者:Srijan Kishore <s [dot] kishore [at] ispconfig [dot] org>
在Twitter上关注youcl
本文介绍如何在Ubuntu 14.04server上安装和配置Puppet,我还将连接一个Puppet客户端与Ubuntu 14.04桌面。 Puppet是一种配置管理系统,可让您定义IT基础架构的状态,然后自动执行正确的状态。 无论您是管理几台服务器还是数千台物理和虚拟机,Puppet自动执行系统管理员通常手动执行的任务,释放时间和精神空间,以便系统管理员可以为提供更高业务价值的项目工作。
无论您是部署供应商提供的应用程序还是与内部软件开发人员合作,Puppet都会自动化软件交付过程的每一步:从配置物理和虚拟机到编排和报告; 从早期代码开发到测试,生产发布和更新。 Puppet确保一致性,可靠性和稳定性。 它还有助于系统管理员和开发人员之间更密切的协作,从而更有效地提供更清洁,更好设计的代码。
1初步说明
本教程基于Ubuntu 14.04服务器和Ubuntu 14.04桌面,因此您应该在继续本教程之前设置一个基本的Ubuntu 14.04服务器和桌面安装。 系统应该有一个静态IP地址。 在本教程中,我使用192.168.0.100
作为Ubuntu服务器的IP地址和192.168.0.101
作为Ubuntu桌面的IP,并将server1.example.com
作为Ubuntu服务器的主机名称,将desktop1.example.com
作为Ubuntu桌面的主机名。
在Ubuntu服务器和Ubuntu Desktop中, / etc / hosts
文件中必须有这个条目。 这些条目在服务器和客户端都是常见的。
nano /etc/hosts
[...]
192.168.0.100 server1.example.com server1 192.268.0.101 desktop1.example.com desktop1
除了这两个服务器和桌面必须具有时间同步之外,它将在服务器和桌面机器中处理如下:
ntpdate pool.ntp.org ; apt-get update && sudo apt-get -y install ntp ; service ntp restart
Ubuntu服务器14.04上的Puppet Master 2安装
要安装Puppet master,我们将最新的存储库安装Puppet,如下所示:
cd /tmp
wget https://apt.puppetlabs.com/puppetlabs-release-trusty.deb
dpkg -i puppetlabs-release-trusty.deb
apt-get update
apt-get install puppetmaster
检查Puppet版本为:
puppet -V
root@server1:/tmp# puppet -V
3.7.1
root@server1:/tmp#
我们有Puppet版本为3.7.1。 现在我们需要锁定Puppet版本更新,因为这会更新Puppet时会阻碍配置。 它将通过如下编辑文件完成:
nano /etc/apt/preferences.d/00-puppet.pref
将新创建的文件中的条目添加为:
# /etc/apt/preferences.d/00-puppet.pref
Package: puppet puppet-common puppetmaster-passenger
Pin: version 3.7*
Pin-Priority: 501
在系统中运行更新时,它不会更新Puppet。
接下来我们将更改配置文件,如下所示:
nano /etc/puppet/puppet.conf
[main] logdir=/var/log/puppet vardir=/var/lib/puppet ssldir=/var/lib/puppet/ssl rundir=/var/run/puppet factpath=$vardir/lib/facter #templatedir=$confdir/templates [master] # These are needed when the puppetmaster is run by passenger # and can safely be removed if webrick is used. ssl_client_header = SSL_CLIENT_S_DN ssl_client_verify_header = SSL_CLIENT_VERIFY
只需在模板中
注释templateated $ = $ confdir / templates
并保存文件。
现在我们将停止并启动服务:
service puppetmaster stop
service puppetmaster start
现在,主Puppet服务器已经准备好了。
Ubuntu Desktop 14.04中的Puppet客户端安装
现在我们的目标是将Ubuntu Desktop安装并配置为Puppet主机Ubuntu Server的Puppet客户端。 您的客户端必须配置为/ etc / hosts
,除了Ubuntu Desktop必须是上述第1章所述的时间同步文件。接下来我们将安装Puppet,如下所示:
cd /tmp
wget https://apt.puppetlabs.com/puppetlabs-release-trusty.deb
dpkg -i puppetlabs-release-trusty.deb
apt-get update
apt-get install puppet
检查Puppet版本为:
puppet -Vroot @ desktop1:/ tmp#puppet -V
3.7.1
root @ desktop1:/ tmp#
我们有Puppet版本为3.7.1。 现在我们需要锁定Puppet版本更新,因为这会更新Puppet时会阻碍配置。 它将通过如下编辑文件完成:
nano /etc/apt/preferences.d/00-puppet.pref
将新创建的文件中的条目添加为:
# /etc/apt/preferences.d/00-puppet.pref
Package: puppet puppet-common puppetmaster-passenger
Pin: version 3.7*
Pin-Priority: 501
在系统中运行更新时,它不会更新Puppet。
接下来我们将更改配置文件,如下所示:
nano /etc/puppet/puppet.conf
[main] logdir=/var/log/puppet vardir=/var/lib/puppet ssldir=/var/lib/puppet/ssl rundir=/var/run/puppet factpath=$vardir/lib/facter #templatedir=$confdir/templates #[master] ## These are needed when the puppetmaster is run by passenger ## and can safely be removed if webrick is used. #ssl_client_header = SSL_CLIENT_S_DN #ssl_client_verify_header = SSL_CLIENT_VERIFY [agent] server = server1.example.com
只要对上面提到的行进行评论,并添加代理条目并保存文件。
接下来,我们需要编辑文件vi / etc / default / puppet,并从no更改为yes作为belo:
nano /etc/default/puppet
[...]
START=yes
[...]
现在我们准备开始Puppet服务了,这样做将会如下:
service puppet start
现在我们的客户机准备与Puppet Master服务器进行通信。
4从Puppet大师到Puppet客户的证书交换
成功配置Puppet客户端Ubuntu Desktop将在接受Master Puppet服务器的任何管理指令之前搜索Puppet主服务器并请求证书请求。
要查看此类证书请求,请在Puppet Master Ubuntu服务器上运行该命令。
puppet cert list
root@server1:~# puppet cert list
"desktop1.example.com" (SHA256) BD:F7:7C:76:48:09:C5:FE:0C:A8:CD:81:92:1D:A4:1F:15:1C:1A:6E:DE:C1:3C:B4:CA:FC:C6:2F:B4:9A:91:74
root@server1:~#
这意味着有一台名为dekstop1.example.com
的机器已经存在并要求证书请求。 现在Puppet主服务器必须从Puppet客户端签名证书。 可以做到如下:
puppet cert sign desktop1.example.com
输出将如下所示:
root @ server1:〜#puppet cert sign desktop1.example.com注意:desktop1.example.com的签名证书请求
注意:删除文件Puppet :: SSL :: CertificateRequest desktop1.example.com在'/var/lib/puppet/ssl/ca/requests/desktop1.example.com.pem'
root @ server1:〜#
这意味着从Puppet主机接收台式机的请求。 我们也可以通过命令检查:
puppet cert list -allroot @ server1:〜#puppet cert list -all
+“desktop1.example.com”(SHA256)7A:B7:CE:C4:A0:05:99:E7:E2:53:AD:D2:7F:6E:B5:38:CA:87:E0:8D :C7:0E:71:89:82:E1:17:FA:9D:B1:01:6D
+“server1.server1.example.com”(SHA256)FF:E2:49:B9:2F:B4:D1:79:21:E9:1A:83:22:FA:DB:E8:5D:9B:9A :1C:E1:4D:83:B9:16:9D:FD:8B:72:FD:62:5F(alt name:“DNS:puppet”,“DNS:puppet.server1.example.com”,“DNS :server1.server1.example.com“)
root @ server1:〜#
输出中的上述+
号显示Puppet主ubuntu服务器上的成功证书签名。
要在Puppet Client Ubuntu桌面上查看客户端证书指纹,请运行:
puppet agent --fingerprint
root@desktop1:~# puppet agent --fingerprint
(SHA256) 7A:B7:CE:C4:A0:05:99:E7:E2:53:AD:D2:7F:6E:B5:38:CA:87:E0:8D:C7:0E:71:89:82:E1:17:FA:9D:B1:01:6D
root@desktop1:~#
同样,我们可以添加任何数量的客户端Puppet主Ubuntu服务器,并从客户端签署cert请求。 如果对于任何管理需求,您希望从Puppet主ubuntu服务器中撤销证书,我们可以运行:
puppet cert clean desktop1.example.com
root@server1:~# puppet cert clean desktop1.example.com
Notice: Revoked certificate with serial 3
Notice: Removing file Puppet::SSL::Certificate desktop1.example.com at '/var/lib/puppet/ssl/ca/signed/desktop1.example.com.pem'
Notice: Removing file Puppet::SSL::Certificate desktop1.example.com at '/var/lib/puppet/ssl/certs/desktop1.example.com.pem'
root@server1:~#
为了确保在Puppet Master Ubuntu服务器上完全删除了证书,我再次明确地清除了它们
puppet cert -c
注意上面我刚刚提到我们如何从Puppet主服务器撤销证书和diconnect桌面。
如上所述,我们可以连接N台台式机,并通过Puppet主服务器集中管理。 恭喜! 现在我们在Ubuntu 14.04上有一个功能齐全的Puppet实例:)
5链接
- Puppet: http : //puppetlabs.com/
- Ubuntu: http : //www.ubuntu.com/