如何在UbuntuVPS实例上安装Chef服务器、工作站和客户端

来自菜鸟教程
跳转至:导航、​搜索

警告

本指南针对 Chef 11。 Chef 12 平台引入了一些重要的配置差异。 您可以在此处 找到有关如何设置 Chef 12 服务器、工作站和节点 的指南。


介绍


随着组织结构的增长和管理环境所需的单独组件的扩展,管理每个服务器和服务可能变得难以管理。

配置管理解决方案旨在简化系统和基础设施的管理。 配置管理工具的目标是允许您将基础设施作为代码库进行管理。 Chef 是一个配置管理解决方案,可让您轻松管理大量服务器。

在 previous guide 中,我们讨论了 Chef 组件的一般结构以及系统在概念级别上的运行方式。 我们讨论了一些关键术语以及许多不同组件之间的关系。

在本指南中,我们将安装一个小型 Chef 11 设置。 这将是一台用于存储配置数据和管理访问权限的 Chef 服务器。 这将作为我们其他机器的集线器。

我们还将安装一个工作站,允许我们与服务器交互并构建我们的配置策略。 我们将在这里开展工作以管理我们的基础设施环境。

最后,我们将引导一个节点,该节点将代表我们组织中将通过 Chef 管理的服务器之一。 我们将使用我们配置的服务器和工作站来执行此操作。

为简单起见,所有这三台机器都将使用 Ubuntu 12.04 x86_64 VPS 实例。 我们将瞄准 Chef 11 版本,因为它稳定且经过良好测试。

服务器安装


我们需要上线的第一个组件是 Chef 服务器。 因为这是我们其他组件通信的核心,所以我们的其他机器需要可以使用它来完成它们的设置。

在此之前,为您的 Chef 服务器设置一个域名以正确解析请求非常重要。 您可以在此处查看使用 DigitalOcean 设置 域名的指南。

如果您没有域名,则需要在您将使用的每个 VPS 实例上编辑 /etc/hosts 文件,以便它们都可以按名称解析 Chef 服务器。 如果你 do 有一个域名,这应该只在你将用作 Chef 服务器的 VPS 上是必需的。 您可以通过在将用作 Chef 服务器的 VPS 上键入以下内容来执行此操作:

 须藤纳米 /etc/hosts 

在里面,添加这台计算机的 IP 地址,然后添加您想用来连接到服务器的名称。 然后,您可以在之后添加一个短名称。 像这样的东西:

 111.222.333.444  chef.domain.com 厨师

将 111.222.333.444 更改为您的 Chef 服务器的 IP 地址,并将其他两个值更改为您希望用来引用您的服务器的任何值。 如果您不使用域名,请将此行添加到您计划使用的每台机器上的 Chef 服务器的此文件中。

您可以通过键入以下内容来检查设置是否正确:

 主机名 -f 

这应该为您提供用于访问此服务器的名称。

您可以通过在您的网络浏览器中访问此页面来获取厨师服务器包。

单击“Chef Server”选项卡,然后选择与您的操作系统匹配的菜单:

在右侧选择可供您使用的最新版本的 Chef 11 服务器:

您将看到一个指向 deb 文件的链接。 右键单击它并选择类似于“复制链接位置”的选项。

在您将用作服务器的 VPS 实例中,切换到用户的主目录并使用 wget 实用程序下载 deb。 在撰写本文时,最新的链接是:

cd ~
wget https://opscode-omnibus-packages.s3.amazonaws.com/ubuntu/12.04/x86_64/chef-server_11.0.10-1.ubuntu.12.04_amd64.deb

这将下载安装包,然后您可以像这样安装:

sudo dpkg -i chef-server*

这将在这台机器上安装服务器组件。

之后它会打印到屏幕上,您应该运行下一个命令来实际配置您的特定机器周围的服务。 这将自动配置所有内容:

sudo chef-server-ctl reconfigure

完成此步骤后,服务器应该已启动并正在运行。 您可以通过键入 https:// 后跟服务器的域名或 IP 地址来立即访问 Web 界面。

https:// server_domain_or_IP

由于 SSL 证书是由浏览器默认无法识别的授权机构签署的,因此您会看到一条警告消息:

单击“继续”按钮绕过此屏幕并访问登录屏幕。 它看起来像这样:

默认登录凭据如下:

默认用户名: admin默认密码: p  @ssw0rd1

首次登录时,系统会立即提示您更改密码。 选择一个新密码,然后点击底部的“保存用户”按钮:

您现在已经将服务器配置到我们可以离开它并开始我们的工作站配置的地步。

工作站安装


我们的工作站计算机是 VPS,我们将使用它来创建和编辑决定我们的基础设施环境的实际策略。 这台机器有一份 Chef repo 的副本,描述了我们的机器和服务,并将它们上传到 Chef 服务器以供实施。

我们将从简单地安装 git 开始进行版本控制:

sudo apt-get update
sudo apt-get install git

这实际上有两个目的。 明显的用途是我们将配置保持在版本控制下以跟踪更改。 第二个目的是使用 sudo 临时缓存我们的密码,以便以下命令起作用。

