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