Chef MySql Cookbook:MySql在重新启动后不会启动
我正在尝试在vagrant中安装mysql配方。我用烹饪书 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 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