matetsuだもんでスマートフォン用の表示で見るmatetsuだもんでこの広告は、90日以上更新していないブログに表示しています。2012-02-12ChefでのMySQLパスワードの扱いChefopscodeのリポジトリにあるMySQLのcookbookでは、rootユーザやレプリケーション用のユーザのパスワードをランダムに生成して設定している。特徴このランダムという点をカバーするべく、うまい仕組みが組み込まれている。secure_passwordといった形で、attributeに設定されていない場合はランダムに生成するという事をして、2度目以降も同じパスワードとなるようになっている。普通であれば、recipe(run_list)の実行がすべて完了するまではattributeがサーバに保存されないんだけど、このメソッドを使うことで、即時に保存される。これで、万が一rootのパスワードが設定されたあとのどこかでコケても、同じパスワードで設定を続けることができる(上のコードにあるようにchef-soloのときは実行されないけど)。masterは途中でコケたけど、スレーブはそこで設定された(であろう)であろうパスワードを使ってセットアップだけは続けることができる。これはよく考えられた仕組みですよね。Bagただ、ランダムであれば推測されづらくていいかもしれないけど、好きなパスワードを設定したいし、アプリからのアクセスを考えるとすべてのサーバでアプリ用ユーザは共通にしておきたいといった要望もある。提供されているrecipeのままだったりattributeにそのまま設定してしまうと、平文のパスワードがattributeの一覧から確認できてしまう。Bagという平文で保存したくないデータをChefに保持しておくための機構。使うために必要なのはencrepted_data_bag_secretと呼ばれる共通鍵だけ。※やってることはOpscodeのサイトに書かれていることと全く同じです。Bags利用する各クライアントと共有する。共有方法は初回セットアップであれば、knifeコマンドのbootstrapで指定してあげれば良い。bagにmysqlという項目を作成します。bagのIDとなり、これは暗号化されません。"your_password"}※EDITOR環境変数を設定していないとErrorになります。bagを確認してみましょう。"e/p+8WJYVHY9fHcEgAAReg==\n"}userとpassが暗号化されて保存されています。復号化して表示してみます。"your_password"}先程入力したものが表示されました。bagの値を呼ぶには、以下のような感じにしてあげます。やってしまうと、せっかく暗号化して保存されているユーザ名とパスワードが平文でattributeに登録されてしまいますので、やめたほうがいいと思います。bagに保存されているので、次回以降に変わるという事も無いですしね。recipe内で定義したローカル変数のままだとテンプレートに渡せないので、templateリソースの中で以下のように定義すればテンプレート内で呼び出せる。)endこれでめでたくattributeに平文のパスワードが登録されることなく、自分の好みのパスワードが設定出来ました。bagの共通鍵をセットアップするサーバに配置することができる。以下のようにbootstrapファイルに書く。使用される値などは、knifeを実行するノードのknife.rbに設定されているものが利用される。そのため、encrypted_data_bag_secretファイルの場所もknife.rbに指定しておく必要がある。bagを復号化できる。recipe内のローカル変数をテンプレートで使うための記述を追記。試してみたお久しぶりです。#1に参加してきたので、そのメモ参加してきました。思い切りそのままメモ転載。#jawsug_bgnrそう、今日は肉の日。〜Outgoing篇〜はてなブログをはじめよう!matetsuさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。