我们现在将从 Chef 网站下载并运行客户端安装脚本。 键入此命令以完成所有这些步骤:

curl -L https://www.opscode.com/chef/install.sh | sudo bash

我们的 Chef 工作站组件现已安装。 然而,它离配置还很远。

下一步是从 GitHub 获取格式正确的 Chef 存储库的“chef-repo”目录结构。 我们可以通过键入以下命令将结构克隆到我们的主目录中:

cd ~
git clone https://github.com/opscode/chef-repo.git

这将在您的主目录中创建一个名为 chef-repo 的目录。 这是包含您的设置的整个配置的地方。

我们将在此目录中为 Chef 工具本身创建一个配置目录:

mkdir -p ~/chef-repo/.chef

在此目录中,我们需要放置来自 Chef 服务器的一些身份验证文件。 具体来说,我们需要两个私钥。

从服务器生成和复制密钥


在您的网络浏览器中返回您的 Chef 服务器:

https:// server_domain_or_IP

使用您之前更改的 admin 用户凭据登录。

单击顶部导航栏中的“客户端”选项卡。 您将看到两个名为 chef-validator 和 chef-webui 的客户端:

单击与 chef-validator 客户端关联的“编辑”按钮。 通过选中该框并单击“保存客户端”来重新生成私钥:

您将看到一个带有新生成的密钥文件值的屏幕。

注意:此键只能使用一次,请勿点击退出此页面! 如果这样做,您将需要再次重新生成密钥。

复制私钥字段的值(底部的那个)。

在您的工作站机器上,切换到我们在 repo 中创建的 Chef 配置目录:

cd ~/chef-repo/.chef

为我们刚刚创建的验证器密钥打开一个新文件:

nano chef-validator.pem

在此文件中,粘贴您从服务器的 Web 界面复制的密钥的内容(为简洁起见,此处删除了一些行):

-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEA6Np8f3J3M4NkA4J+r144P4z27B7O0htfXmPOjvQa2avkzWwx
oP28SjUkU/pZD5jTWxsIlRjXgDNdtLwtHYABT+9Q5xiTQ37s+eeJgykQIifED23C
aDi1cFXOp/ysBXaGwjvl5ZBCZkQGRG4NIuL7taPMsVTqM41MRgbAcLCdl5g7Vkri
. . .
. . .
xGjoTVH1vBAJ7BG1RHJZlx+T9QnrK+fQu5R9mikkLHayxi13mD0C
-----END RSA PRIVATE KEY-----

确保键上方或下方没有多余的空行。 保存并关闭文件。

我们将按照相同的过程重新生成和保存管理员用户的密钥文件。 这一次,关键是用户,所以点击顶部的“用户”选项卡。

再次,单击与管理员用户关联的“编辑”按钮,选中“重新生成私钥”框并单击“保存用户”按钮:

在下一个屏幕上复制私钥值。 再一次,这将不会再次显示,所以第一次正确复制它。

回到您的工作站计算机上,您需要在同一目录中为管理员用户创建另一个文件:

nano admin.pem

粘贴您从服务器界面复制的密钥的内容(同样,这是缩短的):

-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEA/apu0+F5bkVtX6qGYcfoA6sIW/aLFUEc3Bw7ltb50GoZnUPj
0Ms1N1Rv/pdVZXeBa8KsqICAhAzvwSr0H9j+AoURidbkLv4urVC9VS4dZyIRfwvq
PGvAKop9bbY2WJMs23SiEkurEDyfKaqXKW687taJ9AKbH2yVx0ArPI2RwS3Sze3g
. . .
. . .
VTkNpg3lLRSGbQkvRUP6Kt20erS2bfETTtH6ok/zW4db8B/vnBlcZg==
-----END RSA PRIVATE KEY-----

确认粘贴的关键线上方或下方没有多余的线。 保存并关闭文件。

配置刀具命令


我们现在必须配置 knife 命令。 该命令是与我们的服务器和我们将要配置的节点进行通信的中心方式。 我们需要告诉它如何进行身份验证,然后生成一个用户来访问 Chef 服务器。

幸运的是,我们已经通过获取适当的凭证文件为这一步奠定了基础。 我们可以通过键入以下内容开始配置:

knife configure --initial

这会问你一系列问题。 我们将一一进行:

警告:没有找到刀配置文件我应该把配置文件放在哪里? [/home/ your_user /.chef/knife.rb]

如果我们不选择值,括号 ([]) 中的值是刀将使用的默认值。

我们想将刀配置文件放在我们一直使用的隐藏目录中:

/home/ your_user /chef-repo/.chef/knife.rb

在下一个问题中,输入您用于访问 Chef 服务器的域名或 IP 地址。 这应该以 https:// 开头并以 :443 结尾:

https:// server_domain_or_IP :443

系统将要求您输入要创建的新用户的名称。 选择描述性的东西:

请输入新用户的名称:[root] station1

然后它会询问您的管理员名称。 这你可以按回车键接受默认值(我们没有更改管理员名称)。

然后它会询问您现有管理员密钥的位置。 这应该是:

/home/ your_user /chef-repo/.chef/admin.pem

