Apache、PHP、MySQLパッケージのインストールで見るChefのRecipeの基本的な書き方:サーバー管理者のためのChef超入門(4)(1/2 ページ)
エンタープライズ向け機能が充実してきたChefを使って高速かつ精度の高いサーバーインフラを構築/管理する方法について解説する連載。今回は、外部Cookbookを利用したリポジトリ設定や、yumによってApache、PHP、MySQLパッケージをインストールするRecipeの書き方と実行の仕方などについて解説します。
外部Cookbookを利用したリポジトリ設定&yumによってパッケージをインストールするRecipeを実行
前回の「WordPress構築で学ぶ、サーバー構築作業をChefのCookbookとして記述するためのポイント」では手動構築によるWordPressのインストール手順や、Cookbookの構成、WordPress構築をChefのCookbookにしていくための方針について解説しました。今回はChefのCookbookを作成しながら、Chefの構成要素を理解していきましょう。
まず、前回解説した「構築環境の前提条件」と「Cookbookの作成方針」を再度記載しておきます。
WordPress構築環境の前提条件
- OSはCentOS 6.6を使用
- ApacheとMySQLは同一サーバー内(「ノード」)にインストールする
- MySQLはRemiリポジトリを使用してインストールする
- 「wp.example.com」というバーチャルホストを作成し、ホスト名を「wp.example.com」、ドキュメントルートを「/var/www/wp.example.com/wordpress」とする
- エラーログとカスタムログのファイル名を以下の通りとする
- wp.example.com-error_log
- wp.example.com-access_log
- MySQLにwordpressユーザーとwordpressデータベースを作成し、ユーザーにデータベースへのアクセス権を付与する
WordPress構築Cookbookの作成方針
【1】リポジトリ設定→外部Cookbookを利用
【2】Apache、PHP、MySQLのインストール→Resourceで定義
【3】WordPressのダウンロードと解凍→Resourceで定義
【4】バーチャルホスト設定→Templateを使用
【5】WordPress用MySQL設定→Templateを使用
このうち今回は【1】と【2】について作業を進めていきます。
【1】外部Cookbookを利用したリポジトリ設定
外部(サードパーティ製)Cookbookとして、EPELやRemiのリポジトリをインストールできるCookbookが公開されているので、そちらを使用します。
最初に「yum-epel」「yum-remi」のCookbookをインストールします。
$ sudo knife cookbook site install yum-epel $ sudo knife cookbook site install yum-remi
ノードにKnife-Zeroを使用してChef-Zeroをセットアップします。
$ sudo bundle exec knife zero bootstrap node01 -x <ユーザー名> --sudo -P <パスワード> Connecting to node01 node01 Installing Chef Client... node01 --2015-05-11 22:58:13-- https://www.opscode.com/chef/install.sh node01 Resolving www.opscode.com... 166.78.227.233 node01 Connecting to www.opscode.com|166.78.227.233|:443... connected. node01 HTTP request sent, awaiting response... 200 OK <<<中略>>> node01 Preparing... ########################################### [100%] node01 1:chef ########################################### [100%] node01 Thank you for installing Chef! node01 Starting first Chef Client run... node01 Starting Chef Client, version 12.3.0 <<<中略>>> node01 Running handlers: node01 Running handlers complete node01 Chef Client finished, 0/0 resources updated in 1.63139453 seconds
セットアップが完了したら、ノードのrun_listに対して実行するCookbookを追加していきます。
今回はyum-epelとyum-remiの2つを実行させるために、「knife node run_list add」コマンドを2回実行します。
$ sudo knife node run_list add node01 'recipe[yum-epel]' node01: run_list: recipe[yum-epel] $ sudo knife node run_list add node01 'recipe[yum-remi]' node01: run_list: recipe[yum-epel] recipe[yum-remi]
ノードに対してrun_listに登録したCookbookを実行します。
$ sudo bundle exec knife zero chef_client 'name:node01' -x <ユーザー名> -P <パスワード> --sudo node01 Starting Chef Client, version 12.3.0 node01 resolving cookbooks for run list: ["yum-epel", "yum-remi"] node01 Synchronizing Cookbooks: node01 - yum-epel node01 - yum-remi <<<中略>>> node01 Recipe: yum-epel::default node01 * yum_repository[epel] action create node01 * template[/etc/yum.repos.d/epel.repo] action create <<<中略>>> node01 Recipe: yum-remi::default node01 * yum_repository[remi] action create node01 * template[/etc/yum.repos.d/remi.repo] action create <<<中略>>> node01 Running handlers: node01 Running handlers complete node01 Chef Client finished, **/** resources updated in **.******** seconds
インストールが成功したら、続いてパッケージのインストールを行います。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 環境構築自動化の手順と評価検証、Puppetの基礎知識
サーバー構築の自動化で利用される技術、自動化ツールとして「Kickstart」「Puppet」を紹介し、構築から運用まで、システムライフサイクル全体にわたる運用管理の自動化についても解説する連載。 - OpenStackで激変するシステム開発・運用 “抽象化”が実現する「究極の自動化」とは
前回はOpenStackの活用ポイントと、今後のシステム開発・運用に与える影響――特に自動化にフォーカスして紹介した。今回は日本OpenStackユーザ会 会長の中島倫明氏が、「OpenStackによる自動化の仕組みと実施法」を分かりやすく解説する。 - PowerShell Desired State Configuration(DSC)とは(前編)
Windows OSの設定や構成を変更する場合、GUIの管理ツールを使うのが一般的である。だが台数が多かったり、構成変更や以前の構成への復旧などが頻繁だったりするとGUIでは非常に面倒だし、間違いもしやすくなる。こんな場合はPowerShell DSCを使ってインフラ構築作業を自動化するとよい。 - アプリ開発者もインフラ管理者も知っておきたいDockerの基礎知識
オープンソースのコンテナー管理ソフトウェアDockerについて主な機能と特徴、使用技術、動作環境などを紹介。ハイパーバイザー型とコンテナー型の仮想化の違いも解説します。