windows+CygwinでChef - 4.ChefでMysqlインストール編
前回は、PHPのインストールを行いながら、ファイル操作のリソースや、notifiesオプションについて学びました。
さて、今回もLAMP環境の構築を行いながら、新しいリソースを覚えていきたいと思います。
LAMPもいよいよラストです!Mysqlのインストールを行い、ユーザーの管理を行いたいと思います。
Windos+Chef入門目次を作成しました!
参考にしたサイト
Chef SoloでVagrant上にMySQLをインストールする - 5次元のカオス
chef で mysql のユーザやデータベースを管理する - Hack like a rolling stone
chefで作るmysql - Qiita
Mysqlのセットアップ
まずは、Mysqlをインストールして、my.cnfを修正した後、
起動する所までを行いたいと思います。
これは前回までに行ってきている事なので、詳細は省いていきます。
まず、recipeに以下のように追記しました。
#mysqlのインストール package "mysql-server" do action :install end #mysqlの実行 service "mysqld" do supports :status => true, :restart => true, :reload => :true action [ :enable, :restart ] end
実行結果は以下の通りです。
$ knife solo cook chefssh Running Chef on chefssh... ・・・中略・・・ * package[mysql-server] action install - install version 5.1.73-3.el6_5 of package mysql-server * service[mysqld] action enable - enable service service[mysqld] * service[mysqld] action restart - restart service service[mysqld] Running handlers: Running handlers complete
my.cnfの修正をしたいので、今回作成されたmy.cnfファイルをコピーして
cookbook_fileで上書きしたい為、再度recipeを修正したいと思います。
cookbook_file "/etc/my.cnf" do mode 0644 end
再度、cookします。
$ knife solo cook chefssh Running Chef on chefssh... ・・・中略・・・ * cookbook_file[/etc/my.cnf] action create - update content in file /etc/my.cnf from 3ba593 to f281d6 ・・・中略 * service[mysqld] action enable (up to date) * service[mysqld] action restart - restart service service[mysqld]
続いて、mysqlが正常に動作しているか、vagrantに入って確認しておきたいと思います。
$ vagrant ssh Last login: Sun Jun 1 03:02:50 2014 from 10.0.2.2 Welcome to your Vagrant-built virtual machine. [vagrant@localhost ~]$ mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.1.73 Source distribution Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
何のハマりも無くいけました!
さて、ここからですが、Mysqlを作成して、良くやる作業のユーザー作成もchefでやれないか?
って思って、色々模索しはじめました。。。
ChefでMysqlのユーザーを管理
まずは、Mysqlのユーザーを作成したいと思います。
色々調べたんですが、公開しているレシピを流用するのが一番みたいなのですが、
それはまた別の機会でやりたいので、今回はbashリソースを用いて、
実行するようにしたいと思います。
bashリソースは、スクリプトを実行するためのリソースになります。
bashコマンドやコードを実行し、その実行する権限なども指定する事が出来ます。
bash以外にも、「execute」「script」と似たようなリソースもあります。
今回は、bashコマンドを使用しますが、特にどれを使用しても変わりはないようです。
myuser_o = "aimtaku" mypass_o = "devdev" bash "create_mysql_user" do not_if "ls /root/.created_mysql_users" user "root" code <<-EOL mysql -u root << EOF grant all privileges on *.* to #{myuser_o}@'%' identified by "#{mypass_o}"; grant all privileges on *.* to #{myuser_o}@'10.0.0.%' identified by "#{mypass_o}"; grant all privileges on *.* to #{myuser_o}@'localhost' identified by "#{mypass_o}"; EOF EOL end #登録判定用 bash "create_pfile" do not_if 'ls /root/.created_mysql_users' user "root" code <<-EOL echo "#{mypass_o}" > /root/.created_mysql_users chown 400 /root/.created_mysql_users EOL end
そして、cookします。
$ knife solo cook chefssh Running Chef on chefssh... ・・・中略・・・ * bash[create_mysql_user] action run - execute "bash" "/tmp/chef-script20140601-6968-j10nok" * bash[create_pfile] action run - execute "bash" "/tmp/chef-script20140601-6968-1emhujd" Running handlers: Running handlers complete
うまくいったようです。。。!
正常に追加出来ているか確認しておきたいと思います。
[vagrant@localhost ~]$ mysql -u root mysql> SELECT host,user FROM mysql.user; +-----------------------+---------+
host | user |
% | aimtaku |
10.0.0.% | aimtaku |
127.0.0.1 | root |
localhost | |
localhost | aimtaku |
localhost | root |
localhost.localdomain | |
localhost.localdomain | root |
そして、判定用のファイルを作成しておいたので、初回しか実行されません。
もし、更新タイプにしたければ、別のcookbook_fileリソースをトリガーにしてもいいかも知れませんね!
さて、4回に分けてChefでLAMP環境構築を行ってきました。
ちょっと入門編をやっただけでも便利なのが、わかってきました。
LAMP環境構築は、この今回の記事で完了としたいと思います。
ですが、次回以降もChefについて、もうちょっと書いていこうと思います。
まだまだ、公開リソースの使い方や、もっと便利な方法等、使っていきたいと思います。
使用環境
- ホストOS: Windows7 x64
- Cygwin : Cygwin64
- VirtualBox: 4.3.10
- Vagrant: 1.5.2
- Chef : 11.12.4
- knife-solo:0.4.1