如何在Ubuntu 14.04中使用Foreman管理Puppet节点

介绍

Foreman是一个开源工具,可以通过提供与Puppet(或Chef)交互的简单方法来自动执行任务和应用程序部署,从而帮助管理服务器。 Foreman提供了强大的Web用户界面,API和CLI,可用于配置,配置和监视服务器。它适用于各种规模的基础设施,并与大多数Linux发行版兼容。 在本教程中,我们将向您展示如何使用Puppet安装Foreman,并开始使用它管理您的服务器。我们将使用Foreman的报告和外部节点分类器(ENC)功能,以简化Puppet的管理。

先决条件

本教程假定您将在一个新服务器上安装Foreman,该服务器也将充当Puppet主服务器。 如果你已经有了一个Puppet主服务器,可以在其上安装工头,但请记住,您的默认 site.pp将被覆盖(离开你现有的Puppet代理节点在一个 非管理状态),您将需要配置工头管理您现有的Puppet代理节点。 因为Foreman依赖Puppet来执行主机的配置管理,所以它需要Puppet代理/主设置所需的一切。以下列表涵盖了您在开始本教程之前需要了解的事项:
  • 根访问: sudo访问所有的服务器要管理
  • 专用网络DNS:正向和反向DNS必须配置,并且每个服务器都必须有一个唯一的主机名。 这里是一个教程, 配置自己的私有网络的DNS服务器 。如果您未配置DNS,则必须使用主机文件进行名称解析。我们将假设您将使用您的专用网络在您的基础设施内进行通信。
  • 防火墙中打开端口:Puppet师必须在端口8140.到达如果你的防火墙是过于严格,看看这个UFW教程关于如何允许端口8140传入请求指示。
一旦你有所有的先决条件,让我们继续创建Foreman(和Puppet主)服务器!

创建Foreman服务器

创建一个新 的Ubuntu 14.04 X64服务器,使用“工头 .nyc2.example.com”为主机名。将其专用网络添加到您的DNS,具有以下详细信息:
主机名 角色 私有FQDN
领班 工头/Puppet Master foreman.nyc2.example.com
如果你只是设置你的DNS和不确定如何将主机添加到DNS,请参阅 维护DNS记录的DNS教程的部分。实质上,您需要添加“A”和“PTR”记录,并允许新主机执行递归查询。此外,请确保配置搜索域,以便服务器可以使用短主机名来查找对方。

确保主机名设置为FQDN

要检查服务器的完整主机名,请键入以下命令:
hostname -f
您应该看到服务器名称的长版本,例如“foreman.nyc2.example.com”。如果您的主机名设置为您的FQDN,您可以继续下一部分。 否则,如果返回短名称,例如“foreman”,则需要将主机名设置为长名称。要做到这一点,编辑您的 hosts文件:
sudo vi /etc/hosts
找到您的短主机名的第一个条目,并在其之前添加FQDN。例如:
127.0.1.1       foreman
应更改为:
127.0.1.1       foreman.nyc2.example.com foreman
然后保存并退出。 接下来,编辑您的 hostname文件:
sudo vi /etc/hostname
将文件中的条目更改为服务器的FQDN,例如“foreman.nyc2.example.com”。然后保存并退出。 然后运行以下命令立即读入刚刚进行的配置更改:
sudo hostname --file /etc/hostname
您的长主机名已设置。继续安装Foreman!

安装工头

安装Foreman的最简单方法是使用Foreman安装程序。 Foreman安装程序安装并配置所有必需的组件以运行Foreman,包括以下内容:
  • 领班
  • Puppet Master和代理
  • 带有SSL和Passenger模块的Apache Web服务器
使用以下命令下载Foreman安装程序:
sudo sh -c 'echo "deb http://deb.theforeman.org/ trusty 1.5" > /etc/apt/sources.list.d/foreman.list'
sudo sh -c 'echo "deb http://deb.theforeman.org/ plugins 1.5" >> /etc/apt/sources.list.d/foreman.list'
wget -q http://deb.theforeman.org/pubkey.gpg -O- | sudo apt-key add -
sudo apt-get update && sudo apt-get install foreman-installer
然后使用以下命令运行Foreman安装程序:
sudo foreman-installer
您应该看到以下输出:
 Your puppet version does not support progress bar
