介绍
Foreman 是一个开源工具,可以帮助管理服务器,通过提供一个简单的方式与 Puppet (或厨师) 互动,以自动化任务和应用部署。Foreman 提供了强大的 Web 用户界面,API 和 CLI,可用于提供,配置和监控您的服务器。
在本教程中,我们将向您展示如何安装 Foreman with Puppet,并开始使用它来管理您的服务器。
前提条件
本教程假定您将安装 Foreman 到新服务器上,称之为 Puppet 主服务器. 如果您已经拥有 Puppet 主服务器,您可以安装 Foreman,但请记住,您的默认 site.pp
将被重写(将现有的 Puppet 代理节点留在 unmanaged 状态),您需要配置 Foreman 来管理现有的 Puppet 代理节点。
由于Foreman依赖Puppet来执行主机的配置管理,因此它需要为Puppet代理/主机设置所需的一切。
- Root Access:
sudo
访问您想要管理的所有服务器 - Private Network DNS: 前向和逆向 DNS 必须配置,每个服务器必须有一个独特的主机名。这里有一个教程 配置您自己的私人网络 DNS 服务器 如果您没有 DNS 配置,您必须使用您的主机文件以解决名称。我们将假定您将使用您的私人网络在您的基础设施内进行通信。
- 防火墙开放端口: Puppet 主机必须在端口 8140 上可访问。如果您的防火墙过于限制,请查看此 UFW 教程有关如何允许在端口 8140 接入请求的说明。
一旦你有所有前提条件,让我们继续创建Forreman(和Puppet主)服务器!
创建 Foreman 服务器
创建一个新的 Ubuntu 14.04 x64 服务器,使用foreman.nyc2.example.com
作为其主机名。
主机名 主机名 主机名 主机名 主机名 主机名 主机名 主机名 主机名
如果您刚刚设置了 DNS 并不知道如何将您的主机添加到 DNS,请参阅 DNS 教程的 维护 DNS 记录部分。基本上,您需要添加一个A
和PTR
记录,并允许新主机执行重复性查询。
确保 Hostname 设置为 FQDN
要检查您的服务器的完整主机名称,请输入以下命令:
1hostname -f
您應該看到您的伺服器名稱的長版本,例如「foreman.nyc2.example.com」。 如果您的主機名稱設定為您的 FQDN,您可以繼續到下一節。
否则,如果返回短名,例如foreman
,则需要将您的主机名设置为长名。
1sudo vi /etc/hosts
查找你的短主机名称的第一个条目,然后在它之前添加FQDN。
1127.0.1.1 foreman
应该改为:
1127.0.1.1 foreman.nyc2.example.com foreman
然后保存和退出。
接下来,编辑您的hostname
文件:
1sudo vi /etc/hostname
更改文件中的条目到您的服务器的 FQDN,例如foreman.nyc2.example.com
。
然后运行以下命令,立即阅读您刚刚做的配置更改:
1sudo hostname --file /etc/hostname
您的长主机名已设置! 继续安装 Foreman!
安裝前者
安裝 Foreman 最簡單的方法是使用 Foreman 安裝程式. Foreman 安裝程式安裝和配置所有需要執行 Foreman 的組件,包括下列:
- Foreman
- 娃娃主人和代理人
- 使用SSL和乘客模块的Apache Web Server
下载 Foreman 安装程序,使用以下命令:
1sudo sh -c 'echo "deb http://deb.theforeman.org/ trusty 1.5" > /etc/apt/sources.list.d/foreman.list'
2sudo sh -c 'echo "deb http://deb.theforeman.org/ plugins 1.5" >> /etc/apt/sources.list.d/foreman.list'
3wget -q http://deb.theforeman.org/pubkey.gpg -O- | sudo apt-key add -
4sudo apt-get update && sudo apt-get install foreman-installer
然后用以下命令运行 Foreman 安装程序:
1sudo foreman-installer
你应该看到以下结果:
1Your puppet version does not support progress bar
2Preparing installation Done
3 Success!
4 * Foreman is running at https://foreman.nyc2.example.com
5 Default credentials are 'admin:changeme'
6 * Foreman Proxy is running at https://foreman.nyc2.example.com:8443
7 * Puppetmaster is running at port 8140
8 The full log is at /var/log/foreman-installer/foreman-installer.log
如果您的输出看起来类似于上述,则已安装了 Foreman 及其所需的组件!
允许不同
在继续之前,我们将进行轻微的配置更改以启用差异
。这个更改将允许您查看差异,这将允许您从Foreman的报告视图中查看配置文件的更改。
编辑puppet.conf
:
1sudo vi /etc/puppet/puppet.conf
查找设置show_diff
的行,并将其值更改为true
:
1show_diff = true
保存和退出。
添加 Foreman 主机到 Foreman 数据库
若要将 Foreman 主机添加到 Foreman 数据库,请运行娃娃代理
命令:
1sudo puppet agent --test
这增加了Foreman主机作为由Foreman管理的第一个Puppet代理节点。
登录到 Foreman Web 界面
登录 Foreman 并更改管理员密码. Foreman Web 接口可以通过您的 VPS 的公共网络接口访问(无论是其公共 FQDN 还是公共 IP 地址)。 查看基础设施 -> 智能代理。 自动创建(并显示可用的功能)。
默认情况下,Foreman 使用您的 Puppet 证书,您的浏览器可能不信任这些证书。 接受有关证书的警告并继续进行。 另一种方式是,您可以将证书替换为与您的域名匹配的证书,并由一个受信任的 CA 机构签署。 在您接受证书并继续后,您将看到以下登录页面:
正如你在运行foreman-installer
时所注意到的,这些是默认身份证:
- 用户名: admin 密码: changeme
老板板板
当您首次登录时,您将看到Foreman仪表板,该仪表板显示了您的Puppet环境的概述。在这里,您将看到主机配置状态
的摘要,其中显示了Puppet代理节点的数量及其各自状态。
下面,您将看到最近事件的摘要和显示在过去 30 分钟内运行 Puppet 工作的客户
数量的图表,这些信息可以帮助您了解您的 Puppet 整体设置是如何工作的。
更改 Admin 密码
在做任何其他事情之前,您将想要更改您的admin
用户密码。 要做到这一点,点击右上角的Admin User_
项,然后点击My Account
:
查找 Password 表格. 更新您的密码到安全的东西,然后单击提交。
将 NTP 模块添加到 Foreman
Puppet 需要精确的时间保持,所以我们会使用 Foreman 来管理 Foreman 主机上的 NTP 服务(这也是 Puppet 主机)。
在 Web 浏览器中,点击 https://forge.puppetlabs.com/。 寻找 NTP 模块. 第一个结果应该是 puppetlabs/ntp
. 点击模块并阅读它,看看它能做什么。
现在,我们将用以下命令将其安装到我们 Puppet 主人的 Production 环境中:
1sudo puppet module install -i /etc/puppet/environments/production/modules puppetlabs/ntp
您应该看到输出如下,这表明模块安装正确:
1Notice: Preparing to install into /etc/puppet/environments/production/modules ...
2Notice: Downloading from https://forge.puppetlabs.com ...
3Notice: Installing -- do not interrupt ...
4/etc/puppet/environments/production/modules
5└─┬ puppetlabs-ntp (v3.1.2)
6 └── puppetlabs-stdlib (v4.3.2)
该模块已安装在 Puppet 主机中,但必须在我们可以使用之前添加到 Foreman。
在 Foreman Web UI 中,点击 Configure,然后点击 Puppet classes:
点击从 foreman.nyc2.example.com 导入按钮,然后你会看到一个看起来像这样的屏幕:
点击该项目旁边的检查框,然后点击 Update 按钮. ntp 模块现在已导入到 Foreman,并准备好与主机一起使用。
默认 NTP 池
现在,我们想取代 NTP 模块的默认设置,并将 NTP 模块配置为默认使用美国 NTP 池。
你应该在娃娃类
屏幕上。点击ntp
类进入编辑模式。现在点击智能类参数
选项卡。
向下滚动,在左侧侧栏中找到服务器
项,然后选择它:
查找并键入Override
选项框. 更改 Parameter type drop down to array
. 然后将默认值
从默认的NTP池转换为您选择的一个,以数组形式。 我们将使用美国NTP池:
1["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)。
在 Available Classes 中,单击 ntp 类来扩展它,然后单击ntp
旁边的加号:
这将 ntp 类移动到 Included Classes 部分,这意味着下一次 Foreman 主机的 Puppet 代理检查时,它将应用这个 Puppet 模块。
点击 Submit 按钮来应用更改。
观看娃娃配置
在编辑 Foreman 主机的配置后,您将被引导到 Foreman 主机的摘要页面。
若要查看当一个代理节点检查时给 Puppet 的信息,请点击 YAML 按钮:
您将看到一个类似于此的输出页面:
1---
2classes:
3 ntp:
4 server_list:
5 - 0.us.pool.ntp.org
6 - 1.us.pool.ntp.org
7 - 2.us.pool.ntp.org
8 - 3.us.pool.ntp.org
9parameters:
10 puppetmaster: foreman.nyc2.example.com
11 root_pw:
12 foreman_env: production
13 owner_name: Admin User
14 owner_email: [email protected]
15environment: production
跑娃娃特工
让我们现在应用这个变化,这样我们就可以看到它在做什么。
在 Foreman 服务器上,运行 Puppet 代理:
1sudo puppet agent --test
在 Web UI 中,回到您的 Foreman 主机,然后点击 Reports 按钮(旁边的 YAML 按钮)。你应该看到一个新的报告条目,说明一些更改已经应用,一个服务重新启动;点击报告。
请注意,您刚刚使用 Foreman 来配置 Foreman 服务器。
如果您愿意,请单击查看差别
链接旁边的ntp.conf/content
项,如果您想看到 Puppet 是如何更改其管理的配置文件,这是有用的。
向 Foreman 添加新主机
现在你已经设置了 Foreman 服务器,你可能会想要添加更多的主机来管理它. 添加更多的主机的过程与向主人添加更多的 Puppet 代理节点相同。 在 本系列中的第一个教程中可以找到详细的说明。
安装和运行代理后,您必须在Foreman服务器上签署其证书,您可以通过命令行(https://andsky.com/tech/tutorials/how-to-install-puppet-to-manage-your-server-infrastructure#sign-request-on-master)签署证书,就像正常的Puppet设置一样,或者您可以使用Foreman Web接口。
若要使用 Web 接口签署证书,请进入基础设施,然后单击智能代理,然后单击证书按钮:
在这里,您将看到 PuppetCA 中的所有证书. 点击 Sign 按钮(右边)在您设置使用此 Puppet 主机的新主机旁边。
您的新主机已经准备好由Foreman管理!
结论
现在你有一个工作 Foreman 实例,你有一个简单的方法来利用 Puppet 模块来管理你的服务器基础设施. 自由浏览公共可用的 Puppet 模块,或写自己的(参见本系列的上一个教程)来管理你的环境。
好运!