Атрибуты chef.json, неожиданно сохраненные в разных положениях - PullRequest
0 голосов
/ 05 марта 2019

У меня проблема с Vagrant / Chef Solo, когда я повторно предоставляю атрибуты, которые были ранее переданы в chef.json, продолжают появляться, даже если их больше не существует.

В Vagrant они передаются следующим образом: machine_properties.vm.provision :chef_solo do |chef| chef.json = machine_options end

Если при первом запуске вы устанавливаете machine_options на следующее, все работает нормально machine_options['colours']['red'] = '#ff0000' machine_options['colours']['green'] = '#00ff00'

Если вы затем измените его на следующее, вы увидите, что элемент green все еще присутствует. (В качестве отдельного файла /tmp/vagrant-chef/dna.json отображается только красный и синий цвета, как и ожидалось, как и для puts в бродячем файле)

machine_options['colours']['red'] = '#ff0000' machine_options['colours']['blue'] = '#0000ff' Однако, с помощью Chef, если вы Chef::Log.info(node["colours"]) увидите, что красный, синий и зеленый теперь присутствуют. Это приводит к путанице шаблонов, которые теперь повторяют все элементы, а также означает, что и условия, ожидающие, что узлы будут присутствовать / отсутствовать, будут видеть узлы как настоящие.

Похоже, Шеф рассматривает их как node.normal['colours'] и т. Д., А не node.default['colours']. Обновление (основной?) Версии Chef в config.omnibus.chef_version = '14.10.9' исправляет (d?) Ее для следующего запуска (т. Е. Очистка очищается), но последующие положения снова наполняются длинными удаленными атрибутами: (

Есть ли способ заставить Chef забыть то, о чем было сказано во время предыдущих запусков, и фактически рассматривать текущий chef.json как полный набор вещей?

...