Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Terraform 如何从地形状态设置封隔器变量_Terraform_Packer - Fatal编程技术网

Terraform 如何从地形状态设置封隔器变量

Terraform 如何从地形状态设置封隔器变量,terraform,packer,Terraform,Packer,使用openstack。我有两个步骤来使用packer构建图像: (1) 基本上,使用terraform创建基础设施,只是一个路由到internet的网络和一些允许SSH的安全组 (2) 使用packer构建图像 问题是我需要向packer提供terraform构建的网络的id。我可以通过检查状态文件手动执行此操作,但我想知道自动化此操作的最佳实践是什么?您可以使用它读取状态的输出。您可以将这些作为打包器变量传递,即 packer build -var network=$(terraform o

使用openstack。我有两个步骤来使用packer构建图像: (1) 基本上,使用terraform创建基础设施,只是一个路由到internet的网络和一些允许SSH的安全组 (2) 使用packer构建图像

问题是我需要向packer提供terraform构建的网络的id。我可以通过检查状态文件手动执行此操作,但我想知道自动化此操作的最佳实践是什么?

您可以使用它读取状态的输出。您可以将这些作为打包器变量传递,即

packer build -var network=$(terraform output network_uuid) template.json

另一个建议:你可以从Terraform给Packer打电话

resource "null_resource" "packer_runner" {
  triggers = {
    install_script = "${sha1(file("${path.module}/scripts/app/install.sh"))}"
    packer_file    = "${sha1(file("${path.module}/packer/packer.json"))}"
  }

  provisioner "local-exec" {
    working_dir = "${path.module}"
    command     = "packer build -var 'ami_name=${var.ami_name}' -var 'aws_region=${var.aws_region}' -var 'network_id=${var.network_id}' -var -parallel-builds=1 ./packer/packer.json"
    interpreter = ["PowerShell", "-Command"]
  }
}
然后,在
packer.json
上:

<...stuff...>
  "provisioners": [
    {
      "type": "shell",
      "inline": "/usr/bin/cloud-init status --wait"
    },
    {
      "type": "shell",
      "environment_vars": [
        "NETWOR_ID={{user `network_id`}}"
      ],
      "script": "./scripts/app/install.sh"
    },
<...more stuff...>

“供应者”:[
{
“类型”:“外壳”,
“内联”:“/usr/bin/cloud init状态--等待”
},
{
“类型”:“外壳”,
“环境变量”:[
“网络ID={{user`network\u ID`}”
],
“脚本”:“../scripts/app/install.sh”
},

这正是我想要的,我完全错过了输出变量的机制以及如何查询它们。谢谢!这也可以,但不能很好地集成到我的工作流程中。谢谢!