LeTung

2015.06.26

5分でChef Cookbookを作成する

はじめに

ソフトウェア開発には特別なソフトウェアのインストールと設定が必要になることがよくあります。チームの開発環境の統一はどのように行っているでしょうか?

解決方法はいろいろがありますが、今回はVagrantとchef soloを紹介いたします。Vagrantchef soloを使用すると、仮想マシンの立ち上げ、OSや各種ソフトウェアのインストール、アプリケーションのビルドなどを自動化できます。

Vagrantとは?

仮想マシンを作るためのツールです。

インストールはこちらを参照してください。

ーVagrantで基本的なコマンド:

vagrant up
->仮想マシンを起動します。
起動した後でプロビジョンをしたい場合は「vagrant up –provision」が使用できます。

✳︎サーバーを選定したりOSやソフトウェアをインストールするなどして、サーバーがサービスを提供できるようにするまでの一連の作業をプロビジョニングと言います。

vagrant provision
->Vagrantが管理する仮想マシンに対して、設定されたprovisionersを実行します。
chef soloを使う場合は仮想マシンにクックブックを実施します。

vagrant ssh
->仮想マシンにsshします。

vagrant reload
->仮想マシンをリロードします。
リロードしたあとでプロピジョンをしたい場合は「vagrant reload –provision」を使えます。

vagrant halt
->仮想マシンをシャットダウンします。

chef soloとは?

各種設定作業を Ruby のコードで自動化するツールです。

インストール:

これから環境設定を共有するためのクックブックの作り方を紹介いたします。
それでは自分のクックブックを作って見ましょう。knife cookbookコマンドを使用して、クックブックに必要なファイルを作成します。

このコマンドを実施するとcookbooksフォルダーに必要なファイルが作成されます。site-cookbooksフォルダーに作成したい場合は以下のパラメーターを追加してください。

作成されたcookbooks/my_cookbook(site-cookbooks/my_cookbook)の中身を確認します。

クックブックで色々な設定が出来ます。今回は例としてnginxのインストールと設定のクックブックの作り方を紹介いたします。
まずはrecipes/default.rbに以下のコードを記述します。

一番上の行はリソースのタイプ(package)とリソースの名前を指定します。
次はインストールアクションを指定します。
packageリソースを使用すると、以下のアクションが使用できます:
ー:install
ー:purge
ー:reconfig
ー:remove
ー:upgrade

ここまでの作業でnginxをインストールするクックブックの作成は終わりました。次はVagrantのprovisionを実施する時に作ったクックブックを適用します。Vagrantfileファイル(Vagrantの設定ファイル)を修正します。
Vagrantfile

以上で設定は終了です。Vagrantの仮想マシンを再起動してプロビジョンするとnginxが仮想マシンにインストールされます。

(起動していない場合は起動コマンドを使います:$vagrant up –provision)

よく使うクックブックリソース

クックブックでは色々なリソースを使用する事ができます。次に代表的なリソースを紹介します。

packageリソース:
例:wgetパッケージをインストールする

bashリソース:
例:コマンドコードを実施する

templateリソース:
例:テンプレートファイルを仮想マシンにコピーする

cookbook_fileリソース:
例:ファイルを仮想マシンにコピーする

rpm_packageリソース:
例:rpmファイルからインストールする (仮想マシンで実施すること:rpm -Uvh remi-release-6.rpm)

serviceリソース:
例: service nginx start

供給されるアクション:
:disable
:enable
:nothing
:reload
:start
:stop

最後に

以上、初めての方へchef soloとvagrantの基本的な概念と作り方を紹介いたしました。
vagrantとchef soloを使用して、開発環境を共有する際の参考にして頂ければ幸いです。

また、Chef Supermarketなどにchefのクックブックが多くアップされていますので、参考にしてみてはいかがでしょうか?
ぜひ皆さんも参考にして、自分の開発環境に適用してみてください。