前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在Ubuntu 16.04上安装Puppet 4

如何在Ubuntu 16.04上安装Puppet 4

原创
作者头像
丰一川
修改2018-08-01 17:18:23
7680
修改2018-08-01 17:18:23
举报

介绍

Puppet是一种配置管理工具,可帮助系统管理员自动化服务器基础架构的准备、配置和管理。提前规划并使用Puppet等配置管理工具可以减少重复基本任务所花费的时间,并有助于确保配置在整个基础架构中保持一致和准确。

Puppet有两种,Puppet Enterprise和开源Puppet。它们都可以在大多数Linux发行版、各种UNIX平台和Windows上运行。

在本教程中,我们将演示如何在Ubuntu 16.04上的主代理设置中安装开源Puppet 4。在此设置中,运行Puppet Server软件的Puppet master服务器可用于控制所有其他服务器,称为Puppet agent节点。Puppet 的原理和语法介绍详见腾讯云社区相关教程。

准备

要学习本教程,您需要三台Ubuntu 16.04服务器,每台服务器都有一位具有sudo权限的非root用户。

一个Puppet master

一台服务器将是Puppet master。Puppet master将运行资源密集型的Puppet Server,需要:

  • 至少4GB的内存
  • 至少2个CPU核心

为了管理更大的基础架构,Puppet master需要更多资源。

两个Puppet agents

另外两台服务器将是由Puppet master管理的Puppet agent节点。我们将他们命名为db1web1

这三台服务器到位后,您就可以开始了。

第一步 - 配置/ etc / hosts

Puppet master服务器及其管理的节点需要能够相互通信。在大多数情况下,使用DNS即可完成,可以在外部托管服务上配置,也可以在作为基础结构一部分维护的自托管DNS服务器上配置。

DNS有它自己专业的域,在托管服务上也有,但是为了专注于Puppet本身的基础知识并消除我们学习过程中的故障排除的潜在复杂性,在本教程中我们将使用该/etc/hosts文件。

在每台机器上

在每台计算机上,编辑/etc/hosts文件。在文件的末尾,指定Puppet master服务器,如下所示,用您的Puppet master 替换IP地址:

代码语言:txt
复制
$ sudo nano /etc/hosts

/etc/hosts

代码语言:txt
复制
 . . .
puppet_ip_address    puppet
 . . .

完成后,保存并退出。

注意:默认情况下,Puppet agent会在puppet查找Puppet master,以便更轻松地设置Puppet。这意味着在/etc/hosts我们必须使用puppet。如果puppet没有解析为Puppet master,则agent将无法在未_配置_server代理的puppet.conf中的值的情况下进行联系。

第二步 - 安装Puppet Server

Puppet Server是将配置从Puppet主服务器推送到其他服务器的软件。它只在Puppet master上运行; 其他主机将运行Puppet agent。

注意: Ubuntu软件包管理器确实包含Puppet的软件包,但许多管理员需要管理多个操作系统和版本。在这种情况下,使用官方Puppet Labs存储库可以简化管理,允许您在所有系统上维护相同的Puppet版本。

我们将使用以下命令启用官方Puppet Labs集合存储库:

代码语言:txt
复制
puppet$ curl -O https://apt.puppetlabs.com/puppetlabs-release-pc1-xenial.deb
puppet$ sudo dpkg -i puppetlabs-release-pc1-xenial.deb
puppet$ sudo apt-get update

apt-get update完成,确保我们将从木偶实验室库成为拉动,我们将安装puppetserver包:

代码语言:txt
复制
puppet$ sudo apt-get install puppetserver

Y继续。安装完成后,启动服务器之前,我们将花点时间配置内存。

配置内存分配

默认情况下,Puppet Server配置为使用2GB的RAM。您可以根据主服务器具有多少可用内存以及它将管理多少代理节点来自定义此设置。

要自定义它,请打开/etc/default/puppetserver

代码语言:txt
复制
puppet$ sudo nano /etc/default/puppetserver

然后找到JAVA_ARGS行,使用-Xms-Xmx参数来设置内存分配。我们将增加到3千兆字节:

/etc/default/ puppetserver

代码语言:txt
复制
JAVA_ARGS="-Xms3g -Xmx3g -XX:MaxPermSize=256m"

