2013-11-28 2 views
3

Я работаю с шеф-поваром и бродячим, чтобы лучше автоматизировать некоторые процессы сборки машины, и я столкнулся с проблемой, которую я не могу понять. Проблема в том, что независимо от того, что мы делаем, как только мы включаем нашу кулинарную книгу php-сервера, она как-то выталкивает apache2 в начало списка. То же самое можно сказать о mysql. Мы хотели бы использовать remi repos вместо того, чтобы застревать с PHP 5.3.3, но я не могу, поскольку apache и mysql устанавливаются в первую очередь. IE, ожидаемый установить порядок что-то вроде:Chef-solo устанавливает MySql и Apache2 не по порядку

  1. запустить ни/кв обновление и установки базовых пакетов (в
  2. базисного-линукс-сервер рецепты) установить apache2/PHP установку MySQL
  3. сервер

Но я вижу:

  1. установить apache2
  2. установить mysql-сервер
  3. начать установку всего в ожидаемом порядке - в том числе увидеть сервер php/apache2/mysql.

Список пробег в vagrantfile выглядит следующим образом:

chef.add_recipe "company-baseline-linux-server::enterprise-linux" 
chef.add_recipe "company-baseline-linux-server" 
chef.add_recipe "company-php-server" 
chef.add_recipe "company-mysql-server" 
chef.add_recipe "company-php-server::setup-website" 
chef.add_recipe "company-wordpress-app" 
chef.add_recipe "company-wordpress-app::copy-assets" 
chef.add_recipe "company-wordpress-app::load-wordpress-db" 

компании-PHP :: умолчанию рецепт:

#set apache ports 
node.default['apache']['listen_ports'] = node['listen_ports'] 

#setup apache default modules 
node.default['apache']['default_modules'] = %w(status alias rewrite headers deflate dir env mod_proxy mod_proxy_http mime negotiation setenvif authz_default authz_host log_config logio) 
include_recipe "apache2" 
include_recipe "apache2::mod_ssl" 

#set apache to autostart 
execute "auto start apache" do 
    command "chkconfig httpd on" 
end 

#add php 
include_recipe "php" 
include_recipe "apache2::mod_php5" 
include_recipe "php::module_mysql" 

#disable iptables for now 
include_recipe "iptables::disabled" 

#kill default site 
apache_site "default" do 
    enable false 
end 

компания-MySQL :: умолчанию рецепт:

node.default["mysql"]["remove_anonymous_users"] = true 

include_recipe "mysql::server" 

#setup remote database user 
include_recipe "database" 
include_recipe "database::mysql" 

mysql_connection_info = { 
    :host  => node['dbserver'], 
    :username => 'root', 
    :port  => node['mysql']['port'], 
    :password => node['mysql']['server_root_password'] 
} 

dbuser = node['remote_root_user'] 
dbpassword = node['remote_root_password'] 

mysql_database_user dbuser do 
    connection mysql_connection_info 
    password  dbpassword 
    host   '%' 
    grant_option true 
    action  :grant 
    only_if { node['remote_root_user'] } 
end 

mysql_database_user dbuser do 
    connection mysql_connection_info 
    password  dbpassword 
    host   'localhost' 
    grant_option true 
    action  :grant 
    only_if { node['remote_root_user'] } 
end 

Когда я запускаю все это, я получаю следующий вывод, где один можно увидеть HTTPD установки первого, а затем MySQL, а затем базисные-Linux-поваренные книги, которые начинаются с Epel установки:

