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

У меня есть система шеф-поваров, где у нас есть несколько сред и атрибуты, установленные в среде JSON.

У меня проблемы с доступом к ним из файлов атрибутов поваренной книги и рецептов.

3 ответа

Как выглядит файл вашей среды? Вы устанавливаете атрибуты по умолчанию или переопределяете? Если вы устанавливаете значение по умолчанию, обратите внимание, что это довольно низкий уровень приоритета в цепочке атрибутов, поэтому он может быть переопределен рецептом или ролью.

Приоритет атрибутов следующий: от низкого к высокому:

  1. атрибуты по умолчанию, применяемые в файле атрибутов
  2. атрибуты по умолчанию, применяемые в среде
  3. атрибуты по умолчанию, применяемые в роли
  4. атрибуты по умолчанию, применяемые к узлу непосредственно в рецепте
  5. обычные или установленные атрибуты, примененные в файле атрибутов
  6. обычные или заданные атрибуты, применяемые к узлу непосредственно в рецепте
  7. переопределить атрибуты, примененные в файле атрибутов
  8. переопределить атрибуты, примененные в роли
  9. переопределить атрибуты, применяемые в среде
  10. переопределить атрибуты, примененные к узлу непосредственно в рецепте

Выше от:

Наконец я смог использовать атрибут окружающей среды в рецепте шеф-повара. Допустим, у нас есть такая среда:

{
  "name": "QA",
  "description": "QA environment",
  "cookbook_versions": {
  },
  "json_class": "Chef::Environment",
  "chef_type": "environment",
  "default_attributes": {
    "comp_rsyslog": {
      "filetag_env": "compqa"
    }
  },
  "override_attributes": {
  }
}

И нам нужно использовать атрибут filetag_env в файле конфигурации шаблона службы для передачи атрибута среды.

То, как я это делаю в файле conf erb, выглядит так:

$InputFileTag <%= node['comp_rsyslog']['filetag_env'] %>,<%= node['rsyslog']['filetag1'] %>

<%= node['rsyslog']['filetag1'] %> определяется в файле атрибута рецепта:

default['rsyslog']['filetag1'] = 'comp_service'

Результатом будет файл в /etc/rsyslog.d/comp_service.conf с содержанием вроде:

$InputFileTag compqa,comp_service.

Правильный порядок теперь, как взято с сайта документации шеф-повара:

  1. Атрибут по умолчанию, расположенный в файле атрибутов поваренной книги
  2. Атрибут по умолчанию, расположенный в рецепте
  3. Атрибут по умолчанию, расположенный в среде
  4. Атрибут по умолчанию, расположенный в роли
  5. Атрибут force_default находится в файле атрибутов поваренной книги
  6. Атрибут force_default находится в рецепте
  7. Обычный атрибут, расположенный в файле атрибутов поваренной книги
  8. Нормальный атрибут, расположенный в рецепте
  9. Атрибут переопределения, расположенный в файле атрибутов поваренной книги
  10. Переопределенный атрибут, расположенный в рецепте
  11. Переопределенный атрибут, расположенный в роли
  12. Переопределенный атрибут, расположенный в среде
  13. Атрибут force_override, расположенный в файле атрибутов поваренной книги
  14. Атрибут force_override, расположенный в рецепте
  15. Автоматический атрибут, идентифицируемый Ohai в начале запуска chef-client
Другие вопросы по тегам