完成后保存并退出。

打开防火墙

当我们启动Puppet Server时,它将使用端口8140进行通信,因此我们要确保它是开放的:

代码语言:txt
复制
puppet$ sudo ufw allow 8140

接下来,我们将启动Puppet server。

启动Puppet server

我们将使用systemctl启动Puppet server:

代码语言:txt
复制
puppet$ sudo systemctl start puppetserver

这需要一些时间才能完成。

一旦我们返回到命令提示符,我们将验证我们是否已成功,因为systemctl不会显示所有服务管理命令的结果:

代码语言:txt
复制
puppet$ sudo systemctl status puppetserver

我们应该看到一行显示“active (running)”,最后一行应该如下所示:

代码语言:txt
复制
Dec 07 16:27:33 puppet systemd[1]: Started puppetserver Service.

现在我们确保服务器正在运行,我们将其配置为开机自启:

代码语言:txt
复制
puppet$ sudo systemctl enable puppetserver

如果服务器正在运行,现在我们可以在两台代理机器上设置Puppet Agent,db1和web1

第三步 - 安装Puppet Agent

Puppet agent软件必须安装在Puppet master管理的服务器上。在大多数情况下包括基础架构中的每个服务器。

注意: Puppet agent可以在所有主要Linux发行版、某些UNIX平台和Windows上运行。安装说明因操作系统而异。

启用官方Puppet Labs存储库

首先,我们将使用以下命令启用官方Puppet Labs集合存储库:

代码语言:txt
复制
db1$ wget https://apt.puppetlabs.com/puppetlabs-release-pc1-xenial.deb
db1$ sudo dpkg -i puppetlabs-release-pc1-xenial.deb
db1$ sudo apt-get update

安装Puppet agent程序包

然后,我们将安装puppet-agent包:

代码语言:txt
复制
db1$ sudo apt-get install puppet-agent

启动代理并使其开机自启:

代码语言:txt
复制
db1$ sudo systemctl start puppet
db1$ sudo systemctl enable puppet

最后,在web1重复以下步骤:

代码语言:txt
复制
web1$ wget https://apt.puppetlabs.com/puppetlabs-release-pc1-xenial.deb
web1$ sudo dpkg -i puppetlabs-release-pc1-xenial.deb
web1$ sudo apt-get update
web1$ sudo apt-get install puppet-agent
web1$ sudo systemctl enable puppet
web1$ sudo systemctl start puppet

现在两个代理节点都在运行Puppet agent软件,我们将在Puppet master上签署证书。

第四步 - 在Puppet Master上签署证书

Puppet第一次在代理节点上运行时,它会向Puppet master发送证书签名请求。在Puppet Server能够与代理节点通信并控制代理节点之前,它必须签署该特定代理节点的证书。

列出当前证书请求

要列出所有未签名的证书请求,请在Puppet master上运行以下命令:

代码语言:txt
复制
puppet$ sudo /opt/puppetlabs/bin/puppet cert list

您设置的每个主机应该有一个请求,如下所示:

代码语言:txt
复制
 "db1.localdomain"  (SHA256) 46:19:79:3F:70:19:0A:FB:DA:3D:C8:74:47:EF:C8:B0:05:8A:06:50:2B:40:B3:B9:26:35:F6:96:17:85:5E:7C
 "web1.localdomain" (SHA256) 9D:49:DE:46:1C:0F:40:19:9B:55:FC:97:69:E9:2B:C4:93:D8:A6:3C:B8:AB:CB:DD:E6:F5:A0:9C:37:C8:66:A0

证书前面的+表示已签名。没有加号表示我们的新证书尚未签署。

签名请求

要对单个证书请求进行签名,请使用puppet cert sign命令以及证书请求中显示的证书的主机名。

例如,要签署db1的证书,您将使用以下命令:

代码语言:txt
复制
puppet$ sudo /opt/puppetlabs/bin/puppet cert sign db1.localdomain

类似于以下示例的输出表明证书请求已签名:

代码语言:txt
复制
Notice: Signed certificate request for db.localdomain
Notice: Removing file Puppet::SSL::CertificateRequest db1.localdomain at '/etc/puppetlabs/puppet/ssl/ca/requests/db1.localdomain.pem'