Preparing installation Done
  Success!
  * Foreman is running at https://foreman.nyc2.example.com
      Default credentials are 'admin:changeme'
  * Foreman Proxy is running at https://foreman.nyc2.example.com:8443
  * Puppetmaster is running at port 8140
  The full log is at /var/log/foreman-installer/foreman-installer.log
如果你的输出看起来与上面类似,Foreman及其所需的组件已经安装!

启用差异

在继续之前,我们将稍作配置更改以启用“diffs”。此更改将允许您查看差异,这将允许您从Foreman的报告视图中查看配置文件更改。 编辑 puppet.conf
sudo vi /etc/puppet/puppet.conf
查找设置行 show_diff并改变其价值 true
    show_diff     = true
保存并退出。

将Foreman主机添加到Foreman数据库

通过运行添加工头主机工头的数据库 puppet agent ,像这样的命令:
sudo puppet agent --test
这将Foreman主机添加为Foreman管理的第一个Puppet代理节点。

登录Foreman Web界面

登录Foreman并更改管理员密码。 Foreman Web界面可以由您的VPS的公共网络接口(其公共FQDN或公共IP地址)访问。 看基础设施 - >智能代理。自动创建(并显示可用功能)。 默认情况下,Foreman使用您的Puppet证书,这可能不受您的浏览器信任。接受关于证书的警告并继续。或者,您可以将证书替换为与您的域名匹配的证书,并由受信任的CA授权机构签名。接受证书并继续操作后,您将看到以下登录页面: Foreman登录页面 当运行时,你可能已经注意到 foreman-installer ,这些都是默认的凭据:
  • 用户名 :admin
  • 密码 :changeme

工头仪表板

首次登录时,您将看到Foreman仪表板,其中显示了Puppet环境的概述。在这里,您将看到“主机配置状态”的摘要,其中显示Puppet代理节点的数目及其相应的状态。当你第一次启动Foreman时,你应该在“好主机”部分看到一个服务器: 主机配置状态 在下面,您将看到最近事件的摘要,以及在过去30分钟内运行Puppet作业的“客户端”数量的图表。这些信息可以帮助您了解您的整体Puppet设置是如何工作的。

更改管理员密码

做其他事情之前,你想改变你的 admin用户密码。 要做到这一点,鼠标在右上角的 Admin用户项目,然后单击 我的帐户我的帐户 找到 密码的形式。将密码更新为安全的密码,然后点击提交。

添加NTP模块到工头

Puppet需要准确的计时,所以我们将使用Foreman来管理Foreman主机(也是Puppet主机)上的NTP服务。 在Web浏览器,进入 https://forge.puppetlabs.com/ 。 搜索NTP模块。 第一个结果应该是 puppetlabs/ntp 。点击模块并阅读它,看看它做了什么。 现在,我们将在我们用下面的命令Puppet Master的 生产环境 安装它:
sudo puppet module install -i /etc/puppet/environments/production/modules puppetlabs/ntp
您应该看到如下输出,这表示模块已正确安装:
Notice: Preparing to install into /etc/puppet/environments/production/modules ...
Notice: Downloading from https://forge.puppetlabs.com ...
Notice: Installing -- do not interrupt ...
/etc/puppet/environments/production/modules
└─┬ puppetlabs-ntp (v3.1.2)
  └── puppetlabs-stdlib (v4.3.2)
该模块已安装在Puppet master中,但必须添加到Foreman才能使用它。 在工头的web用户界面,鼠标 配置 ,然后单击 Puppet类Puppet类 从foreman.nyc2.example.com按钮点击 导入 。然后你会看到一个看起来像这样的屏幕: 导入NTP类 勾选旁边的复选框项,然后单击 更新按钮。 ntp模块现在被导入到Foreman,并准备与主机一起使用。

