配置自动化和集中管理在Ubuntu上使用Puppet

配置自动化和集中管理与Puppet Ubuntu

作者:肯特布雷德

基于http://reductivelabs.com/trac/puppet/wiki/InstallationGuide

介绍

这是一个关于如何在一台机器上安装Puppet(Puppetmaster)的服务器组件的一步一步的教程,另一个是Puppet客户端(puppetd)。 然后,我们进行一个简单的测试,以确保Puppet正常工作。

如果您不熟悉Puppet,它是一种配置自动化工具,可让您集中管理网络上运行的各种* nix风格。 Puppet支持您的系统的重要方面的中央管理,例如:文件,软件包,用户,服务,cron,mount等。有关更完整的说明,请访问还原实验室

背景

这个安装是在Ubuntu 6.06 LTS服务器上执行的,但应该适用于大多数Debian / Ubuntu的风格,稍作修改。

在撰写本文时,现在可以在Feisty中找到Ubuntu的Puppet包。 在Unstable中查找当前的Debian软件包。

在本教程中,我们将使用example.com作为我们的域名。 服务器将被给予主机名“Puppet”和IP 192.168.10.1。 客户端主机名为“pclient”,IP为192.168.10.2。

网络要求

如果您的网络上未设置DNS,请验证服务器和客户端上的主机文件是否包含两台计算机的条目。 对于这种情况,以下条目将添加到/ etc / hosts。 使用您喜欢的文本编辑器添加反映您自己的网络设置的行,类似于下面的行。

192.168.10.1 puppet.example.com puppet
192.168.10.2 pclient.example.com pclient


服务器端口8140运行。确保两台机器之间没有防火墙阻塞端口8140。

Apt设置

我们需要的许多包都在Universe存储库中。 如果以下行在“sources.list”中未被取消注释,请使用您喜欢的文本编辑器,在服务器上找到并取消注释它们。

puppet:# vim /etc/apt/sources.list
# deb http://us.archive.ubuntu.com/ubuntu/ dapper universe
# deb http://security.ubuntu.com/ubuntu dapper-security universe


由于我们使用的是早期版本的Ubuntu,可以配置apt来轻松地从Feisty抓取Puppet包。 根据需要调整资源以反映您的操作系统版本。 如果您不熟悉本节中的步骤,请参阅Apt-Howto中的3.10部分。

打开“sources.list”并添加以下两行。

puppet:# vim /etc/apt/sources.list
deb http://us.archive.ubuntu.com/ubuntu/ feisty universe
deb http://security.ubuntu.com/ubuntu feisty-security universe


更新源列表。

puppet:# apt-get update

**执行与上述“pclient”相同的步骤。 **

接下来,让我们配置apt从Feisty中提取我们Puppet设置所需的软件包,但允许所有其他软件包来自Dapper存储库。 将以下行添加到“首选项”文件。

在服务器上:

puppet:# vim /etc/apt/preferences
Package: *
Pin: release a=dapper
Pin-Priority: 700

Package: facter
Pin: release a=feisty
Pin-Priority: 500

Package: puppet
Pin: release a=feisty
Pin-Priority: 500

Package: puppetmaster
Pin: release a=feisty
Pin-Priority: 500


在客户端上

pclient:# vim /etc/apt/preferences
Package: *
Pin: release a=dapper
Pin-Priority: 700

Package: facter
Pin: release a=feisty
Pin-Priority: 500

Package: puppet
Pin: release a=feisty
Pin-Priority: 500

3.软件要求

为了准备我们的Puppet安装,我们需要在服务器和客户端上安装几个库和软件包。 在撰写本文时,如果此集合没有首先安装,则会依次循环。

puppet:# apt-get install libopenssl-ruby rdoc irb1.8 libopenssl-ruby1.8 libreadline-ruby1.8 libruby1.8 rdoc1.8 ruby1.8
pclient:# apt-get install libopenssl-ruby rdoc irb1.8 libopenssl-ruby1.8 libreadline-ruby1.8 libruby1.8 rdoc1.8 ruby1.8

4.客户端安装

从Feisty安装Puppet和细菌。

pclient:# apt-get -t feisty install facter puppet

5.服务器安装

安装Puppet,木匠和Puppet master。 后安装脚本将尝试启动服务器并出现错误提示。 别担心 我们将在第6步中创建清单。

