2013-06-05 47 views
2

对于流浪汉和厨师来说,我很新,所以这可能是一个简单的问题。Chef-solo和vagrant在安装后自动运行MySql脚本?

我设法让厨师安装MySQL,PHP等

在此之后,我需要虚拟机运行约3 SQL脚本,这是可能使用的厨师或者是它的东西,我应该进入一个shell脚本和启动后运行?

我流浪文件 -

# -*- mode: ruby -*- 
# vi: set ft=ruby : 

Vagrant.configure("2") do |config| 
    config.vm.box = "raring32.box" 
    config.vm.box_url = "http://[local network location]/raring32.box" 
    config.vm.network :forwarded_port, guest: 80, host: 8888 

    config.vm.provision :chef_solo do |chef| 
     chef.cookbooks_path = "cookbooks" 
     chef.add_recipe "openssl" 
     chef.add_recipe "apache2" 
     chef.add_recipe "mysql" 
     chef.add_recipe "mysql::server" 
     chef.add_recipe "php" 
     chef.add_recipe "php::module_apc" 
     chef.add_recipe "php::module_curl" 
     chef.add_recipe "php::module_mysql" 
     chef.add_recipe "apache2::mod_php5" 
     chef.add_recipe "apache2::mod_rewrite" 
     chef.json = { 
      "mysql" => { 
       "server_root_password" => "hello", 
       "server_repl_password" => "hello", 
       "server_debian_password" => "hello" 
       } 
     } 
     chef.add_recipe "Database:Mysql"  
    end 
end 

感谢您的帮助。

回答

7

为此,我会建议使用厨师,因为你已经在厨师/流浪环境。无需创建shell脚本并从Chef内部触发它 - 这将违背Chef/Vagrant的预期流程。

你可以做沿东西线(取出并从MySQL cookbook由Opscode公司在server.rb配方简化):

execute "mysql-install-privileges" do 
    command "mysql -u root -p#{node['mysql']['server_root_password']} < /vagrant/command.sql"  
end 

你可以在你自己的,你怎么想存储的MySQL确定路径,用户名和密码。 一般的想法是,你可以在一个.sql文件中定义你的MySQL命令(保存在你的食谱中的模板或文件目录中),然后用普通的MySQL命令运行它。

希望能让你走上正确的道路。

+0

感谢你们,我希望今天下午能回到工作流程的这个方面,让你们在结果上发布。 –

+0

我把你所做的事放到了我创建的MySQL cookbook-> recipes-> setup.rb文件中。然后我添加了执行代码。在此之后,我更新了我的厨师在流浪文件中的工作,如下所示:\t \t chef.add_recipe“mysql :: setup” –

+0

不错。乐于帮助。几周前我确实遇到了这个问题......幸运的是,我碰到了MySQL食谱使用的方法。 – Adam