它将询问有关验证器的一组类似问题。 我们也没有更改验证器的名称,因此我们可以将其保留为 chef-validator。 按 Enter 接受此值。

然后它会询问您验证密钥的位置。 它应该是这样的:

/home/ your_user /chef-repo/.chef/chef-validator.pem

接下来,它将询问存储库的路径。 这是我们一直在操作的chef-repo文件夹:

/home/ your_user /chef-repo

最后,它会要求您为新用户选择一个密码。 选择任何你想要的。

这应该完成我们的刀配置。 如果我们查看我们的 chef-repo/.chef 目录,我们应该会看到刀配置文件和新用户的凭据:

ls ~/chef-repo/.chef

admin.pem  chef-validator.pem  knife.rb  station1.pem

清理和测试工作站


我们的工作站配置几乎完成。 我们需要做一些事情来清理并验证我们的连接是否有效。

首先,我们应该让我们的 Chef 存储库处于版本控制之下。 因为 Chef 配置作为源代码运行,所以我们可以像处理任何程序的文件一样处理它。

首先,我们需要初始化我们的 git 名称和电子邮件。 类型:

 git config --global user.email “ your_email  @领域 .com ” git config --global 用户名 “你的名字”

由于我们的“chef-repo”目录结构是直接从 GitHub 中提取的,因此它已经处于 git 版本控制之下。

但是,我们不想在此版本控制中包含“chef-repo/.chef”目录。 这包含我们的私钥和刀配置文件。 它们与我们想要设计的基础设施没有任何关系。

通过打开 .gitignore 文件将此目录添加到忽略列表:

nano ~/chef-repo/.gitignore

在文件底部,键入 .chef 以包含整个目录:

.rake_test_cache

忽略 Chef 密钥文件和机密

.chef/*.pem .chef/encrypted_data_bag_secret .chef

保存并关闭文件。

现在,我们可以通过键入以下内容来提交我们当前的状态(除了我们刚刚修改的 .gitignore 文件之外,它可能不会有任何更改):

git add .
git commit -m 'Finish configuring station1'

我们还想确保我们的用户使用与我们的 Chef 安装一起打包的 Ruby 版本。 否则,系统的 Ruby 安装可能会解释 Chef 发出的调用,这可能与我们的其他工具不兼容。

我们可以通过在我们的 .bash_profile 文件的底部添加一行来修改我们的路径。

输入以下内容以添加该行:

echo 'export PATH="/opt/chef/embedded/bin:$PATH"' >> ~/.bash_profile

现在,我们可以通过键入以下内容将这些更改实施到我们当前的环境中:

source ~/.bash_profile

我们可以通过使用knife命令从服务器请求一些信息来测试我们是否可以与Chef服务器成功连接。

这将返回我们所有用户的列表:

knife user list

admin
station1

如果这成功了,那么我们的工作站可以成功地与我们的服务器通信。

引导客户端节点


现在我们有了在线的 Chef 服务器和工作站,我们可以尝试在示例节点上引导 Chef 客户端。 我们将使用另一个 Ubuntu 实例。

引导过程涉及在节点上设置 Chef 客户端。 Chef 客户端是一个与服务器通信以接收其自身配置的指示的软件。 然后,客户端将其安装的节点与服务器提供给它的策略保持一致。

这个过程将简单地将我们的新 VPS 实例配置到我们的 Chef 管理系统的保护伞下。 然后我们可以通过在我们的工作站上创建策略并将它们上传到我们的服务器来配置它。

要完成这个过程,我们只需要知道我们要安装客户端软件的 VPS 的三个信息:

  • IP 地址或域名
  • 用户名(可通过 SSH 和 sudo 权限访问)
  • 密码

有了这些信息,我们就可以在工作站上使用刀工具安装适当的软件包。

您想键入如下所示的命令:

刀引导node_domain_or_IP -x用户名-P密码-N name_for_node --sudo

让我们分解一下。 域名/IP地址告诉knife要连接哪个服务器。 用户名和密码提供登录凭据。

如果您使用的用户不是 root,则需要 --sudo 选项,以便引导过程在远程计算机上成功安装软件。 一旦您登录使用 sudo 命令,它将提示您输入密码。

节点的名称是您选择的名称,供 Chef 内部使用。 这就是您在制定政策和使用刀具时引用这台机器的方式。

运行命令后,客户端软件将安装在远程节点上。 它将被配置为与 Chef 服务器通信以接收指令。

我们可以通过键入以下内容来查询我们的客户列表:

knife client list

chef-validator
chef-webui
client1

我们可以看到安装 Chef 服务器时默认配置的两个客户端(chef-validator 和 chef-webui),以及我们刚刚创建的客户端。

您可以轻松设置其他节点,将它们置于 Chef 系统的配置控制之下。

结论


您现在应该有一个 Chef 服务器、一个用于创建配置的单独工作站和一个示例节点。

此时我们尚未通过 Chef 对节点进行任何实际配置,但我们已准备好开始此过程。 在以后的教程中,我们将讨论如何实施策略并创建食谱和食谱来管理您的节点。

贾斯汀·艾林伍德