如何在packer中指定GCE的元数据?

时间:2016-11-24 15:29:24

标签: google-compute-engine packer

我正在尝试从包装器模板创建GCE图像。

以下是我为此目的使用的部分。

"builders": [
...
    {
        "type": "googlecompute",
        "account_file": "foo",
        "project_id": "bar",
        "source_image": "centos-6-v20160711",
        "zone": "us-central1-a",
        "instance_name": "packer-building-image-centos6-baz",
        "machine_type": "n1-standard-1",
        "image_name": "centos6-some-box-name",
        "ssh_username": "my_username",
        "metadata": {
            "startup-script-log-dest": "/opt/script.log",
            "startup-script": "/opt/startup.sh",
            "some_other_custom_metadata_key": "some_value"
        },
        "ssh_pty": true
    }
],
...

我还创建了所需的文件。这是那部分

"provisioners": [
...
  {
      "type": "file",
      "source": "{{user `files_path`}}/startup.sh",
      "destination": "/opt/startup.sh"
  },
...

  {
      "type": "shell",
      "execute_command": "sudo sh '{{.Path}}'",
      "inline": [
          ...
          "chmod ugo+x /opt/startup.sh"
      ]
  }
...

没有“元数据”字段,一切都适合我。我可以使用提供的参数创建图像/实例。但是当我尝试从图像创建实例时,我找不到提供的元数据,而且我无法分别运行启动脚本,设置日志文件和其他自定义元数据。 以下是我使用https://www.packer.io/docs/builders/googlecompute.html#metadata的来源。

任何建议都会有所帮助。

提前致谢

1 个答案:

答案 0 :(得分:0)

元数据标记startup-script应包含actuall脚本而不是路径。配置程序在执行启动脚本(至少启动)后运行。

而是在Packer中使用startup_script_file并提供启动脚本的路径。