連載
» 2016年06月23日 05時00分 公開

実際に検証済み!OSS徹底比較(3)サーバ構築自動化【前編】:OSSのサーバ構築自動化ツール、4製品徹底検証 2016年版 (5/9)

[森元敏雄,TIS]

Sample cookbookを使ってみる

 WordPressのインストールを、Chef Supermarketで公開されているcookbookを利用して行うこともできる。Chef Softwareが開発したWordPress用のcookbookがGitHub上で公開されている。このcookbookを利用してインストールを行ってみた。その手順は以下の通りだ。

1.cookbookのダウンロードとインストール

 3ページで紹介したインストール手順「9.nodeにChef-soloをインストール」からの続きとなる。以下のコマンドを実行し、cookbookのダウンロードとインストールを行うこともできる。ただ、依存関係のあるcookbookを全て手動で選択して、ダウンロードする必要があり、あまりに煩雑で推奨しない。

$ cd ~/chef-repo/cookbooks
$ knife cookbook site download wordpress
$ knife cookbook site download apache2 
$ knife cookbook site download build-essential
$ knife cookbook site download seven_zip
$ knife cookbook site download windows
$ knife cookbook site download chef_handler
$ knife cookbook site download database
$ knife cookbook site download postgresql
$ knife cookbook site download apt
$ knife cookbook site download openssl
$ knife cookbook site download chef-sugar
$ knife cookbook site download iis
$ knife cookbook site download mysql
$ knife cookbook site download smf
$ knife cookbook site download rbac
$ knife cookbook site download yum-mysql-community
$ knife cookbook site download yum
$ knife cookbook site download mysql2_chef_gem
$ knife cookbook site download mariadb
$ knife cookbook site download yum-epel
$ knife cookbook site download nginx
$ knife cookbook site download bluepill
$ knife cookbook site download rsyslog
$ knife cookbook site download compat_resource
$ knife cookbook site download ohai
$ knife cookbook site download runit
$ knife cookbook site download packagecloud
$ knife cookbook site download php
$ knife cookbook site download xml
$ knife cookbook site download php-fpm
$ knife cookbook site download selinux
$ knife cookbook site download tar
$ tar zxvf *.tar.gz

 実際には~/chef-repo以下をGitのレポジトリにしてgitコマンドを利用してインストールするのが一般的だ。Gitを利用する方法の場合、依存関係はGit側で判断してくれるため、コマンドもシンプルである。手順は以下の通りだ。

$ sudo yum install -y git
$ cd chef-repo/
$ git --bare init
$ git init
$ git add -f .
$ git config --global user.email "root@tissvv097"
$ git commit -m "first commit"
$ knife cookbook site install wordpress

 インストールしたWordPressのcookbookのファイル、フォルダ構成は以下である。

$ tree ./chef-repo/cookbooks/wordpress
./chef-repo/cookbooks/wordpress
├── CHANGELOG.md
├── README.md
├── attributes
│   └── default.rb
├── libraries
│   └── helpers.rb
├── metadata.json
├── recipes
│   ├── apache.rb
│   ├── app.rb
│   ├── database.rb
│   ├── default.rb
│   ├── languages.rb
│   └── nginx.rb
└── templates
    └── default
        ├── nginx.conf.erb
        ├── wordpress.conf.erb
        └── wp-config.php.erb

2.node定義ファイル(./chef-repo/node/[hostname].json)の編集

 node定義ファイルを編集し、cookbook名とパラメータを設定する。使用できるパラメータはdefaultパラメータの定義ファイル(./chef-repo/site-cookbooks/wordpress/attributes/default.rb)を参照して判断する。

$ vi ~/chef-repo/nodes/tissvv096.json
{
  "run_list": [
    "wordpress"
  ],
  "wordpress" : {
    "db" : {
      "version"       : "latest",
      "root_password" : "FM11AD2+",
      "name"          : "WordPress",
      "user"          : "wp_admin",
      "pass"          : "HB-F1XDJ"
    }
  }
}

3.WordPressサーバ構築のcookbookを実行

$ cd ~/chef-repo
$ knife solo cook -i ~/.ssh/id_rsa.pem tissvv096

4.httpdのポートが解放されていないため、nodeサーバにログインしてfirewall-cmdでポートの解放を実施

$ ssh -i ~/.ssh/id_rsa.pem root@tissvv096
# firewall-cmd --add-service=http --zone=public
success
# firewall-cmd --reload
success

 以上の作業で構築は完了で、あとはブラウザからの初期設定を行うだけだ。他にも多くのcookbookが公開されており、テスト済の構築手順で簡単にサーバを構築できる。ただ、非常に汎用性が高く作られているため、必要としないcookbookも大量にインストールされてしまう欠点もある。カスタマイズも自由に行えないため、本番で利用する場合は、Chef Supermarketのcookbookは参考として利用し、cookbookは自作した方が良いと考えられる。

※追記:2016年6月13日に確認を行ったのだが、cookbookの依存関係からか、以下のエラーが発生し、動作しなかった。

Missing Cookbooks:
------------------
Could not satisfy version constraints for: mysql2_chef_gem

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。