opscodeのリポジトリにあるMySQLのcookbookでは、rootユーザやレプリケーション用のユーザのパスワードをランダムに生成して設定している。 opscode の recipe の特徴 このランダムという点をカバーするべく、うまい仕組みが組み込まれている。 パスワードを設定するところは node.set_unless['mysql']['server_root_password'] = secure_password といった形で、attributeに設定されていない場合はランダムに生成するという事をして、2度目以降も同じパスワードとなるようになっている。 2回目以降も同じパスワードを保証するために、もうひとつの技が unless Chef::Config[:solo] ruby_block "save node data" do block do node.save end