0

我在运行 Mountain Lion 的 MBP 笔记本电脑上安装了 VirtualBox、Vagrant 和 chef-solo。我已经从 opscode 下载了食谱,并且“vagrant up”正在工作。VM 已成功创建,我得到了一个主要工作的 LAMP 堆栈。

我被困的地方是创建一个数据库和用户来访问数据库。

我所做的:创建了一个包含 Vagrantfile 和目录说明书的开发文件夹。在我的食谱中

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

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

我想了解两件事:

  1. 我会以正确的方式解决这个问题吗?将正确的命令放在正确的文件中?
  2. 我的脚本有什么错误。
4

1 回答 1

0

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

action [:create, :grant]

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

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

于 2013-09-12T08:54:26.200 回答