[2013-11-29T00:53:48+00:00] INFO: Forking chef instance to converge... 
[2013-11-29T00:53:48+00:00] INFO: *** Chef 11.6.0 *** 
[2013-11-29T00:53:48+00:00] INFO: Setting the run_list to ["recipe[company-baseline-linux-server::enterprise-linux]", "recipe[company-baseline-linux-server]", "recipe[company-php-server]", "recipe[company-mysql-server]", "recipe[company-php-server::setup-website]", "recipe[company-wordpress-app]", "recipe[company-wordpress-app::copy-assets]", "recipe[company-wordpress-app::load-wordpress-db]"] from JSON 
[2013-11-29T00:53:48+00:00] INFO: Run List is [recipe[company-baseline-linux-server::enterprise-linux], recipe[company-baseline-linux-server], recipe[company-php-server], recipe[company-mysql-server], recipe[company-php-server::setup-website], recipe[company-wordpress-app], recipe[company-wordpress-app::copy-assets], recipe[company-wordpress-app::load-wordpress-db]] 
[2013-11-29T00:53:48+00:00] INFO: Run List expands to [company-baseline-linux-server::enterprise-linux, company-baseline-linux-server, company-php-server, company-mysql-server, company-php-server::setup-website, company-wordpress-app, company-wordpress-app::copy-assets, company-wordpress-app::load-wordpress-db] 
[2013-11-29T00:53:48+00:00] INFO: Starting Chef Run for localhost 
[2013-11-29T00:53:48+00:00] INFO: Running start handlers 
[2013-11-29T00:53:48+00:00] INFO: Start handlers complete. 
[2013-11-29T00:53:49+00:00] WARN: Cloning resource attributes for service[apache2] from prior resource (CHEF-3694) 
[2013-11-29T00:53:49+00:00] WARN: Previous service[apache2]: /tmp/vagrant-chef-1/chef-solo-1/cookbooks/apache2/recipes/default.rb:24:in `from_file' 
[2013-11-29T00:53:49+00:00] WARN: Current service[apache2]: /tmp/vagrant-chef-1/chef-solo-1/cookbooks/apache2/recipes/default.rb:210:in `from_file' 
[2013-11-29T00:53:49+00:00] WARN: Cloning resource attributes for file[/etc/httpd/conf.d/ssl.conf] from prior resource (CHEF-3694) 
[2013-11-29T00:53:49+00:00] WARN: Previous file[/etc/httpd/conf.d/ssl.conf]: /tmp/vagrant-chef-1/chef-solo-1/cookbooks/apache2/recipes/default.rb:84:in `block in from_file' 
[2013-11-29T00:53:49+00:00] WARN: Current file[/etc/httpd/conf.d/ssl.conf]: /tmp/vagrant-chef-1/chef-solo-1/cookbooks/apache2/recipes/mod_ssl.rb:28:in `from_file' 
[2013-11-29T00:53:49+00:00] WARN: Cloning resource attributes for template[/etc/httpd/ports.conf] from prior resource (CHEF-3694) 
[2013-11-29T00:53:49+00:00] WARN: Previous template[/etc/httpd/ports.conf]: /tmp/vagrant-chef-1/chef-solo-1/cookbooks/apache2/recipes/default.rb:185:in `from_file' 
[2013-11-29T00:53:49+00:00] WARN: Current template[/etc/httpd/ports.conf]: /tmp/vagrant-chef-1/chef-solo-1/cookbooks/apache2/recipes/mod_ssl.rb:34:in `from_file' 
[2013-11-29T00:53:49+00:00] WARN: Cloning resource attributes for execute[a2dissite default] from prior resource (CHEF-3694) 
[2013-11-29T00:53:49+00:00] WARN: Previous execute[a2dissite default]: /tmp/vagrant-chef-1/chef-solo-1/cookbooks/apache2/definitions/apache_site.rb:34:in `block in from_file' 
[2013-11-29T00:53:49+00:00] WARN: Current execute[a2dissite default]: /tmp/vagrant-chef-1/chef-solo-1/cookbooks/apache2/definitions/apache_site.rb:34:in `block in from_file' 
[2013-11-29T00:53:49+00:00] WARN: Cloning resource attributes for directory[/var/lib/mysql] from prior resource (CHEF-3694) 
[2013-11-29T00:53:49+00:00] WARN: Previous directory[/var/lib/mysql]: /tmp/vagrant-chef-1/chef-solo-1/cookbooks/mysql/recipes/server.rb:117:in `block in from_file' 
[2013-11-29T00:53:49+00:00] WARN: Current directory[/var/lib/mysql]: /tmp/vagrant-chef-1/chef-solo-1/cookbooks/mysql/recipes/server.rb:117:in `block in from_file' 
[2013-11-29T00:53:49+00:00] WARN: Cloning resource attributes for template[/etc/my.cnf] from prior resource (CHEF-3694) 
[2013-11-29T00:53:49+00:00] WARN: Previous template[/etc/my.cnf]: /tmp/vagrant-chef-1/chef-solo-1/cookbooks/mysql/recipes/server.rb:134:in `from_file' 
[2013-11-29T00:53:49+00:00] WARN: Current template[/etc/my.cnf]: /tmp/vagrant-chef-1/chef-solo-1/cookbooks/mysql/recipes/server.rb:194:in `from_file' 
[2013-11-29T00:53:49+00:00] INFO: Could not find previously defined grants.sql resource 
[2013-11-29T00:54:36+00:00] INFO: package[mysql] installing mysql-5.1.69-1.el6_4 from updates repository 
[2013-11-29T00:54:47+00:00] INFO: package[mysql-devel] installing mysql-devel-5.1.69-1.el6_4 from updates repository 
[2013-11-29T00:55:18+00:00] WARN: Cloning resource attributes for mysql_database_user[wordpress-dba] from prior resource (CHEF-3694) 
[2013-11-29T00:55:18+00:00] WARN: Previous mysql_database_user[wordpress-dba]: /tmp/vagrant-chef-1/chef-solo-1/cookbooks/company-mysql-server/recipes/default.rb:27:in `from_file' 
[2013-11-29T00:55:18+00:00] WARN: Current mysql_database_user[wordpress-dba]: /tmp/vagrant-chef-1/chef-solo-1/cookbooks/company-mysql-server/recipes/default.rb:36:in `from_file' 
[2013-11-29T00:55:18+00:00] WARN: Cloning resource attributes for link[/etc/httpd/sites-enabled/cabletechtalk] from prior resource (CHEF-3694) 
[2013-11-29T00:55:18+00:00] WARN: Previous link[/etc/httpd/sites-enabled/cabletechtalk]: /tmp/vagrant-chef-1/chef-solo-1/cookbooks/company-php-server/recipes/setup-website.rb:14:in `from_file' 
[2013-11-29T00:55:18+00:00] WARN: Current link[/etc/httpd/sites-enabled/cabletechtalk]: /tmp/vagrant-chef-1/chef-solo-1/cookbooks/company-php-server/recipes/setup-website.rb:19:in `from_file' 
[2013-11-29T00:55:18+00:00] WARN: Cloning resource attributes for link[/srv/websites/cabletechtalk/webroot/wp-config.php] from prior resource (CHEF-3694) 
[2013-11-29T00:55:18+00:00] WARN: Previous link[/srv/websites/cabletechtalk/webroot/wp-config.php]: /tmp/vagrant-chef-1/chef-solo-1/cookbooks/company-wordpress-app/recipes/default.rb:13:in `from_file' 
[2013-11-29T00:55:18+00:00] WARN: Current link[/srv/websites/cabletechtalk/webroot/wp-config.php]: /tmp/vagrant-chef-1/chef-solo-1/cookbooks/company-wordpress-app/recipes/default.rb:18:in `from_file' 
[2013-11-29T00:55:18+00:00] WARN: Cloning resource attributes for service[httpd] from prior resource (CHEF-3694) 
[2013-11-29T00:55:18+00:00] WARN: Previous service[httpd]: /tmp/vagrant-chef-1/chef-solo-1/cookbooks/company-php-server/recipes/setup-website.rb:23:in `from_file' 
[2013-11-29T00:55:18+00:00] WARN: Current service[httpd]: /tmp/vagrant-chef-1/chef-solo-1/cookbooks/company-wordpress-app/recipes/default.rb:22:in `from_file' 
[2013-11-29T00:55:18+00:00] INFO: Adding RPM-GPG-KEY-EPEL-6 GPG key to /etc/pki/rpm-gpg/ 
[2013-11-29T00:55:18+00:00] INFO: remote_file[/etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6] created file /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 
[2013-11-29T00:55:23+00:00] INFO: remote_file[/etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6] updated file contents /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 
[2013-11-29T00:55:23+00:00] INFO: remote_file[/etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6] mode changed to 644 
[2013-11-29T00:55:23+00:00] INFO: remote_file[/etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6] sending run action to execute[import-rpm-gpg-key-RPM-GPG-KEY-EPEL-6] (immediate) 
[2013-11-29T00:55:24+00:00] INFO: execute[import-rpm-gpg-key-RPM-GPG-KEY-EPEL-6] ran successfully 
[2013-11-29T00:55:24+00:00] INFO: Adding epel repository to /etc/yum.repos.d/epel.repo 
[2013-11-29T00:55:24+00:00] INFO: template[/etc/yum.repos.d/epel.repo] created file /etc/yum.repos.d/epel.repo 
[2013-11-29T00:55:24+00:00] INFO: template[/etc/yum.repos.d/epel.repo] updated file contents /etc/yum.repos.d/epel.repo 
[2013-11-29T00:55:24+00:00] INFO: template[/etc/yum.repos.d/epel.repo] mode changed to 644 
[2013-11-29T00:55:24+00:00] INFO: template[/etc/yum.repos.d/epel.repo] sending run action to execute[yum-makecache-epel] (immediate) 

