专栏首页云计算教程系列如何在Ubuntu 16.04上安装Puppet 4
原创

如何在Ubuntu 16.04上安装Puppet 4

介绍

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地址:

$ sudo nano /etc/hosts

/etc/hosts

 . . .
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集合存储库:

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包:

puppet$ sudo apt-get install puppetserver

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

配置内存分配

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

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

puppet$ sudo nano /etc/default/puppetserver

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

/etc/default/ puppetserver

JAVA_ARGS="-Xms3g -Xmx3g -XX:MaxPermSize=256m"

完成后保存并退出。

打开防火墙

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

puppet$ sudo ufw allow 8140

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

启动Puppet server

我们将使用systemctl启动Puppet server:

puppet$ sudo systemctl start puppetserver

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

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

puppet$ sudo systemctl status puppetserver

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

Dec 07 16:27:33 puppet systemd[1]: Started puppetserver Service.

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

puppet$ sudo systemctl enable puppetserver

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

第三步 - 安装Puppet Agent

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

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

启用官方Puppet Labs存储库

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

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包:

db1$ sudo apt-get install puppet-agent

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

db1$ sudo systemctl start puppet
db1$ sudo systemctl enable puppet

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

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上运行以下命令:

puppet$ sudo /opt/puppetlabs/bin/puppet cert list

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

 "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的证书,您将使用以下命令:

puppet$ sudo /opt/puppetlabs/bin/puppet cert sign db1.localdomain

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

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选项签署剩余的证书:

puppet$ sudo /opt/puppetlabs/bin/puppet cert sign --all

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

第五步 - 验证安装

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

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

puppet$ sudo nano /etc/puppetlabs/code/environments/production/manifests/site.pp

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

site.pp example

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应用清单:

db1$ sudo /opt/puppetlabs/bin/puppet agent --test

输出应该类似于:

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

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

db1$ cat /tmp/it_works.txt
 It works on 203.0.113.0!

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

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

puppet$ tail /var/log/puppetlabs/puppetserver/puppetserver.log
 . . . 
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》

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何在CentOS 6上安装DavMail

    如果您的工作场所或学校使用Microsoft Exchange发送电子邮件,您可能希望从不支持Exchange协议的电子邮件客户端访问您的Exchange电子邮...

    丰一川
  • 如何用Molecule测试Ansible角色

    Ansible中的单元测试是确保角色按预期运行的关键。通过允许您指定针对不同环境测试角色的方案,Molecule使此过程更容易。使用Ansible,Molecu...

    丰一川
  • 如何快速终止Linux进程

    当你打开某个程序时,可能会遇到程序会锁死、停止运行、或者意外死机。你尝试再次运行该程序,系统反馈说原来的进程没有完全关闭。

    丰一川
  • 如何在Ubuntu 14.04上的主代理安装程序中安装Puppet 4

    来自Puppet Labs的Puppet是一种配置管理工具,可帮助系统管理员自动化服务器基础架构的配置,配置和管理。提前规划并使用Puppet等配置管理工具可以...

    SQL GM
  • 如何在CentOS 7上的主代理安装程序中安装Puppet 4

    来自Puppet Labs的Puppet是一种配置管理工具,可帮助系统管理员自动化服务器基础架构的配置,配置和管理。提前规划并使用Puppet等配置管理工具可以...

    灬半痴
  • 从技术雷达看DevOps的十年 - 基础设施即代码和云计算

    在上一篇文章中,我们讲到了DevOps和持续交付的关系。本篇将回顾最先改变运维工作的相关技术 —— 基础设施即代码和云计算,通过技术雷达上相关条目的变动来跟踪其...

    ThoughtWorks
  • python3-泊松分布

    在实际事例中,当一个随机事件,例如某电话交换台收到的呼叫、来到某公共汽车站的乘客、某放射性物质发射出的粒子、显微镜下某区域中的白血球等等,以固定的平均瞬时速率...

    py3study
  • 未来五年,人工智能会让谁下岗?

    导读:智能代替人工的时代,已经开启,机器人将能更好地理解人类语言,改善学习能力,并能应对更复杂的情况,因此替代人类的能力大大提高,美国麻省独立研究机构Forre...

    钱塘数据
  • Google Chrome 在浏览器市场表现优异 继续拉开对手

    Google Chrome是桌面上最常用的浏览器并不是秘密,但NetMarketShare在9月份发布的新数据显示,该产品与其竞争对手之间的差距几乎每个月都在增...

    Debian社区
  • StarUML 5.0问题解决:Failed to open the model file. Invalid file format.

    使用StarUML 5.0打开一个已有的文件时,如果遇到报“Failed to open the model file. Invalid file format...

    一见

扫码关注云+社区

领取腾讯云代金券