Knife-ZeroでCookbookの作成/実行/削除&git cloneコマンドでCookbookの取得:サーバー管理者のためのChef超入門(2)(1/2 ページ)
エンタープライズ向け機能が充実してきた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の作成/実行/削除
まずは、Cookbook開発環境にSSHでログインし、作業ディレクトリである「chef-repo」に移動します。
$ cd ~/chef-repo
Cookbookの作成
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の実行
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の記法の理解が不可欠ですので、次回以降これらの説明をしつつ、より詳細な処理を実装できるよう解説していきます。
先ほどのCookbookをrun_listから削除
次ページでは、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.
関連記事
- 環境構築自動化の手順と評価検証、Puppetの基礎知識
サーバー構築の自動化で利用される技術、自動化ツールとして「Kickstart」「Puppet」を紹介し、構築から運用まで、システムライフサイクル全体にわたる運用管理の自動化についても解説する連載。 - OpenStackで激変するシステム開発・運用 “抽象化”が実現する「究極の自動化」とは
前回はOpenStackの活用ポイントと、今後のシステム開発・運用に与える影響――特に自動化にフォーカスして紹介した。今回は日本OpenStackユーザ会 会長の中島倫明氏が、「OpenStackによる自動化の仕組みと実施法」を分かりやすく解説する。 - PowerShell Desired State Configuration(DSC)とは(前編)
Windows OSの設定や構成を変更する場合、GUIの管理ツールを使うのが一般的である。だが台数が多かったり、構成変更や以前の構成への復旧などが頻繁だったりするとGUIでは非常に面倒だし、間違いもしやすくなる。こんな場合はPowerShell DSCを使ってインフラ構築作業を自動化するとよい。 - アプリ開発者もインフラ管理者も知っておきたいDockerの基礎知識
オープンソースのコンテナー管理ソフトウェアDockerについて主な機能と特徴、使用技術、動作環境などを紹介。ハイパーバイザー型とコンテナー型の仮想化の違いも解説します。