2016-05-10 2 views
0

В части файла среды JSON в Шефа, у меня есть что-то вроде этого:Использование инструментария Chef CI, работая в среде JSON-файла, как я могу использовать значение одного свойства для создания другого?

 "app_name": { 
      "base_url": "//host.name.co.uk", 
      "base_api_url": "//host.name.co.uk/api", 
     }, 

В то время как я предпочел бы что-то такое, как:

 "app_name": { 
      "base_url": "//host.name.co.uk", 
      "base_api_url": "${app_name.base_url}/api", 
     }, 

Другими словами, избегая повторяющихся строк, которые составляют другие , поэтому, если имя хоста изменяется, все производные свойства будут автоматически обновляться, а также приложения, более переносимые между средами и менее подверженные человеческой ошибке, так как такие вещи нуждаются в ручном обновлении.

Приветствия,

Джеймс

ответ

0

Это не доступно напрямую в виде JSON статический язык разметки. Вместо этого вы можете записать свой файл окружения в Ruby (примечание: Chef Zero будет поддерживать это только в 12.10, который выйдет позже в этом месяце), но он все равно будет статически интерполировать во время загрузки, что не будет учитывать другие переопределения. Проверьте https://coderanger.net/derived-attributes/ на более общее решение, но для этого требуются изменения кода рецепта.