Могу ли я установить среду при работе под шеф-соло, используя файл атрибутов?

В Chef 11.6 добавлена ​​поддержка среды для chef-solo, как описано здесь http://docs.opscode.com/essentials_environments.html#set-using-chef-solo

Однако я не могу найти способ настройки среды из файла атрибутов JSON. Я пытался установить ключи environment и chef_environment в файле json, и ни один из них не работает. Я могу установить среду через файл solo.rb, но мне было интересно, возможно ли это и через файл атрибутов json?

Я вызываю так:

chef-solo -l debug -c solo.rb -j node.json

solo.rb содержит:

root = File.absolute_path(File.dirname(__FILE__))

cookbook_path root + '/cookbooks'
data_bag_path root + '/data_bags'
role_path root + '/roles'
environment_path root + '/environments'
verbose_logging :false

node.json содержит:

{
  "run_list": [ "recipe[env_log]" ],
  "environment": "test1",
  "chef_environment": "test2"
}

а рецепт env_log содержит только Chef::Log.info("Environment #{node.chef_environment}").


person Ash Berlin-Taylor    schedule 06.11.2013    source источник


Ответы (2)


Предполагается, что среда указана параметром -E или --environment при запуске chef-solo. Например:

chef-solo -l debug -c solo.rb -j node.json -E test2

Если вы не указали это, node.chef_environment будет _default. См. последний код chef-solo

person shawnzhu    schedule 07.11.2013

Я не использую Chef Solo как часть своих повседневных задач Chef, но некоторое время назад я заставил его работать во время экспериментов. Я создал файл /etc/chef/solo.rb и в файле поместил среду вроде:

environment "YOUR_ENV_NAME"

Для данных среды я скопировал все файлы среды репозитория моего шеф-повара в /var/chef/environments на узле.

cp -r <repo>/environments/* /mnt/to/solo/node/var/chef/environments

У меня должен был быть Chef 11.6, чтобы это работало.

person Tom Weiss    schedule 06.11.2013