2015-11-26 7 views
0


У нас есть рецепт, которые используют атрибут узла:Chef - переопределить атрибут узла

python_pip 'request_proxy' do 
    virtualenv '/opt/proxy/.env' 
    version node.default['request-proxy']['version'] 
    Chef::Log.info('Auth request proxy #{version}') 
    action :install 
end 

Атрибут устанавливается на уровне узла и все в порядке, но для целей тестирования я хочу изменить это в моем местном (кухня/бродячий). В качестве первого шага я добавляю атрибут к моему .kitchen.yml:

suites: 
    - name: default 
    run_list: 
    - recipe[proxy_install] 
    attributes: {request-proxy: {'version': '1.0.8'}} 

К сожалению, узел все еще использует версию по умолчанию. Все работает нормально, без ошибок и полностью игнорирует мои атрибуты.
Позже я попытался добавить это в файл параметров (chef-client -j params.json) на производственный узел, результат был тот же.

Что я пропустил? Что я делаю не так?

P.S. Chef::Log.info('Auth request proxy #{version}') также полностью игнорируется ??

+0

'Chef :: Log.info' не будет анализироваться внутри ресурса, я даже удивлен, что это не вызывает ошибку как неправильный атрибут. Установите его из ресурса 'python_pip', и он должен работать, если вы заменили одинарные кавычки двойной кавычкой, чтобы интерполяция и' # {version} 'были заменены на ее значение. (Комментируйте, а не ответьте, поскольку я не знаю о проблеме kitchen.yml.) – Tensibai

ответ

1

Можете ли вы попробовать использовать YAML? kitchen.yml не является файлом JSON, поэтому я не уверен, что ваш JSON, встроенный в него, будет работать.

attributes: 
    request-proxy: 
    version: '1.0.8' 

Кроме того, вы, вероятно, не следует использовать node.default, если вы не хотите, чтобы поднять значение по умолчанию только (и никогда никаких переопределяет). Если вы хотите использовать атрибут приоритет (по умолчанию, нормальный, переопределение, сила) в Chef, вы должны делать:

node['request-proxy']['version'] 

Наконец, у вас есть один кавычки строку с переменной. Это будет никогда Работа, как вы ожидаете, в Ruby (вы бежите rubocop? Это поймало бы это). Попробуйте двойные кавычки, и удалить его из середины вашего ресурса:

Chef::Log.info("Auth request proxy #{version}") 
+0

Привет, Спасибо за ответ. Я попробую YAML/JSON (оба верны https://docs.chef.io/config_yml_kitchen.html), оба типа цитирования, без результатов. Проблема была в слове «по умолчанию», без него все работает отлично !!! P.S. Chef :: Log, все еще игнорируется :) – parasit

+0

Все действующие JSON также действительны YAML :) – coderanger

+0

Весь этот вопрос, вероятно, является дубликатом http://stackoverflow.com/questions/23224384/adding-attributes-to-test-kitchen – lamont

Смежные вопросы