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」には、仮想マシンを起動するための独自のレシピが含まれています。ナイフを使用してフォルダーを初期化し、me​​tadata.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

VM に「vagrant ssh」すると、apache、php、mysql がインストールされていることがわかります。MySQL には、テスト スキーマと情報スキーマ以外のデータベースはありません。「mysql」を使用して mysql クライアントに入ることができますが、データベースまたはユーザーを作成する権限がありません。sudo mysql も機能しません。

次の 2 つのことを調べたいと思います。

  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 に答える