OSSのサーバ構築自動化ツール、4製品徹底検証 2016年版:実際に検証済み!OSS徹底比較(3)サーバ構築自動化【前編】(5/9 ページ)
今回は、サーバ構築・運用自動化ソフトの中でも特に利用者の多い、「Chef」「Ansible」「Puppet」「Itamae」の4製品をピックアップ。「各ソフトの実行環境の構築手順」「OSSのブログ/CMS基盤であるWordPressの構築」を通じて、その違いを探る。
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.