在OS X上使用Vagrant / chef-solo设置VM时会发生MySQL问题

时间:2013-09-12 00:58:48

标签: mysql macos vagrant chef-solo

我在运行Mountain Lion的MBP笔记本电脑上安装了VirtualBox,Vagrant和chef-solo。我从opscode下载了食谱,并且'流浪汉'正在工作。 VM成功创建,我得到一个大多数工作LAMP堆栈。

我遇到的困难是创建一个数据库和用户来访问数据库。

我做了什么: 创建了一个包含Vagrantfile和目录cookbook的开发文件夹。在我的食谱中

README.md
apache2
apt
aws
build-essential
database
hnnapp
mysql
openssl
php
postgresql
xfs
xml

'hnnapp'包含我自己的启动虚拟机的方法。我用刀初始化文件夹,然后编辑metadata.rb以包含

depends "apt"
depends "apache2"
depends "database"
depends "mysql"
depends "xml"
depends "openssl"
depends "php"
depends "build-essential"

并在recipes / default.rb中包含

include_recipe "apt"
include_recipe "apache2"
include_recipe "xml"
include_recipe "openssl"
include_recipe "database::mysql"
include_recipe "mysql"
include_recipe "mysql::client"
include_recipe "mysql::server"
include_recipe "mysql::ruby"
include_recipe "php"
include_recipe "php::module_mysql"
include_recipe "apache2::mod_php5"
include_recipe "apache2::mod_rewrite"

apache_site "default" do
    enable true
end

mysql_database node['hnnapp']['database'] do
    connection  ({:host => 'localhost', :username => 'root', :password => node['mysql']['server_root_password']})
    action :create
end

mysql_database_user node['hnnapp']['db_username'] do
    connection  ({:host => 'localhost', :username => 'root', :password => node['mysql']['server_root_password']})
    password node['hnnapp']['db_password']
    database_name node['hnnapp']['database']
    privileges [:select, :update, :insert, :cretae, :delete]
    action :create
end

最后,我的Vagrantfile包括

config.vm.provision :chef_solo do |chef|
    chef.add_recipe "hnnapp"
    chef.json = {
      "hnnapp" => {
        "db_password" => "test", 
        "db_username" => "testuser",
        "database" => 'testdatabase'
      },
      "mysql" => {
        "server_root_password" => "098f6bcd4621d373cade4e832627b4f6",
        "server_debian_password" => "098f6bcd4621d373cade4e832627b4f6",
        "server_repl_password" => "098f6bcd4621d373cade4e832627b4f6"
      }
    }
  end

当我'流浪汉ssh'进入VM时,我看到apache,php和mysql已安装。除了测试和信息模式之外,MySQL没有其他数据库。我可以使用'mysql'进入mysql客户端,但我没有权限创建任何数据库或用户。 sudo mysql也不起作用。

我想找出两件事:

  1. 我是以正确的方式来做这件事的吗?将正确的命令放在正确的文件中?
  2. 我的剧本中有什么错误。

1 个答案:

答案 0 :(得分:0)

如果您添加:grant to mysql_database_user块中的操作会有什么不同吗?

action [:create, :grant]

我发现本教程非常有助于使用用户和权限配置mysql,虽然我仍然对chef-solo的目录结构有点困惑。

http://misheska.com/blog/2013/06/23/getting-started-writing-chef-cookbooks-the-berkshelf-way-part2/