Как указать метаданные для GCE в упаковщике?

Пытаюсь создать образ 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.

Любое предложение будет полезным.

заранее спасибо


person Rafik Avtoyan    schedule 24.11.2016    source источник


Ответы (1)


Тег метаданных startup-script должен содержать сценарий actall, а не путь. Provisioners запускаются после того, как сценарий запуска был выполнен (по крайней мере, запущен).

Вместо этого используйте startup_script_file в Packer и укажите путь к сценарию запуска.

person Rickard von Essen    schedule 09.01.2017