Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Chef solo和vagrant在安装后自动运行MySql脚本?_Mysql_Chef Infra_Vagrant - Fatal编程技术网

Chef solo和vagrant在安装后自动运行MySql脚本?

Chef solo和vagrant在安装后自动运行MySql脚本?,mysql,chef-infra,vagrant,Mysql,Chef Infra,Vagrant,我是流浪汉和厨师的新手,所以这个问题可能很简单 我已经设法让chef安装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

我是流浪汉和厨师的新手,所以这个问题可能很简单

我已经设法让chef安装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

谢谢您的帮助。

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

您可以按照以下方式进行操作(通过server.rb配方中的OpsCode从MySQL中获取并简化):

执行“mysql安装权限”do
命令“mysql-u root-p{node['mysql']['server\u root\u password']}
您可以自行决定如何存储mysql路径、用户名和密码。 一般的想法是在.sql文件中定义MySQL命令(保存在烹饪书的模板或文件目录中),然后使用普通的MySQL命令运行它


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

谢谢你,我希望今天下午能回到工作流程的这一方面,让你随时了解结果。我把你所做的一切都记录在我创建的MySQL cookbook->recipes->setup.rb文件中。然后我添加了执行代码。在这之后,我在vagrant文件中更新了我的chef,如下所示:chef.add_recipe“mysql::setup”很好。很乐意帮忙。几周前,我在这个问题上遇到了麻烦……幸运的是,我遇到了MySQL cookbook使用的方法。
execute "mysql-install-privileges" do
  command "mysql -u root -p#{node['mysql']['server_root_password']} < /vagrant/command.sql"      
end