puppet:# apt-get -t feisty install facter puppet puppetmaster
.....
Starting puppet configuration management tool master server
Manifest /etc/puppet/manifests/site.pp must exist [fail]

服务器准备

服务器(puppetmasterd)需要一个清单才能运行。 让我们写一个清单,告诉Puppet在客户端上创建一个文件“/ tmp / testfile”。

puppet:# vim /etc/puppet/manifests/site.pp
# Create "/tmp/testfile" if it doesn't exist.
class test_class {
    file { "/tmp/testfile":
       ensure => present,
       mode   => 644,
       owner  => root,
       group  => root
    }
}

# tell puppet on which client to run the class
node pclient {
    include test_class
}


现在启动Puppet服务器。

puppet:# /etc/init.d/puppetmaster start

客户准备

默认情况下,客户端将使用主机名“puppet”连接到网络上的服务器。 如果您的服务器的主机名不是“puppet”,则需要将伪指令插入到puppetd配置文件“puppetd.conf”中。 即使我们不需要在这种情况下,我们将这样做为了演示目的。

使用您喜欢的文本编辑器打开“/etc/puppet/puppetd.conf”,并将“server = puppet.example.com”添加到现有文件中,如下例所示。

pclient:# vim /etc/puppet/puppetd.conf
[puppetd]
server = puppet.example.com

# Make sure all log messages are sent to the right directory
# This directory must be writable by the puppet user
logdir=/var/log/puppet
vardir=/var/lib/puppet
rundir=/var/run

7.签名密钥

为了使两个系统能够安全地通信,我们需要创建签名的SSL证书。 您应该同时登录到服务器和客户端机器进行下一步。

在客户端运行。

pclient:# puppetd --server puppet.example.com --waitforcert 60 --test

您应该看到以下消息。

err: No certificate; running with reduced functionality.
info: Creating a new certificate request for pclient.example.con
info: Requesting certificate
warning: peer certificate won't be verified in this SSL session
notice: Did not receive certificate

接下来,在服务器端运行以下命令来验证客户端正在等待证书签名。

puppet:# puppetca --list
pclient.example.con

然后签署证书。

puppet:# puppetca --sign pclient.example.com
Signed pclient.example.com

如果一切顺利,您应该在pclient上看到这个消息。

info: Requesting certificate
warning: peer certificate won't be verified in this SSL session
notice: Ignoring --listen on onetime run
info: Caching configuration at /etc/puppet/localconfig.yaml
notice: Starting configuration run
notice: //pclient/test_class/File[/tmp/testfile]/ensure: created
info: Creating state file /var/lib/puppet/state/state.yaml
notice: Finished configuration run in 0.11 seconds

8.测试

检查并确保文件已创建。

pclient:# ls -l /tmp/testfile
-rw-r--r-- 1 root root 0 2007-02-18 18:28 /tmp/testfile

对于测试,可以编辑清单并指示Puppet修改文件模式。 更改行,“mode => 644”,“to”mode => 600,“

puppet:# vim /etc/puppet/manifests/site.pp
# Create "/tmp/testfile" if it doesn't exist.
class test_class {
    file { "/tmp/testfile":
       ensure => present,
       mode   => 600,
       owner  => root,
       group  => root
    }
}

# tell puppet on which client to run the class
node pclient {
    include test_class
}


在客户端运行puppetd在详细模式(-v),只有一次(-o)。

pclient:# puppetd -v -o

您应该看到以下消息,其中指出/ tmp / testfile从模式644更改为600。

notice: Ignoring --listen on onetime run
info: Config is up to date
notice: Starting configuration run
notice: //pclient/test_class/File[/tmp/testfile]/mode: mode changed '644' to '600'
notice: Finished configuration run in 0.26 seconds

验证工作是否正确完成。

pclient:# ls -l /tmp/testfile
-rw------- 1 root root 0 2007-02-18 18:28 /tmp/testfile

9.结论

恭喜,测试完成,您有一个工作的Puppet设置。 您的下一步是创建一个功能清单,测试一些,然后在客户端启动puppetd守护进程。 默认情况下,Puppetd会每30分钟自动轮询服务器。

pclient:# /etc/init.d/puppet start

有关更多信息,请访问还原实验室 。 对于友好的知识帮助,请加入Puppet用户,或者通过#puppet在irc.freenode.net下载。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