Puppet master现在可以通信并控制签名证书所属的节点。您也可以立即签署所有当前请求。

我们将使用--all选项签署剩余的证书:

代码语言:txt
复制
puppet$ sudo /opt/puppetlabs/bin/puppet cert sign --all

现在所有证书都已签名,Puppet可以管理基础架构。您可以在如何管理Puppet 4证书备忘单中了解有关管理证书的更多信息。

第五步 - 验证安装

Puppet使用域的特定语言来描述系统配置,这些描述将保存到名为“manifests”的文件中,这些文件具有文件扩展名.pp。现在我们将创建一个简短的指令来验证Puppet Server是否可以按预期管理代理。

我们首先在默认位置创建默认清单site.pp:

代码语言:txt
复制
puppet$ sudo nano /etc/puppetlabs/code/environments/production/manifests/site.pp

我们将使用Puppet的域的特定语言来创建一个名为it_works.txt代理节点的文件,该代理节点位于tmp包含代理服务器的公共IP地址的目录中,并将权限设置为-rw-r--r--

site.pp example

代码语言:txt
复制
1 file {'/tmp/it_works.txt':                        # resource type file and filename
2   ensure  => present,                             # make sure it exists
3   mode    => '0644',                              # file permissions
4   content => "It works on ${ipaddress_eth0}!\n",  # Print the eth0 IP fact
5 }

默认情况下,Puppet Server默认情况下每30分钟在其清单中运行命令。如果删除该文件,ensure指令将导致重新创建它。mode指令将设置文件权限,并将content指令添加到指令中。

我们还可以使用puppet agent --test在单个节点上测试清单。注意,这--tes不是试运行;如果成功,它将改变代理的配置。

我们不会等待Puppet master应用更改,而是立即在db1应用清单:

代码语言:txt
复制
db1$ sudo /opt/puppetlabs/bin/puppet agent --test

输出应该类似于:

代码语言:txt
复制
Info: Using configured environment 'production'
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Loading facts
Info: Caching catalog for db1.localdomain
Info: Applying configuration version '1481131595'
Notice: /Stage[main]/Main/File[/tmp/it_works.txt]/ensure: defined content as '{md5}acfb1c7d032ed53c7638e9ed5e8173b0'
Notice: Applied catalog in 0.03 seconds

完成后,我们将检查文件内容:

代码语言:txt
复制
db1$ cat /tmp/it_works.txt
代码语言:txt
复制
 It works on 203.0.113.0!

web1重复此操作,或者,如果您愿意,请在半小时左右检查以验证Puppet主服务器是否自动运行。

注意:您可以检查Puppet主服务器上的日志文件,以查看Puppet上次编译代理程序目录的时间,这表明应该已应用所需的任何更改。

代码语言:txt
复制
puppet$ tail /var/log/puppetlabs/puppetserver/puppetserver.log
代码语言:txt
复制
 . . . 
2016-12-07 17:35:00,913 INFO  [qtp273795958-70] [puppetserver] Puppet Caching node for web1.localdomain
2016-12-07 17:35:02,804 INFO  [qtp273795958-68] [puppetserver] Puppet Caching node for web1.localdomain
2016-12-07 17:35:02,965 INFO  [qtp273795958-68] [puppetserver] Puppet Compiled catalog for web1.localdomain in environment production in 0.13 seconds
 . . .

恭喜!您已在 Master/Agent模式下成功安装了Puppet。

结论

现在您已经安装了基本的Puppet Master/Agent,您可以了解有关如何使用Puppe的更多信息。查看腾讯云社区:puppet学习笔记的相关教程。


参考文献:《How To Install Puppet 4 on Ubuntu 16.04》

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 准备
    • 一个Puppet master
      • 两个Puppet agents
      • 第一步 - 配置/ etc / hosts
        • 在每台机器上
        • 第二步 - 安装Puppet Server
          • 配置内存分配
            • 打开防火墙
              • 启动Puppet server
              • 第三步 - 安装Puppet Agent
                • 启用官方Puppet Labs存储库
                  • 安装Puppet agent程序包
                  • 第四步 - 在Puppet Master上签署证书
                    • 列出当前证书请求
                      • 签名请求
                      • 第五步 - 验证安装
                      • 结论
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档