Переопределение ролевых атрибутов в шеф-клиенте с упаковщиком - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть роль шеф-повара:

{
  "name": "my-role",
  "description": "Defines a role",
  "override_attributes": {
    "cookbook_one" {
      "key": "value"
    }
  }
  "run_list": [
    recipe["cookbook_one"],
    recipe["cookbook_two"]
  ]
}

Который я вызываю с Packer в блоке инициатора:

{
  "variables": {
    "my-variable": ""
  },
  "provisioners": [
    {
      "type": "chef-client",
      "server_url": "https://mychefserver.com/",
      "run_list": "role[my-role]",
      ...
    }

Мне нужно добавить некоторые атрибуты в recipe_two изнутриПакер.Я прочитал, что могу использовать блок json провайдера chef-client , чтобы добавить некоторые атрибуты в список выполнения.Я попытался

  "type": "chef-client",
  "server_url": "https://mychefserver.com/",
  "run_list": "role[my-role]",
  "json": {
    "override_attributes": {
      "cookbook_two": {
        "some_key": "value"
      }
    }
  }

, и когда я запускаю упаковщик, я вижу в /tmp/packer-chef-client/first-boot.json

   {
     "override_attributes": {
       "cookbook_two": {
         "some_key": "{{ user `my-variable` }}"
       }
     },
     "run_list": [
       "role[my-role]"
     ]
   }

Но атрибуты override_attributes для recipe_two не являютсяподвергается поваренной книге.Я не могу найти ни примеров того, как заставить его работать таким образом, ни правильного формата проходящего через него блока "json": {}.

Любое направление для предоставления переопределенных атрибутов моей кулинарной книге через рольпозвонил бы от Пэкер, будет очень признателен

1 Ответ

0 голосов
/ 27 февраля 2019

Ваша проблема не имеет ничего общего с самим упаковщиком, а скорее с тем, как выполнить chef-client и предоставить пользовательский атрибут для запуска chef-client.

Вы можете предоставить пользовательские атрибуты, включив --json-attributes (я настоятельно советую вам посетить документацию, поскольку она содержит примеры) в chef-client

-j PATH, --json-attributes PATH

Путь к файлу, который содержит данные JSON,Используется для настройки первого запуска клиента.Для всех будущих запусков с параметром -i ожидается, что атрибуты будут сохраняться на chef-сервере.

, поэтому вернемся к вашему вопросу с упаковщиком ... создайте файл json с атрибутами, которые выхотел бы переопределить и убедиться, что вы вызываете chef-client из упаковщика с --json-attributes и указываете на созданный вами файл json.

...