Создайте рецепт шеф-повара путем передачи значений динамично из файла свойств

Я создал рецепт шеф-повара, который имеет установку определенного об/мин, упомянутого в нем. Этот об/мин имеет номер версии, который должен быть загружен динамично из файла свойств (который самостоятельно создается динамично). Этот рецепт шеф-повара затем должен быть загружен в сервер шеф-повара.

remote_file "Core_feature.rpm" do
path   "#{src_loc}core_feature_v91-2.noarch.rpm"

Здесь, v91-2 значение, которое должно войти динамично в рецепт путем чтения из файла свойств.

Действительно ли это достижимо? Если да, как я продолжаю реализовывать его. (Понятия не имейте о рубине)!

1
задан 6 July 2015 в 23:15
1 ответ

Изменить: полностью переписать из-за отрицательного голосования, но без дополнительной информации. Я не уверен, что именно я исправляю, поэтому вот рабочий код, который можно скопировать и вставить.

Предположим, что содержимое файла свойств помещено в /tmp/versions.properties и выглядит следующим образом:

apache=2.4.7-1ubuntu4.8
php=5.4.3
sendmail=1.2.3

Поваренная книга шеф-повара

# Copy a file with versions
cookbook_file '/tmp/versions.properties' do
  source 'versions.properties'
  mode '0644'
end

# Setvar
node.default['version'] = ""

# Block where we set the command
ruby_block "set_app_id" do
  block do
     node.set['version'] = "apt-get install apache2=`grep -o 'apache=.*' /tmp/versions.properties | cut -f2- -d'='`"
  end
  action :create
end

# Do a lazy install
execute "install lazy based" do
    command lazy {node[:version]}
end

В качестве бонуса, если вы работаете строго над * nix, без лени работает следующее:

# Execute straight up
 execute "install lazy based" do
    command "apt-get install apache2=`grep -o 'apache=.*' /tmp/versions.properties | cut -f2- -d'='`"
 end

Я все еще использовал исходную предпосылку ссылок в первых двух упомянутых сообщениях:

Предполагая, что файл свойств находится на сервере (?), Вы можете использовать lazy оценка, как описано [в этом сообщении] [1]

Изменить: Отметьте это [еще один] [2]

[1]: https://stackoverflow.com/questions/26238056/setting-chef-variable-via-a-ruby-block-not-being-executed . [2]: https://stackoverflow.com/questions/20620724/how-to-lazily-evaluate-an-arbitrary-variable-with-chef

-1
ответ дан 4 December 2019 в 10:53

Теги

Похожие вопросы