云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

网站服务器_ajax获取数据库数据_优惠

小七 141 0

发布支持HCL2的HashiCorp Packer 1.5

HashiCorp packer1.5带来了两个主要的新特性和一长串较小的改进。最令人兴奋的变化是Packer现在支持基本的HCL2模板,我们现在可以在构建器和供应器之间共享一些特殊信息,比如构建实例的主机IP和端口。我们希望访问这些细节将有助于简化模板和操作工作。让我们深入了解这些重大变化的更多细节:»盐酸2HCL2模板现在可以用来代替单个json模板。如果用户愿意的话,他们仍然可以使用json模板;我们不会在短期内否定json支持。下面是一个文件夹示例,其中包含用于基本AWS构建的Packer HCL2模板文件:#文件夹/来源.pkr.hcl来源"amazon ebs""示例"{ami_name="打包机partyparrot-{timestamp}}"region="美国东部-1"实例_type="t2.micro"source_ami_过滤器{过滤器{虚拟化类型="hvm"name="ubuntu/images/*ubuntu-xenial-16.04-amd64-server-*"根设备类型="ebs"}所有者=亚马逊"]最近=真}communicator="ssh"ssh_username="ubuntu"}#文件夹/内部版本.pkr.hcl#构建启动源并在这些源上运行配置步骤。建造{来源=[#每个生成可以有多个源*/"来源:亚马逊-ebs.示例"]#所有处理者的信件#当前布局。参数名(即:inline)必须不加引号#可以使用等号运算符(=)设置。供给者"壳"{内联=休眠5"]}供应者"壳牌当地"{inline=echo地址是:$PACKER_HTTP_ADDR,build name是:$PACKER_build_name"]}}只需保存上述文件并正常运行packer build folder。下面是另一个示例,使用不使用云资源的文件生成器:source"file""示例"{content="2020快乐"目标="./test_工件.txt"}建造{来源=["source.file.example"]后处理器"shell local"{inline=echo希望您喜欢您的礼物!"]}}您会注意到,这些选项与json模板中的选项是相同的;当前将模板从json传输到HCL2将是一个简单但手动的过程。如果您选择等到今年晚些时候,我们打算在即将发布的版本中创建一个模板转换器。»HCL2被认为是β特性Packer目前支持33个构建器、21个供应器和20个后处理器。这一新特性使所有必要的改变,使这些组件配置与HCL2;然而,仍有一些部分封隔器HCL2仍然需要抛光。因此,我们发布了HCL2作为beta特性。如果您发现问题,请在GitHub上打开一个问题,以便我们能够修复任何丢失的工具或奇怪的行为。»变量与变量插值目前,特定于构建的变量和"用户"变量(见下文)不适用于HCL2的Packer。我们知道,在变量和插值工作之前,HCL2的用途是有限的,所以希望这种支持会很快出现。以下是在HCL配置中可用和不可用的模板帮助程序的列表:工作:{{timestamp}}{{isotime}}{{packer_版本}}{{uuid}}{{lower}}{{replace}}-{replace}all}{{split}}{{upper}}当前不工作:模板变量:{{.Name}}{{user…}}和结果{env}}、{consur}key…}和{vault…}}无法使用{{生成…}}{{内部版本名}}{{生成类型}{{clean}资源名}{{template\udir}}{{pwd}}我们计划很快用HCL2支持这些特性,我们希望这些特性看起来像HashiCorp Terraform的输入变量和局部变量。»构建器和供应器之间共享变量随着Packer的发展,出现了高度定制的用例。这些用例中的许多都需要访问我们的供应器和通信器阵列无法覆盖的实例。在这些情况下,用户需要生成专门的解决方案。从历史上看,这是很困难的,因为我们只在内存中保存某些连接信息。现在这种情况已经改变了:我们为建设者添加了工具,将专门的数据注入到供应器中。目前,可用的变量有:ID、Host、Port、User、Password、ConnType、PackerRunUUID、SSHPublicKey和SSHPrivateKey。为了验证用户是否尝试访问未设置的变量,我们需要一个新的模板引擎来访问它们。{{build`ID`}}这些变量可以用在任何被记录为模板引擎的provisioner参数中。如果您发现在当前未启用模板引擎的位置使用此插值的用例,请在GitHub上打开一个功能请求。例如:{"建筑商":[{"type":"空","通信器":"无"}],"供应者":[{"type":"shell本地","inline":echo{build`PackerRunUUID`}}]},{"type":"shell本地","环境变量":TESTVAR={build`PackerRunUUID`}}"],"inline":echo$TESTVAR"]}]}您不能在variables{}top level template部分中使用此引擎,因为这些变量是全局变量,而构建变量是特定于构建的;而是直接在provisioner中使用它们,如上面的示例所示。»向后不兼容»日常用户当前的Packer构建文件也将同样工作。如果不使用任何第三方插件,则不应看到任何主要的向后不兼容,除非:您仍然在使用现在完全不推荐使用的clean_ami_name模板引擎。请改用clean_resource_name。ansible local galaxycommand选项已重命名为galaxy_命令。对于这两个不兼容,调用packer fix你的模板.json将输出一个包含必要更改的模板,以便您不必搜索要更正的字段。»插件维护者插件维护者将看到构建器、供应器和后处理程序的接口已经改变。这些变化总结如下:类型生成器接口{+配置规范()hcldec.ObjectSpec-准备(…接口{})([]字符串,错误)+准备(…接口{})([]字符串,[]字符串,错误)...}类型设置程序接口{+配置规范()hcldec.ObjectSpec-提供(上下文。上下文,Ui,通信器)错误+提供(上下文。上下文,Ui,通信器,映射[string]接口{})错误...}类型后处理器接口{+配置规范()hcldec.ObjectSpec...}新的ConfigSpec函数返回组件的HCL2规范。每次使用组件时都会调用此函数。有关这个主题的更多信息,请阅读我们关于如何计算组件的ConfigSpec的指南。关于建造者。准备好以及供应者。供应品链接:现在每个构建器都可以定义以后可以在供应器中使用的信息。建造者。准备好()现在返回一个新的[]字符串,该字符串表示生成器将提供给供应器使用的变量字段的名称。这些字段稍后可以在使用上述{build`field`}}模板引擎的供应步骤中使用这些字段作为第一个参数提供给provisioner Prepare()调用。的函数签名供应员。准备好()未从…接口{}更改,需要处理此新映射以确保插值成功。如果你使用配置解码()来自github.com/hashicorp/packer/helper/config要读取您的provisioner模板,已经为您处理过了(例如,请参见如何在shell provisioner中实现Prepare()方法)。»提前感谢您的反馈Packer团队已经在这些变化上下了很大的功夫,很高兴能够为您带来这些新特性。请尝试一下,并与我们分享任何错误。随着我们进入2020年,我们要感谢你们所有人成为如此伟大的社区。