如何在Ubuntu12.04VPS上安装并开始使用Packer

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


状态: 已弃用

本文介绍了不再受支持的 Ubuntu 版本。 如果您当前正在运行运行 Ubuntu 12.04 的服务器,我们强烈建议您升级或迁移到受支持的 Ubuntu 版本:

原因: Ubuntu 12.04 已于 2017 年 4 月 28 日终止生命周期 (EOL) and no longer receives security patches or updates. This guide is no longer maintained.

请参阅:
本指南可能仍可用作参考,但可能不适用于其他 Ubuntu 版本。 如果可用,我们强烈建议使用为您正在使用的 Ubuntu 版本编写的指南。 您可以使用页面顶部的搜索功能来查找更新的版本。


关于打包机

Packer 是一个漂亮的开源工具,用于创建具有预配置操作系统和从单一源配置安装的软件的机器映像。 它可以在所有主要操作系统上运行,并且能够在多个平台上并行创建机器映像。

您可以为以下平台创建映像:Amazon EC2、DigitalOcean、OpenStack、VirtualBox 和 VMware。 但是,您也可以使用插件扩展 Packer 以支持更多平台。

在本教程中,我们将了解如何在运行 Ubuntu 12.04 的 VPS 上安装和开始使用 Packer。 此外,它将通过创建 DigitalOcean Droplet 图像来说明 Packer 的工作原理。 所以让我们开始吧。 因此,我假设您已经通过终端命令行对自己的 VPS 拥有 sudo 权限。

安装

要安装 Packer,我们需要为我们的系统获取正确的软件包 - Ubuntu(基于 Linux)。 请注意,Packer 也可以安装在 Mac OS X、Windows、FreeBSD 和 OpenBSD 上。 所以去http://www.packer.io/downloads.html复制链接到386版本。 然后在您的终端中,导航到根文件夹,在那里创建一个名为 packer 的新文件夹并在其中导航:

cd ~/
mkdir packer
cd packer

然后运行以下命令下载包:

wget https://releases.hashicorp.com/packer/0.9.0/packer_0.9.0_linux_386.zip

确保将 URL 替换为您找到的 URL。 这将下载一个 .zip 文件,然后您必须使用以下命令解压缩该文件:

unzip packer_0.9.0_linux_386.zip

再次确保将文件名替换为下载的文件名。 如果出现错误并且没有安装 unzip,请先运行以下命令进行安装:

sudo apt-get install unzip

然后你可以尝试再次解压缩存档,你应该会得到一些 Packer 相关的文件。 现在的下一个重要步骤是确保我们创建的这个新目录位于 Linux PATH(环境变量)上。 为此,请编辑在根目录中找到的 .bashrc 文件:

nano ~/.bashrc

在此文件的末尾,粘贴以下行:

export PATH=$PATH:~/packer/

然后保存文件,退出并重新启动您的 VPS:

reboot

如果您断开连接,SSH 回到您的 VPS 并运行以下命令以确保 Packer 已安装并且一切正常:

packer

如果您收到错误“command not found”,请重新访问上述步骤并确保您正确执行了所有操作。 如果您获得有关 Packer 可用命令的一些信息,那么您就可以开始了 - 现在已经安装了 Packer。

数字海洋图像

现在我们已经安装了 Packer,让我们看看如何使用它来创建 DigitalOcean Droplet 图像(如果我们使用 DO 术语,则为快照)。 为此,请确保您拥有 DigitalOcean 帐户 - 因为您需要客户端 ID 和 API 密钥。

一旦完成,我们将创建一个配置文件,该文件将定义我们想要构建的图像 - 称为模板(本质上是一个 JSON 文件)。 所以继续在我们安装 Packer 的文件夹中创建一个名为 foo.json 的文件(你可以选择任何你想要的文件名):

nano ~/packer/foo.json

在此文件中,粘贴以下内容:

{
  "builders": [{
    "type": "digitalocean",
    "api_token": "YOUR API TOKEN",
    "region": "nyc3",
    "size": "512mb",
    "image": "ubuntu-14-04-x64"
  }]
}

确保在适当的地方添加 API 令牌。 这里会发生什么? 我们基本上是在 NYC 3 地区定义一个简单的 DigitalOcean 类型(512 MB Droplet)默认构建器,运行 Ubuntu 14.04。 您可以参考 此页面 了解其他可以包含在此配置文件中的 DigitalOcean 特定选项。 但请注意,由于 DigitalOcean 不再支持 Packer 使用的默认区域,因此必须指定区域 ID 来部署 VPS。

但是在构建它之前,让我们确保这个语法是有效的并且我们没有任何错误。 保存文件,切换到 packer 文件夹,然后运行以下命令:

cd packer
packer validate foo.json

如果您没有收到错误,则可以使用以下命令创建 DigitalOcean Droplet 图像:

packer build foo.json

稍等片刻(这不应该超过 2-3 分钟),Packer 将根据配置文件部署一个新的 Droplet,拍摄快照,然后删除该 Droplet。 现在,您可以自由地使用新图像做您想做的事情。 根据文件系统内的已用空间量,快照每月每 GB 的费用为 0.05 美元。

不过,这并不是什么大不了的事。 但是 Packer 也提供配置 - 这意味着您可以使用您想要自动安装的软件创建这些图像。 那么让我们看看它是如何工作的。

供应

Packer 允许您在机器映像上安装和配置软件。 对于本教程,我们将在 Packer 创建的 DO 映像上自动安装 Apache。 那么让我们看看它是如何工作的。

预配器在我们之前创建的相同配置文件(模板)中进行配置。 所以编辑那个文件:

nano ~/packer/foo.json

并将另一个部分添加到 JSON 数组中,以使您的文件如下所示:

{
  "builders": [{
    "type": "digitalocean",
    "api_token": "YOUR API TOKEN",
    "region": "nyc3",
    "size": "512mb",
    "image": "ubuntu-14-04-x64"
  }],

  "provisioners": [{
    "type": "shell",
    "inline": [
      "sleep 30",
      "sudo apt-get update",
      "sudo apt-get install -y apache2"
    ]
  }]

}

在这里,我们添加了一个新的 shell 配置器(默认情况下随 Packer 提供,它将在 shell 中运行脚本)。 部署新的 VPS 后,Packer 将在新机器可用时立即通过 SSH 连接到新机器。 sleep 30 指令允许 Ubuntu 操作系统在 Packer 通过 SSH 连接以运行 shell 脚本之前正确初始化,然后更新存储库并安装 Apache。

让我们再次验证文件以确保我们没有犯语法错误:

packer validate foo.json

然后我们可以再次继续构建:

packer build foo.json

Packer 现在将部署相同的 DigitalOcean Droplet,但也会在其上安装 Apache。 然后它会创建一个您可以在您帐户的 Images 部分找到的图像,然后销毁 Droplet。 为了确保一切正常并安装了 Apache,请登录到您的 DigitalOcean 帐户并基于该图像部署一个新的 Droplet。 然后将您的浏览器指向它的 IP,您应该会看到 Apache "It works!" 消息。

结论

我们已经在本教程中看到了如何在最基本的层面上安装和使用 Packer。 您可以阅读更多关于与其他平台合作以及如何在不同平台上同时部署多台机器的信息。

文章提交者:Danny