注:本教程在Vultr VPS上测试通过,如需部署请前往Vultr.com
什么是Packer?
封隔器 是由HashiCorp开发的服务器映像工具。服务器映像;或者,不变的基础设施;是运行时配置工具(例如Ansible或Puppet)的流行替代方法。它基于这样的思想,即一旦部署了服务器,您就永远不会对其进行更改;因此,请参见“服务器配置”。取而代之的是,您使用所做的更改部署一台新服务器,然后拆除旧服务器。这使服务器维护更加容易,并允许您更有效地在大量计算机上进行扩展。
尽管Packer不支持开箱即用,但有一个 插入 增加了支持。可以在插件的自述文件中找到有关安装具有Vultr支持的Packer的说明。本文的其余部分假定您已安装Packer以及Vultr插件。
怎么运行的
Packer的目的是生成服务器映像,或可用于完全像在成像时那样创建新服务器的工件。对于Vultr,这些工件称为快照。该插件的工作原理是部署一个新的VPS,在其上运行定义的供应商,为其创建快照,然后拆除该VPS。当您要通过映像创建新服务器时,只需调用Vultr的API即可部署具有所需快照作为其操作系统的新VPS。
使用打包机
Packer接受一个JSON文件,该文件定义应作为输入运行的内部版本。这是定义Vultr构建的示例文件:
{
"variables": {
"vultr_api_key": "{{env `VULTR_API_KEY`}}"
},
"builders": [
{
"type": "vultr",
"api_key": "{{user `vultr_api_key`}}",
"description": "My Awesome App",
"region_name": "Chicago",
"plan_name": "1024 MB RAM,25 GB SSD,1.00 TB BW",
"os_name": "CentOS 7 x64",
"ssh_username": "root"
}
]
}
该文件有两个顶级密钥, variables
和 builders
。的 variables
键用于定义自定义变量,在这种情况下,用于合并 VULTR_API_KEY
环境变量,以便以后使用。的 builders
键包含要运行的内部版本列表,在这种情况下,仅包含我们的Vultr内部版本。让我们分解一下:
type
:这定义了实际使用的构建器,对于Vultr构建,应始终为 vultr
。
api_key
:为了运行构建,您需要一个在此定义的API密钥。本示例将其定义为 vultr_api_key
用户变量,该变量进一步设置为 VULTR_API_KEY
环境变量。
description
:生成的快照的描述。
region_name
:将VPS部署到的区域。这不会影响最终快照,只会影响从中创建快照的服务器。
plan_name
:用于VPS的计划。对该快照的将来使用必须定义一个至少这么大的计划。
os_name
:快照所基于的操作系统。
ssh_username
:SSH进入服务器进行配置时将使用的用户名。对于Linux服务器,通常是 root
。
要使用它,请使用以下名称保存该文件 server.json
,然后运行命令 packer build server.json
。您将看到一些指示构建状态的输出,这将需要几分钟。
运行此构建时,将有一个名为 Snapshotting: My Awesome App
将被创建,快照并销毁。没有定义供应者,这就是所有发生的事情。有关定义预配器的更多信息,请参阅 打包机的文档。
构建完成后,Packer将输出结果快照的ID。
定义区域,计划和操作系统
每个Vultr构建都需要这三个值,但是可以通过以下几种方法之一进行定义。对于每一个,您都应该确切指定其变体之一,以避免产生歧义:
区域
可以通过API查询区域信息:https://www.vultr.com/api/#regions_region_list
region_id
:区域的ID,例如 2
region_name
:区域名称,例如 Chicago
region_code
:区域代码,例如 ORD
计划
可以通过以下API查询计划信息:https://www.vultr.com/api/#plans_plan_list
plan_id
:方案的ID,例如 201
plan_name
:方案名称,例如 1024 MB RAM,25 GB SSD,1.00 TB BW
操作系统
可以通过以下API查询操作系统信息:https://www.vultr.com/api/#os_os_list
os_id
:操作系统的ID,例如 167
os_name
:方案名称,例如 CentOS 7 x64
注:本教程在Vultr VPS上测试通过,如需部署请前往Vultr.com