Я попытался большинство очевидных трюков, таких как нажатие вызовы это непосредственно в нашу wordpress- app recipe и объявить список запуска как run_list, а не кучу включений. Я подозреваю, что это что-то простое и глупое, но я не могу придумать ответ.

+0

Рецепт «php», который вы предоставили, это «компания-php-сервер», не так ли? Apache устанавливается перед php, потому что вы включаете его раньше: 'include_recipe 'apache2" 'находится перед' include_recipe' php ". Не совсем понятно, в чем проблема на самом деле. –

+0

@DracoAter - спасибо за отзыв, я немного изменил вопрос, чтобы разобраться. Проблема в том, что apache и php начинаются до рецептов, перечисленных выше, поэтому я не могу сделать что-то вроде выбора репозиториев, прежде чем вникать в это. –

+0

Может быть, рецепты «company-baseline-linux-server» также включают apache? В противном случае, не знаю, извините. –

ответ

3

У меня было ограниченное (прочитанное: рядом с ним) воздействие шеф-повара, поэтому я не вижу вашей проблемы. Тем не менее, я хотел бы сделать некоторые предложения в случае, если вы еще не пробовали:

  • Посмотрите на любые override или force-override типов атрибутов, которые могут быть причиной странности.

  • Ищите depends apache2 в любых файлах metadata.rb.

  • Как только вы набираете код, постепенно создавайте свой Vagrantfile и смотрите на первое, что вызывает проблемы, чтобы попытаться локализовать вашу проблему.

