Chef MySql Cookbook:MySql在重新启动后不会启动

Chef MySql Cookbook:MySql在重新启动后不会启动,mysql,ubuntu,chef-infra,vagrant,Mysql,Ubuntu,Chef Infra,Vagrant,我正在尝试在vagrant中安装mysql配方。我用烹饪书 MySql服务在vagrant up后启动,但在重新启动后,我无法执行vagrant provision或vagrant up,因为服务器无法启动 我已经意识到,流浪汉擦拭/var/run目录;它创建mysqld目录(用于套接字),但不创建mysql(用于pid文件)。MySql找不到目录,无法创建pid文件 我怎样才能让它工作?为什么Vagrant创建mysqld,而不是mysql 我还尝试了不同的盒子(precise32,Cloud

我正在尝试在vagrant中安装mysql配方。我用烹饪书

MySql服务在
vagrant up
后启动,但在重新启动后,我无法执行
vagrant provision
vagrant up
,因为服务器无法启动

我已经意识到,流浪汉擦拭
/var/run
目录;它创建mysqld目录(用于套接字),但不创建mysql(用于pid文件)。MySql找不到目录,无法创建pid文件

我怎样才能让它工作?为什么Vagrant创建mysqld,而不是mysql

我还尝试了不同的盒子(precise32,CloudDaily precise64)

方框: 流浪汉档案:

Vagrant.configure("2") do |config| config.vm.box = "precise32" config.omnibus.chef_version = :latest config.vm.box_url = "http://files.vagrantup.com/precise32.box" config.vm.network :forwarded_port, guest: 8000, host: 8080 config.vm.provider :virtualbox do |vb| vb.gui = true end config.vm.provision :chef_solo do |chef| chef.cookbooks_path = "./chef-repo/cookbooks" chef.add_recipe "apt" chef.add_recipe "mysql::server" chef.json = { "mysql" => { "server_root_password" => "password", "server_repl_password" => "password", "server_debian_password" => "password" } } end end Vagrant.configure(“2”)do | config| config.vm.box=“precise32” config.omnibus.chef_版本=:最新版本 config.vm.box_url=”http://files.vagrantup.com/precise32.box" config.vm.network:转发_端口,来宾:8000,主机:8080 config.vm.provider:virtualbox do | vb| vb.gui=true 结束 config.vm.provision:chef_solo do|chef| chef.cookbooks_path=“/chef repo/cookbooks” 厨师长添加食谱“apt” chef.add_配方“mysql::server” chef.json={ “mysql”=>{ “服务器\u根\u密码”=>“密码”, “服务器回复密码”=>“密码”, “服务器\u debian\u密码”=>“密码” } } 结束 结束
问题出在MySql cookbook中:不知何故,/var/run/mysqld没有被删除,所以解决方法是:更改
/libraries/provider\u MySql\u service\u ubuntu.rb

pid_file = '/var/run/mysql/mysql.pid' 


我在github上也提出了一个问题,因此将来可以在master中修复这个bug,eviltnan是正确的。这里是首次运行ubuntu 12.04的脚本解决方案

ruby_block "ensure mysql server starts on reboot" do
  block do
    fe = Chef::Util::FileEdit.new("/etc/mysql/my.cnf")
    fe.search_file_replace_line(/pid-file/, 'pid-file                       = /var/run/mysqld/mysql.pid')
    Chef::Log.warn("Edited /etc/mysql/my.cnf to re-enable start on reboot.") if fe.write_file
  end
end

/var/run
是指向
/run
的符号链接,它是内存文件系统中的
tmpfs
。它无法在重新启动后生存。我认为这与流浪汉无关。简单地重新启动虚拟机,你就会失去其中的一切。这是正确的。我已更改了标题。以下是针对此错误提交的问题:
ruby_block "ensure mysql server starts on reboot" do
  block do
    fe = Chef::Util::FileEdit.new("/etc/mysql/my.cnf")
    fe.search_file_replace_line(/pid-file/, 'pid-file                       = /var/run/mysqld/mysql.pid')
    Chef::Log.warn("Edited /etc/mysql/my.cnf to re-enable start on reboot.") if fe.write_file
  end
end