覆盖默认NTP池

现在,我们要覆盖NTP模块的默认设置,并将NTP模块默认使用美国NTP池。随意查找您所选择的NTP池在 NTP池项目 。 你应该在“Puppet Classes”屏幕。单击“ntp”类进入编辑模式。现在点击“Smart Class Parameter”选项卡。 向下滚动,找到左侧边栏中的“servers”项,然后选择它: NTP服务器 找到并勾选“覆盖”复选框。更改 参数类型下拉为“阵”。然后将“默认值”从默认NTP池更改为您选择的数组形式之一。我们将使用美国NTP池:
["0.us.pool.ntp.org","1.us.pool.ntp.org","2.us.pool.ntp.org","3.us.pool.ntp.org"]
滚动到底部,然后点击绿色的“提交”按钮。现在,使用此模块的任何主机或主机组将默认使用美国NTP池。

配置Foreman主机使用NTP模块

现在我们准备使用NTP模块管理Foreman主机上的NTP。 进入主机屏幕(鼠标移到 主机 ,然后单击 所有主机 )。点击Foreman主机最右边的“编辑”按钮。 单击Puppet类选项卡。在 可用类别 ,点击 NTP类来展开它,然后点击旁边的“NTP”加号: 可用类 这会将 NTP包括部分。这意味着下一次Foreman主机的Puppet代理签入时,它将应用这个Puppet模块。 单击 提交按钮,应用更改。

查看Puppet配置

编辑Foreman主机的配置后,您将被导向到Foreman主机的摘要页面。 要查看代理节点签入时提供给Puppet的信息,请单击YAML按钮: YAML按钮 您将看到一个类似于以下输出的页面:
---
classes:
  ntp:
    server_list:
    - 0.us.pool.ntp.org
    - 1.us.pool.ntp.org
    - 2.us.pool.ntp.org
    - 3.us.pool.ntp.org
parameters:
  puppetmaster: foreman.nyc2.example.com
  root_pw: 
  foreman_env: production
  owner_name: Admin User
  owner_email: root@nyc2.example.com
environment: production

运行Puppet代理

让我们现在应用此更改,以便我们可以看到它的作用。 在Foreman服务器上,运行Puppet代理:
sudo puppet agent --test
在Web UI,回到你的工头的主机,然后点击 报告按钮(旁边 YAML按钮)。您应该会看到一个新的报告条目,指示已应用了一些更改,并且服务已重新启动;点击报告。在这里,您将看到几个通知,指示NTP软件包已安装,配置和重新启动。 请注意,您刚刚使用Foreman配置Foreman服务器。管理任何其他主机的工作方式相同。 如果你愿意,请点击“查看差异”链接旁边 ntp.conf/content项目。如果您想了解Puppet如何更改其管理的配置文件,这将非常有用。

向Foreman添加新主机

现在你已经设置了Foreman服务器,你可能想要添加更多的主机来管理它。添加更多主机的过程与向主节点添加更多Puppet代理节点相同。详细说明这样做可以在发现 这个系列的第一个教程 。确保将代理配置为指向您的Puppet master(Foreman)服务器。 安装并运行代理后,必须在Foreman服务器上签署其证书。您可以登录证书 通过命令行 ,与普通的Puppet设置,或者您可以使用工头Web界面。 要使用Web界面签署证书,请转到基础架构,然后单击智能代理,然后单击证书按钮: 证书 在这里,您将看到PuppetCA中的所有证书。单击您设置为使用此Puppet主服务器的新主机旁边的“签名”按钮(最右侧)。 您的新主机已准备好由Foreman管理!

结论

现在你有一个工作的Foreman实例,你有一个简单的方法来利用Puppet模块来管理你的服务器基础设施。随意浏览公开的Puppet模块,或自己编写(请参阅本系列中的上一个教程)以管理您的环境。 祝你好运!
赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

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

支付宝扫一扫打赏

微信扫一扫打赏