介绍
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-installer
,这些都是默认的凭据:
工头仪表板
首次登录时,您将看到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类 :
从foreman.nyc2.example.com按钮点击
导入 。然后你会看到一个看起来像这样的屏幕:
勾选旁边的复选框项,然后单击
更新按钮。 ntp模块现在被导入到Foreman,并准备与主机一起使用。
覆盖默认NTP池
现在,我们要覆盖NTP模块的默认设置,并将NTP模块默认使用美国NTP池。随意查找您所选择的NTP池在
NTP池项目 。 你应该在“Puppet Classes”屏幕。单击“ntp”类进入编辑模式。现在点击“Smart Class Parameter”选项卡。 向下滚动,找到左侧边栏中的“servers”项,然后选择它:
找到并勾选“覆盖”复选框。更改
参数类型下拉为“阵”。然后将“默认值”从默认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按钮:
您将看到一个类似于以下输出的页面:
---
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模块,或自己编写(请参阅本系列中的上一个教程)以管理您的环境。 祝你好运!