如何安装Chef服务器,工作站和客户端在Ubuntu VPS实例

随着您的组织结构和生长所必需的独立的组件来管理你的环境扩大,管理每个服务器和服务可以变得难以管理。配置管理解决方案旨在简化系统管理和...

警告
本指南针对Chef 11. Chef 12平台引入了一些重要的配置差异。 你可以找到如何建立一个Chef12服务器,工作站和节点指导这里

介绍


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

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

先前的指导 ,我们讨论了Chef组件的总体结构和系统上的一个概念层面的运作方式。 我们讨论了一些关键术语和许多不同组件之间的关系。

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

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

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

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

服务器安装


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

在执行此操作之前,请务必为您的Chef服务器设置一个域名,以正确解析请求。 你可以看到一个让我们的导游域名设置了DigitalOcean在这里。

如果你没有一个域名,你需要编辑/etc/hosts的每一个您将使用,使他们能够解决所有的名字Chef服务器VPS实例文件。 如果您有一个域名,这应该只在您将使用作为Chef服务器VPS必要的。 您可以在您将用作Chef服务器的VPS上键入以下内容来执行此操作:

sudo nano /etc/hosts

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

111.222.333.444     chef.domain.com   chef

更改111.222.333.444到你的Chef服务器的IP地址,另两个值改为你想使用参考您的服务器什么的。 如果您没有使用域名,请在计划使用的每台计算机上将此行指向您的Chef服务器以指向此文件。

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

hostname -f

这应该给你用于到达此服务器的名称。

您可以通过访问获得Chef服务器软件包这个页面在Web浏览器。

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

Chef服务器选择操作系统

选择右侧的Chef 11服务器的最新版本:

Chef服务器最新

您将看到一个指向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

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

https://server_domain_or_IP

由于SSL证书由您的浏览器默认不能识别的权限签名,您将看到一条警告消息:

ChefSSL警告

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

Chef服务器登录屏幕

默认登录凭据如下:

Default Username: admin
Default Password: p@ssw0rd1

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

Chef服务器更改pw

您现在已将服务器配置到某个点,我们可以离开它并开始工作站配置。

工作站安装


我们的工作站计算机是VPS,我们将使用它来创建和编辑决定我们的基础设施环境的实际策略。 这台机器有一个Chef仓库的副本,描述我们的机器和服务,并将其上传到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服务器的认证文件。 具体来说,我们需要两个私钥。

从服务器生成和复制密钥


在Web浏览器中返回到您的Chef服务器:

https://server_domain_or_IP

登录使用admin在你面前改变了用户的凭据。

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

Chef服务器客户端

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

Chef重新生成密钥

您将使用新生成的密钥文件的值进入屏幕。

Chefval新钥匙

注:该键将只提供一次,所以不要点击此页面的! 如果您这样做,您将需要重新生成密钥。

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

在工作站计算机上,切换到我们在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-----

确保键上方或下方没有额外的空白行。 保存并关闭文件。

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

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

Chef管理用户重新启动

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

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

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

这将问你一系列的问题。 我们将一一通过他们:

WARNING: No knife configuration file found
Where should I put the config file? [/home/your_user/.chef/knife.rb]

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

我们要把我们的刀配置文件放在我们一直在使用的隐藏目录:

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

在下一个问题中,键入用于访问Chef服务器的域名或IP地址。 这应该首先https://和结束:443

https://server_domain_or_IP:443

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

Please enter a name for the new user: [root] station1

然后它会要求您输入管理员名称。 这个你可以按enter键接受默认值(我们没有更改管理员名称)。

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

/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@domain.com"
git config --global user.name "Your Name"

由于我们的“chef-repo”目录结构直接从GitHub,它是在git版本控制已经。

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

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

nano ~/chef-repo/.gitignore

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

.rake_test_cache

###
# Ignore Chef key files and secrets
###
.chef/*.pem
.chef/encrypted_data_bag_secret
.chef

保存并关闭文件。

现在,我们可以承诺我们目前的状态(这可能不会有任何身边改变.gitignore通过输入我们刚刚修改的文件):

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

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

我们可以通过添加一行来我的底部,只需修改我们的道路.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权限)
  • 密码

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

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

knife bootstrap node_domain_or_IP -x username -P password -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对节点进行任何实际的配置,但是我们设置开始这个过程。 在以后的教程中,我们将讨论如何实施策略并创建配方和烹饪书来管理节点。

作者:Justin Ellingwood