使用Packer创建快照

什么是Packer?

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`}}",
      "snapshot_description": "My Awesome App",
      "region_id": "2",
      "plan_id": "201",
      "os_id": "167",
      "ssh_username": "root"
    }
  ]
}

该文件有两个顶级密钥,variablesbuilders。该variables键用于定义自定义变量,在这种情况下,用于以VULTR_API_KEY稍后可以使用的方式合并环境变量。该builders键包含一系列建立运行,在这种情况下,只有我们Vultr构建。让我们分解一下:

  • type:这定义了实际使用的构建器,对于Vultr构建,应始终为vultr
  • api_key:为了运行构建,您需要一个在此定义的API密钥。本示例将其定义为vultr_api_key用户变量的值,进一步将其设置为VULTR_API_KEY环境变量的值。
  • snapshot_description:生成的快照的描述。
  • region_id:将VPS部署到的区域。这不会影响最终快照,只会影响从中创建快照的服务器。
  • plan_id:用于VPS的计划。对该快照的将来使用必须定义一个至少这么大的计划。
  • os_id:快照所基于的操作系统。
  • ssh_username:SSH进入服务器进行配置时将使用的用户名。对于Linux服务器,通常为root

要使用它,请使用诸如这样的名称保存该文件server.json,然后运行命令packer build server.json。您将看到一些指示构建状态的输出,这将需要几分钟。

运行此构建时,Snapshotting: My Awesome App将创建,快照并销毁一个名为的新服务器。没有定义供应者,这就是所有发生的事情。有关定义预配器的更多信息,请参阅Packer的文档

构建完成后,Packer将输出结果快照的ID。

定义区域,计划和操作系统

每个Vultr构建都需要这三个值,但是可以用以下几种方法之一进行定义。对于每一个,您都应该确切指定其变体之一,以避免产生歧义:

区域

可以通过API查询区域信息:https : //www.vultr.com/api/#regions_region_list

  • region_id:区域的ID,例如 2
  • region_code:区域代码,例如 ORD

计划

可以通过以下API查询计划信息:https : //www.vultr.com/api/#plans_plan_list

  • plan_id:计划的ID,例如 201

操作系统

可以通过API查询操作系统信息:https : //www.vultr.com/api/#os_os_list

  • os_id:操作系统的ID,例如 167


Leave a Comment

使用Chef-solo在Ubuntu上配置Django应用

使用Chef-solo在Ubuntu上配置Django应用

有许多方法可以自动化设置和配置盒子的过程。无论出于何种原因,如果此时我们的整个系统仅包含

如何在Ubuntu 18.04上安装Strider CD

如何在Ubuntu 18.04上安装Strider CD

简介Strider CD是一个开源的持续部署平台。该应用程序使用Node.js编写,并使用MongoDB作为存储后端。大步走

如何在Ubuntu 16.04 LTS上安装Foreman

如何在Ubuntu 16.04 LTS上安装Foreman

使用其他系统?Foreman是一个免费的开源工具,可以帮助您配置和管理物理和虚拟服务器。气孔

Ubuntu 17.04上的SaltStack入门

Ubuntu 17.04上的SaltStack入门

SaltStack是基于python的配置管理程序,针对配置文件,部署和其他未定义的自动化进行了优化

如何在CentOS 7上安装Foreman

如何在CentOS 7上安装Foreman

使用其他系统?Foreman是一个免费的开源工具,可以帮助您配置和管理物理和虚拟服务器。气孔

Vultr负载均衡器

Vultr负载均衡器

什么是负载均衡器负载均衡器位于应用程序的前面,可在应用程序的多个实例之间分配传入流量。佛

在Windows上使用Chocolatey Package Manager

在Windows上使用Chocolatey Package Manager

简介Chocolatey将软件包管理引入了Windows,从而使Linux上的软件和依赖项管理变得容易。您可以快速而轻松

如何在Ubuntu 16.04上安装和配置Concourse CI

如何在Ubuntu 16.04上安装和配置Concourse CI

使用其他系统?简介持续集成是一种DevOps软件开发实践,使开发人员能够频繁合并。

如何在Ubuntu 18.04上安装Drone CI

如何在Ubuntu 18.04上安装Drone CI

简介Drone是一个自动化,连续的测试和交付平台,可在您自己的基础架构上运行。无人机支持任何语言,服务或

如何在CentOS 7上安装和配置Concourse CI

如何在CentOS 7上安装和配置Concourse CI

使用其他系统?简介持续集成是一种DevOps软件开发实践,使开发人员能够频繁合并。

如何在Debian 9上安装和配置Ansible以用于Windows Server

如何在Debian 9上安装和配置Ansible以用于Windows Server

使用其他系统?Ansible是用于自动化任务的开源工具。它管理Linux和Windows服务器的配置。这行得通

如何在CentOS 7上安装和配置Ansible以用于Windows Server

如何在CentOS 7上安装和配置Ansible以用于Windows Server

使用其他系统?Ansible是用于自动化任务的开源工具。它管理Linux和Windows服务器的配置。这行得通

如何在CentOS 7上安装SaltStack

如何在CentOS 7上安装SaltStack

SaltStack或Salt是一种流行的开源配置管理解决方案,可用于实施远程执行,配置管理,编码

如何在CentOS 7上安装和配置GoCD

如何在CentOS 7上安装和配置GoCD

使用其他系统?GoCD是一个开源的持续交付和自动化系统。它允许您使用其并行的

在Ubuntu 17.04上将SaltStack与支柱配合使用

在Ubuntu 17.04上将SaltStack与支柱配合使用

SaltStack是可在多个服务器上同时运行操作的出色工具,但它还支持按主机定义的配置预设,这些预设存储在服务器中。

如何在CentOS 7上安装Jenkins

如何在CentOS 7上安装Jenkins

Jenkins是一种流行的开源CI(连续集成)工具,广泛用于项目开发,部署和自动化。这篇文章将

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg可以避免系统污染,确保仅安装必要的依赖关系。

如何在Ubuntu 16.04上安装OpenSIPS控制面板

如何在Ubuntu 16.04上安装OpenSIPS控制面板

快速学习如何在Ubuntu 16.04上安装OpenSIPS控制面板,为VoIP提供商提供支持的功能。

在Fedora 28上安装Akaunting

在Fedora 28上安装Akaunting

学习如何在Fedora 28上安装Akaunting,一款适合小型企业和自由职业者的开源会计软件。

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

使用其他系统?Mailtrain是一个基于Node.js和MySQL / MariaDB构建的开源自托管新闻通讯应用程序。

诊断Minecraft服务器延迟和低TPS

诊断Minecraft服务器延迟和低TPS

了解導致Minecraft延遲的原因和解決方案,包括優化伺服器性能和減少滯後的步驟。

AI 能否應對越來越多的勒索軟件攻擊?

AI 能否應對越來越多的勒索軟件攻擊?

勒索軟件攻擊呈上升趨勢,但人工智能能否幫助應對最新的計算機病毒?AI 是答案嗎?在這裡閱讀知道是 AI 布恩還是禍根

ReactOS:這是 Windows 的未來嗎?

ReactOS:這是 Windows 的未來嗎?

ReactOS,一個開源和免費的操作系統,這裡有最新版本。它能否滿足現代 Windows 用戶的需求並打倒微軟?讓我們更多地了解這種老式但更新的操作系統體驗。

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

Whatsapp 終於為 Mac 和 Windows 用戶推出了桌面應用程序。現在您可以輕鬆地從 Windows 或 Mac 訪問 Whatsapp。適用於 Windows 8+ 和 Mac OS 10.9+

人工智能如何將流程自動化提升到新的水平?

人工智能如何將流程自動化提升到新的水平?

閱讀本文以了解人工智能如何在小型公司中變得流行,以及它如何增加使它們成長並為競爭對手提供優勢的可能性。

macOS Catalina 10.15.4 補充更新引發的問題多於解決

macOS Catalina 10.15.4 補充更新引發的問題多於解決

最近,Apple 發布了 macOS Catalina 10.15.4 補充更新以修復問題,但似乎該更新引起了更多問題,導致 mac 機器變磚。閱讀這篇文章以了解更多信息