init 命令

原文


~> 注意:Packer 的 init 命令不适用于旧版 JSON 模板。您可以使用 hcl2_upgrade 命令将 JSON 配置文件升级到 HCL。

~> 注意:Packer 的 init 命令仅适用于多组件插件 —— 也就是名字带有 packer-plugin- 前缀的插件。要安装单组件插件 —— 就是名字带有 packer-provisioner-、packer-builder-* 等前缀的插件 —— 您必须手动安装插件

packer init 命令用于下载 Packer 插件二进制可执行文件。使用模板时应首先执行该命令。多次运行此命令总是安全的。尽管运行过程可能会出错,但此命令永远不会删除任何内容。

Packer 目前没有像 Terraform 那样的状态概念。也就是说,目前 packer init 只负责安装Packer插件。

目前,packer init 只能从 GitHub 上的公开项目中下载二进制文件。 GitHub 的公共 API 对每个 IP 每小时可以执行的未经身份验证的请求数做了限制。 Packer 将尽最大努力避免达到这些限制,在本机运行 Packer 的一般场景中,这应该不是问题。否则,您可以设置 PACKER_GITHUB_API_TOKEN 这个环境变量,以便每小时发起更多请求。前往您的个人访问令牌页面以生成新的 Github 令牌。

packer init 将列出所有已安装的插件,然后下载当前缺少的插件的最新版本。

packer init -upgrade 将尝试获取所有插件的最新版本。

使用 required_plugin 块引用一个插件:

packer {
  required_plugins {
    happycloud = {
      version = ">= 2.7.0"
      source = "github.com/azr/happycloud"
    }
  }
}

HashiCorp 官方没有对第三方 Packer 插件以及命名空间不在 hashicorp/* 下的插件进行验证;与所有开源工具一样,在使用新工具时请自行尽职调查。

插件的选择

插件的选择取决于 required_plugins 块中定义的源和版本约束。对于 github.com/azr/happycloud 这个声明所引用的插件,Packer 将查询其完全限定地址 https://github.com/azr/packer-plugin-happycloud 以查找与主机操作的版本约束相匹配的插件系统。

packer init 将安装与 required_plugins 部分中的定义的版本约束相匹配的最新版本。确保设置正确的版本约束。插件将被安装在插件目录中。

如果想要了解更多插件安装的原理,请阅读相关文档

隐式引用插件

这是为将 Packer 发布与插件发布解耦而进行的一系列重大破坏性变更的一部分。为了使转换更容易,我们将把这些插件的组件标记为“已移出(moved out)”。如果在配置文件中引用了某个属于已移出插件的组件,但在 required_plugin 块中没有引用该插件,那么 packer init 将自动下载并安装该插件。然后 Packer 将显示警告并建议您将插件添加到 required_plugin 块中。我们建议您使用 required_plugin 块,即使您只使用官方插件,因为它允许您限制插件版本以避免将来出现意外。

选项

  • -upgrade - 除了安装缺少的插件,还会将已安装的插件更新到最新的可用版本(如果有新的更高版本)。请注意,升级行为仍然是遵守配置的版本约束的。

results matching ""

    No results matching ""