如何在Ubuntu14.04上使用Foreman管理Puppet节点
介绍
Foreman 是一个开源工具,可以帮助管理服务器,通过提供一种与 Puppet(或 Chef)交互的简单方法来自动执行任务和应用程序部署。 Foreman 提供了强大的 Web 用户界面、API 和 CLI,可用于配置、配置和监控您的服务器。 它适用于各种规模的基础设施,并适用于大多数 Linux 发行版。
在本教程中,我们将向您展示如何使用 Puppet 安装 Foreman,并开始使用它来管理您的服务器。 我们将使用 Foreman 的报告和外部节点分类器 (ENC) 功能,以简化 Puppet 的管理。
先决条件
本教程假设您将在新服务器上安装 Foreman,该服务器也将充当 Puppet 主服务器。 如果您已经有一个 Puppet 主服务器,您可以在其上安装 Foreman,但请记住,您的默认 site.pp 将被覆盖(使您现有的 Puppet 代理节点处于 非托管 状态),你需要配置 Foreman 来管理你现有的 Puppet 代理节点。
因为 Foreman 依赖 Puppet 来执行主机的配置管理,所以它需要 Puppet 代理/主设置所需的一切。 以下列表涵盖了开始本教程之前需要的东西:
- 根访问权限:
sudoaccess to all of the servers you want to manage - 私网DNS:正向和反向DNS必须配置,每台服务器必须有唯一的主机名。 这里有一个配置你自己的私网DNS服务器的教程。 如果您没有配置 DNS,则必须使用 hosts 文件进行名称解析。 我们将假设您将使用您的专用网络在您的基础设施内进行通信。
- 防火墙开放端口: Puppet master 必须在端口 8140 上可访问。 如果您的防火墙过于严格,请查看此 UFW 教程 ,了解如何允许端口 8140 上的传入请求。
具备所有先决条件后,让我们继续创建工头(和 Puppet 大师)服务器!
创建工头服务器
创建一个新的 Ubuntu 14.04 x64 服务器,使用“foreman.nyc2.example.com”作为其主机名。 使用以下详细信息将其专用网络添加到您的 DNS:
| 主机名 | 角色 | 私有 FQDN |
|---|---|---|
| 领班 | 工头/傀儡师 | foreman.nyc2.example.com |
如果您刚刚设置 DNS 并且不确定如何将主机添加到 DNS,请参阅 DNS 教程的 维护 DNS 记录 部分。 本质上,您需要添加“A”和“PTR”记录,并允许新主机执行递归查询。 此外,请确保您配置了搜索域,以便您的服务器可以使用短主机名相互查找。
确保主机名设置为 FQDN
要检查服务器的完整主机名,请输入以下命令:
hostname -f
您应该看到服务器名称的长版本,例如 “foreman.nyc2.example.com”。 如果您的主机名设置为您的 FQDN,您可以继续下一部分。
否则,如果返回短名称,例如 “工头”,您需要将您的主机名设置为长名称。 为此,请编辑您的 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 所需的所有组件,包括:
- 领班
- 傀儡师和特工
- 带有 SSL 和乘客模块的 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 及其所需组件已安装!
启用差异
在继续之前,我们将进行轻微的配置更改以启用“差异”。 此更改将允许您查看差异,这将允许您从 Foreman 的报告视图中查看配置文件更改。
编辑puppet.conf:
sudo vi /etc/puppet/puppet.conf
找到设置 show_diff 的行并将其值更改为 true:
show_diff = true
保存并退出。
将 Foreman 主机添加到 Foreman 的数据库
通过运行 puppet agent 命令将 Foreman 主机添加到 Foreman 的数据库,如下所示:
sudo puppet agent --test
这会将 Foreman 主机添加为由 Foreman 管理的第一个 Puppet 代理节点。
登录 Foreman Web 界面
登录 Foreman 并更改管理员密码。 Foreman Web 界面可以通过您的 VPS 的公共网络接口(其公共 FQDN 或公共 IP 地址)访问。 查看基础架构 -> 智能代理。 自动创建(并显示可用功能)。
默认情况下,Foreman 使用您的 Puppet 证书,您的浏览器可能不信任这些证书。 接受有关证书的警告并继续。 或者,您可以将证书替换为与您的域名匹配并由受信任的 CA 机构签名的证书。 接受证书并继续后,您将看到以下登录页面:
正如您在运行 foreman-installer 时可能已经注意到的,这些是默认凭据:
- 用户名:管理员
- 密码: changeme
工头仪表板
首次登录时,您将看到 Foreman 仪表板,其中显示了您的 Puppet 环境的概述。 在这里,您将看到“主机配置状态”的摘要,其中显示了 Puppet 代理节点的数量及其各自的状态。 当你第一次启动 Foreman 时,你应该在“好主机”部分看到一个服务器:
在此下方,您将看到最近事件的摘要以及在过去 30 分钟内运行其 Puppet 作业的“客户”数量的图表。 此信息可以帮助您了解整个 Puppet 设置的工作方式。
更改管理员密码
在做任何其他事情之前,您需要更改您的 admin 用户密码。 为此,请将鼠标悬停在右上角的 Admin User 项上,然后单击 My Account:
找到 Password 表单。 将您的密码更新为安全的密码,然后单击提交。
将 NTP 模块添加到工头
Puppet 需要准确的计时,所以我们将使用 Foreman 来管理 Foreman 主机(也是 Puppet 主机)上的 NTP 服务。
在 Web 浏览器中,转到 https://forge.puppetlabs.com/。 搜索 NTP 模块。 第一个结果应该是 puppetlabs/ntp。 单击该模块并阅读它以了解它的作用。
现在我们将使用以下命令将它安装在我们的 Puppet master 的 Production 环境中:
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 中才能使用。
在 Foreman Web UI 中,将鼠标悬停在 Configure 上,然后单击 Puppet classes:
单击 从 foreman.nyc2.example.com 导入 按钮。 然后您将看到如下所示的屏幕:
勾选项目旁边的复选框,然后单击 Update 按钮。 ntp 模块现在已导入 Foreman,并准备好与主机一起使用。
覆盖默认 NTP 池
现在,我们要覆盖 NTP 模块的默认设置,并将 NTP 模块配置为默认使用美国 NTP 池。 随意在 NTP 池项目 中查找您选择的 NTP 池。
您应该在“Puppet Classes”屏幕中。 点击“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。
转到主机屏幕(将鼠标悬停在 Hosts 上,然后单击 All Hosts)。 单击工头主机最右侧的“编辑”按钮。
单击 Puppet Classes 选项卡。 在 Available Classes 下,单击 ntp 类将其展开,然后单击“ntp”旁边的加号:
这会将 ntp 类移动到 Included Classes 部分。 这意味着下次工头主机的 Puppet 代理签入时,它将应用此 Puppet 模块。
单击 提交 按钮以应用更改。
查看人偶配置
编辑 Foreman 主机的配置后,您将被定向到 Foreman 主机的摘要页面。
要查看代理节点签入时提供给 Puppet 的信息,请单击 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
运行人偶代理
现在让我们应用这个更改,这样我们就可以看到它做了什么。
在 Foreman 服务器上,运行 Puppet 代理:
sudo puppet agent --test
在 Web UI 中,返回到 Foreman 主机,然后单击 Reports 按钮(在 YAML 按钮旁边)。 您应该会看到一个新的报告条目,表明应用了一些更改并重新启动了服务; 点击报告。 在这里,您将看到几条指示 NTP 包已安装、配置和重新启动的通知。
请注意,您刚刚使用 Foreman 来配置 Foreman 服务器。 管理任何其他主机的工作方式相同。
如果您愿意,请单击 ntp.conf/content 项目旁边的“查看差异”链接。 如果您想查看 Puppet 如何更改其管理的配置文件,这将非常有用。
向 Foreman 添加新主机
现在您已经设置了 Foreman 服务器,您可能希望添加更多主机以由它管理。 添加更多主机的过程与向主服务器添加更多 Puppet 代理节点的过程相同。 详细说明可以在本系列的第一篇教程[[how-to-install-puppet-to-manage-your-server-infrastructure#install-puppet-agent|]]中找到。 请务必将代理配置为指向您的 Puppet master (Foreman) 服务器。
安装并运行代理后,您必须在 Foreman 服务器上签署其证书。 您可以通过命令行 签署证书 ,就像使用普通的 Puppet 设置一样,也可以使用 Foreman Web 界面。
要使用 Web 界面签署证书,请转到 Infrastructure,然后单击 Smart Proxies,然后单击 Certificates 按钮:
在这里,您将看到 PuppetCA 中的所有证书。 单击您设置为使用此 Puppet Master 的新主机旁边的 Sign 按钮(位于最右侧)。
您的新主机已准备好由 Foreman 管理!
结论
现在您有了一个工作的 Foreman 实例,您可以轻松地利用 Puppet 模块来管理您的服务器基础架构。 随意浏览公开可用的 Puppet 模块,或编写自己的(参见本系列中的上一个教程)来管理您的环境。
祝你好运!