エンタープライズ向け機能が充実してきたChefを使って高速かつ精度の高いサーバーインフラを構築/管理する方法について解説する連載。今回はKnife-ZeroでCookbookを操作する方法やgit cloneコマンドでCookbookを取得する方法、Gitを使う利点などについて解説します。
エンタープライズ向け機能が充実してきたChefを使って高速かつ精度の高いサーバーインフラを構築/管理する方法について解説する本連載。前回となる連載第1回の「エンタープライズでもInfrastructure as Code――Chef 12/Chef-Zero/Knife-Zeroの基礎知識とインストール」では、Chefのインストールまで完了しました。
今回からは実際にCookbookを作ってみて、さらにKnife-Zeroを使ってCookbookをノードに対して実行してみましょう。前回に引き続き、以下の環境を使用します。
まずは、Cookbook開発環境にSSHでログインし、作業ディレクトリである「chef-repo」に移動します。
$ cd ~/chef-repo
Cookbookのひな型を作成します。
$ knife cookbook create httpd -o ./cookbooks/
Cookbookは複数のディレクトリ/ファイルから構成されていますが、knifeコマンドでCookbookを作成すると、コマンド側でChefのCookbookの作法に則ったひな型を作成してくれるので、作業者側は構成を意識することなく作業を進められます。
なお今回は、「まずChefを触る」ことを目的としているので、内部構造などの詳細な説明は行いませんが、Chefを活用していくためにはChefを構成する要素の理解は不可欠ですので、以降の連載で詳細に解説します。
本来のChefの作法では、個人で作成したCookbookは「chef-repo/site-cookbooks」に格納し、Chef社が公開しているCookbookや第三者が作成したCookbookを「chef-repo/cookbooks」に格納することが推奨されています。
しかし2015年3月現在、Chef-Zeroの仕様で、「site-cookbooks」配下を参照しないため、個人作成のCookbookを「chef-repo/cookbooks」に作成するような手順としています。
簡単なRecipeを書いてみます。
package “httpd” do action :install end
「knife zero bootstrap」コマンドでノードに対してChefを実行する前準備をします。
$ knife zero bootstrap [ノードのIPアドレス] --ssh-password {SSHパスワード} --sudo
この処理には時間がかかります。
「knife zero bootstrap」が完了すると、「node list」にbootstrapを行ったノードが追加されます。
$ knife node list [bootstrapしたノードのhostname]
nodeに実行するCookbookを追加します。
$ knife node run_list add {ノードのhostname} httpd {ノードのhostname}: run_list: recipe[httpd]
Cookbookを実行します。
$ knife zero chef_client 'name: {ノードのhostname}' --attribute ipaddress --ssh-password {SSHパスワード} ?sudo
xxx.xxx.xxx.xxx Starting Chef Client, version 12.0.3 xxx.xxx.xxx.xxx resolving cookbooks for run list: ["httpd"] xxx.xxx.xxx.xxx Synchronizing Cookbooks: xxx.xxx.xxx.xxx - httpd xxx.xxx.xxx.xxx Compiling Cookbooks... xxx.xxx.xxx.xxx Converging 1 resources xxx.xxx.xxx.xxx Recipe: httpd::default xxx.xxx.xxx.xxx * yum_package[httpd] action install xxx.xxx.xxx.xxx - install version 2.2.15-39.el6.centos of package httpd xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx Running handlers: xxx.xxx.xxx.xxx Running handlers complete xxx.xxx.xxx.xxx Chef Client finished, 1/1 resources updated in 25.242700967 seconds
処理が完了すると、ノードにApache(httpd)がインストールされているはずです。SSHでログインして確認してみましょう。
なお、実際の利用ケースにおいては、パッケージをインストールしただけで終わるケースはほとんどないと思います。インストール後にconfigを書き換え、サービスをstartし、自動起動設定を有効にするなどの手順も必要になってきます。
この点については、Chefを構成する要素やRecipeの記法の理解が不可欠ですので、次回以降これらの説明をしつつ、より詳細な処理を実装できるよう解説していきます。
次ページでは、Chefから少々離れてGitの話に入りますが、その前に先ほど実行した「httpd」のCookbookをrun_listから削除しておきます。
$ cd ~/chef-repo $ knife node run_list remove {ノードのhostname} recipe[httpd] {ノードのhostname}: run_list: $ cd ~/chef-repo $ knife node run_list add {ノードのhostname} yum-epel {ノードのhostname}: run_list: recipe[yum-epel]
Copyright © ITmedia, Inc. All Rights Reserved.