Удачи вам!

+0

Это самое близкое справа, поэтому я собираюсь дать ему щедрость. В конце концов проблема была связана с зависимостью - кулинарная книга базы данных заставила mysql-ruby установить фронт, который заставил клиента mysql установить фронт, вызывая проблемы с зависимостями. –

+0

Поздравляем вас с нахождением проблемы. – Vidya

1

Не хватает репутации, чтобы написать комментарий, хотя это было бы более уместно, чем это. Думайте, что ребята правы. Вот что вы могли бы попробовать:

Просто нажмите «include_recipe» за пределами ваших рецептов и включите его в качестве «chef.add_recipe» в файле Vagrant. Это вероятно, будет выглядеть примерно так:

chef.add_recipe "company-baseline-linux-server::enterprise-linux" 
chef.add_recipe "company-baseline-linux-server" 
chef.add_recipe "company-php-server_PART1" 
#following kicked out of company-php-server::default recipe # 
chef.add_recipe "apache2"         # 
chef.add_recipe "apache2::mod_ssl"       # 
#---------------------------------------------------------- # 
chef.add_recipe "company-php-server_PART2" 
#following kicked out of company-php-server::default recipe # 
chef.add_recipe "php"          # 
chef.add_recipe "apache2::mod_php5"       # 
#---------------------------------------------------------- # 
chef.add_recipe "php::module_mysql" 
chef.add_recipe "iptables::disabled" 
chef.add_recipe "company-php-server_PART3" 
# one line recipe that sets 'remove_anonymous_users' attribute 
chef.add_recipe "mysql-remove_anonymous_users_set_true" 
#following kicked out of company-mysql-server::default recipe # 
chef.add_recipe "mysql::server"        # 
chef.add_recipe "database"         # 
chef.add_recipe "database::mysql"        # 
#------------------------------------------------------------ # 
chef.add_recipe "company-mysql-server" 
chef.add_recipe "company-php-server::setup-website" 
chef.add_recipe "company-wordpress-app" 
chef.add_recipe "company-wordpress-app::copy-assets" 
chef.add_recipe "company-wordpress-app::load-wordpress-db" 

Не забудьте удалить/комментарий «include_recipe» строки из ваших рецептов;)

Если вызов я написал не в том порядке, который вы хотели, то есть проблема. Я просто извлек ваши вызовы в Vagrantfile. Реорганизуйте его по своему усмотрению, и проблема будет решена. Вы, конечно же, включили те (apache и т. Д.) Рецепты - у нас очень похожая структура на наших ящиках, и она работает нормально.

PS. Если у вас есть пуританцы, пожалуйста, не судите об этой реструктуризации Vagrantfile.Я сделал это как пример того, что я имел в виду.

+0

Спасибо, мы действительно пробовали что-то вроде этого подхода, но мы действительно не понравилось, так как он сильно разрушил нашу инкапсуляцию, и мы пытались избежать этого. Также не удалось решить проблему. –

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