упаковщик объектов в пользовательских переменных - PullRequest
0 голосов
/ 16 декабря 2018

Как загрузить объект пользовательской переменной из файла var.Здесь был задан вопрос https://github.com/hashicorp/packer/issues/2441

Возможно ли обрабатывать объекты в пользовательских переменных?Например, используя провайдера chef-solo, я хотел бы передать атрибуты json как переменную пользователя.Похоже, что в текущей реализации это невозможно.

Ошибка чтения переменных в 'test.json': json: не удалось распаковать объект в значение Go типа string

У меня есть файл с именемВ файле test.json, который выглядит следующим образом:

{"metadata": {"somekey": "somevalue"}}

Я получаю сообщение об ошибке выше при передаче файла с помощью var-опция файла.

Есть ли конкретная причина, по которой это не реализовано?Нет необходимости анализировать глубоко вложенный объект, просто нужно установить метаданные пользовательской переменной для объекта, чтобы он мог использоваться типами объектов в пакере. Json

Существует обходной путьно мне нужен пример этого.

1 Ответ

0 голосов
/ 16 декабря 2018

Похоже, что в текущей реализации это невозможно.

Это правильно, в настоящее время передача объектов в пользовательских переменных невозможна.

Вы можете простопредварительно обработайте нужное вам значение, например, с помощью jq:

{
  "builders": [{
    "type": "digitalocean",
    "ssh_pty": "true",
    "image": "{{user `di_image`}}",
    "region": "{{user `di_region`}}",
    "size": "{{user `di_size`}}"
    }]
 } 

cat cloud.json | jq 'setpath(["builders",0,"flavor"]; {"hi": "hoo"})'

{
  "builders": [{
    "type": "digitalocean",
    "ssh_pty": "true",
    "image": "{{user `di_image`}}",
    "region": "{{user `di_region`}}",
    "size": "{{user `di_size`}}",
    "flavor": {
      "hi": "hoo"
    }
  }]
}
...