Я пытаюсь развернуть приложение rails с помощью chef, для поваренной книги mysql для создания базы данных требуется mysql
драгоценный камень. В mysql
gem устанавливается в системе с помощью пакета Ubuntu, но он не может использоваться chef-client
который бежит от /opt/chef/embedded
.
Я пробовал добавить это:
chef_gem 'mysql' do
action :nothing
end.run_action(:install)
Но для этого требуется libmysqlclient-dev
Пакет Ubuntu для установки. Поэтому я также добавил это перед предыдущим:
package 'libmysqlclient-dev' do
action :nothing
end.run_action(:install)
Но это делается до apt
recipe обновляет репозитории apt, и поэтому установка libmysqlclient-dev
терпит неудачу.
Эти «хаки» выглядят некрасиво, и я не могу найти способ запустить apt-get update
в нужное время.
Может ли кто-нибудь помочь мне найти правильный (наиболее похожий на повара) способ решения моей проблемы (актуальная проблема заключается в создании базы данных с использованием application
Кулинарная книга)?
Я смог решить проблему с помощью этого рецепта как уродливый хак ... Я все еще ищу лучшее решение:
execute "apt-get update" do
ignore_failure true
action :nothing
end.run_action(:run)
node.set['build_essential']['compiletime'] = true
include_recipe "build-essential"
%w{build-essential mysql-client libmysqlclient-dev}.each do |p|
package p do
action :nothing
end.run_action(:install)
end
chef_gem 'mysql' do
action :nothing
end.run_action(:install)
В mysql::ruby
рецепт позволяет устанавливать пакеты через node["mysql"]["client"]["packages"]
:
Поэтому включите его в свой список выполнения:
run_list(
#...
"recipe[mysql::ruby]",
#...
)
и укажите свои зависимости в атрибутах:
# this is needed for debian based systems
node["mysql"]["client"]["packages"] = ["build-essential","mysql-client","libmysqlclient-dev"]
На самом деле нет связи между системой управления пакетами Debian и гемом, поэтому ответ, вероятно, такой:
package "libmysqlclient-dev" do
action :install
end
gem_package "mysql" do
action :install
end
(The chef_gem
Ресурс действительно устанавливает драгоценный камень, но он предназначен только для установки драгоценных камней для использования в рецепте Chef. Смотрите все кровавые подробности на Страница ресурсов для поваров).
Чтобы держать под контролем, я рекомендую использовать Поваренная книга сообщества apt Opscode и добавить recipe[apt]
в начало списка запусков для всех узлов.