В Chef, как получить доступ к атрибутам, установленным в среде JSON, из файлов атрибутов поваренной книги?
У меня есть система шеф-поваров, где у нас есть несколько сред и атрибуты, установленные в среде JSON.
У меня проблемы с доступом к ним из файлов атрибутов поваренной книги и рецептов.
3 ответа
Как выглядит файл вашей среды? Вы устанавливаете атрибуты по умолчанию или переопределяете? Если вы устанавливаете значение по умолчанию, обратите внимание, что это довольно низкий уровень приоритета в цепочке атрибутов, поэтому он может быть переопределен рецептом или ролью.
Приоритет атрибутов следующий: от низкого к высокому:
- атрибуты по умолчанию, применяемые в файле атрибутов
- атрибуты по умолчанию, применяемые в среде
- атрибуты по умолчанию, применяемые в роли
- атрибуты по умолчанию, применяемые к узлу непосредственно в рецепте
- обычные или установленные атрибуты, примененные в файле атрибутов
- обычные или заданные атрибуты, применяемые к узлу непосредственно в рецепте
- переопределить атрибуты, примененные в файле атрибутов
- переопределить атрибуты, примененные в роли
- переопределить атрибуты, применяемые в среде
- переопределить атрибуты, примененные к узлу непосредственно в рецепте
Выше от:
Наконец я смог использовать атрибут окружающей среды в рецепте шеф-повара. Допустим, у нас есть такая среда:
{
"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.
Правильный порядок теперь, как взято с сайта документации шеф-повара:
- Атрибут по умолчанию, расположенный в файле атрибутов поваренной книги
- Атрибут по умолчанию, расположенный в рецепте
- Атрибут по умолчанию, расположенный в среде
- Атрибут по умолчанию, расположенный в роли
- Атрибут force_default находится в файле атрибутов поваренной книги
- Атрибут force_default находится в рецепте
- Обычный атрибут, расположенный в файле атрибутов поваренной книги
- Нормальный атрибут, расположенный в рецепте
- Атрибут переопределения, расположенный в файле атрибутов поваренной книги
- Переопределенный атрибут, расположенный в рецепте
- Переопределенный атрибут, расположенный в роли
- Переопределенный атрибут, расположенный в среде
- Атрибут force_override, расположенный в файле атрибутов поваренной книги
- Атрибут force_override, расположенный в рецепте
- Автоматический атрибут, идентифицируемый Ohai в начале запуска chef-client