Chef solo安装MySql和Apache2时出错



我正在与chef和流浪汉合作,以更好地自动化一些机器构建过程,但我遇到了一个似乎无法解决的问题。问题是,无论我们做什么,只要我们包含php服务器食谱,它就会以某种方式将apache2弹出到运行列表的顶部。mysql也是如此。我们希望使用remi-repos,而不是拘泥于PHP 5.3.3,但我不能,因为首先安装的是apache和mysql。IE,预期的安装顺序类似于:

  1. 运行yum/apt-update并安装基线软件包(
  2. 基线linux服务器配方)安装apache2/php安装mysql
  3. 服务器

但我看到了:

  1. 安装apache2
  2. 安装mysql服务器
  3. 按照预期的顺序开始安装所有东西——包括再次看到php/apache2/mysql服务器

流浪文件中的运行列表如下所示:

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,然后是以EPEL安装开始的基线linux食谱:

[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应用程序配方中,并将运行列表声明为run_list,而不是一堆include。我怀疑这是一件简单而愚蠢的事情,但我似乎无法找到答案。

我与Chef的接触有限(读作:几乎没有),所以我看不出你的问题。然而,如果你还没有尝试过,我会提出一些建议:

  • 查找任何可能导致异常的overrideforce-override属性类型。

  • 在任何metadata.rb文件中查找depends apache2

  • 就像编写代码一样,逐步构建您的Vagrantfile,并查看导致问题的第一件事,尝试将问题本地化。

祝你好运!

没有足够的声誉来写评论,尽管这比这更合适。你认为那些家伙是对的。以下是您可以尝试的:

只需在您的自定义食谱之外调用"include_precipe",并将其作为"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_precipe"行;)

如果我写的这个调用不符合您想要的顺序,那么就有问题了。我刚刚把你的电话提取到Vagrantfile。按照你的意愿重新组织它,你就会解决问题。你肯定以某种方式包含了这些(apache等)食谱——我们的盒子上有非常相似的结构,而且效果很好。

PS。如果你们当中有清教徒,请不要评判这次流浪者档案重组。我把它作为我的意思的一个例子。

最新更新