Program LOG

勉強した内容をまとめ中。。。間違ってたら教えて。。。

windows+CygwinでChef - 4.ChefでMysqlインストール編

前回は、PHPのインストールを行いながら、ファイル操作のリソースや、notifiesオプションについて学びました。
さて、今回もLAMP環境の構築を行いながら、新しいリソースを覚えていきたいと思います。
LAMPもいよいよラストです!Mysqlのインストールを行い、ユーザーの管理を行いたいと思います。

Windos+Chef入門目次を作成しました!

windows+CygwinでChef - 目次 - Program LOG

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
+-----------------------+---------+ 8 rows in set (0.00 sec)

そして、判定用のファイルを作成しておいたので、初回しか実行されません。
もし、更新タイプにしたければ、別のcookbook_fileリソースをトリガーにしてもいいかも知れませんね!

さて、4回に分けてChefでLAMP環境構築を行ってきました。
ちょっと入門編をやっただけでも便利なのが、わかってきました。
LAMP環境構築は、この今回の記事で完了としたいと思います。
ですが、次回以降もChefについて、もうちょっと書いていこうと思います。
まだまだ、公開リソースの使い方や、もっと便利な方法等、使っていきたいと思います。

使用環境