itlifehack_01

構成管理という言葉を耳にしたことがあるだろうか? この言葉はシステムの企画から開発、運用から廃棄という一連のライフサイクルにおいて、ネットワークやハードウェアなどのインフラ、ソフトウェアや設計書などの変更の記録・管理をすることを指している。

この構成管理は、これまでシステム担当者により手作業で行われるケースがほとんどであった。システムは常時稼働しているため、それを管理するとなると、休む暇もなくなってしまう。作業確認でダブルチェックが必要となれば、最低2人以上のマンパワーを必要とする。さらに長時間勤務による疲労でヒューマンエラーによるミスが発生する懸念もある。

このように構成管理という作業は、様々な問題を抱えている。しかし、構成管理を行わずにシステム運用を続けて行くことはできないわけで、何らかの形でこうした様々な問題を解決する必要がある。そこでオープンソースの構成管理ツールとして「Chef」や「Puppet」等が登場し、注目を集めてきた。



2013年は、これまでになく技術者の間で、こうした構成管理ツールが話題になることが多かった。作業の自動化ができれば重労働から解放される、なおかつ人為的ミスを減らすことができるためだ。

本連載では、サーバ管理に携わる人たちに向け、最近話題のオープンソースの構成管理ツール「Ansible」について、その導入のメリットと導入方法について紹介していく。

■本連載の対象読者
本連載の対象と想定する読者は、サーバ管理に携わる人が基本となる。また、現在学生でサーバ管理を希望している人はぜひとも「Ansible」とは、どういったツールかを知っていただきたい。特に以下のような方々には、ぜひとも読んでいただければと思う。

1)新しくサーバ管理者になったので、構成管理の勉強を始めたいと考えている人
2)Chef等、現在使っているツールが「難しい」「面倒くさい」と感じている人


繰り返すが本連載は、上記のような条件を満たす人々に、非常に便利かつ高機能な構成管理ツール「Ansible」を解説していく。

■Ansibleが持つ3つのポイント
Ansibleは、まだ充分に普及しているとは言えないが、試験的に導入した人たちの中では、大変評判の良い構成管理ツールであるようだ。Ansibleのポイントを3つあげるなら、「簡単に」「すぐに」「小さく」始められるというところだろう。

■プログラムの著作権、動作環境、サンプルコードについて
本連載では、今後プログラムのサンプルコード等を記載することがある。これについては、「CentOS 6.5 x86_64」による環境で検証されている。

また、本連載で紹介し、提供するプログラムの著作権は明記のない限りすべてプログラムの著者に帰属する。こうしたデータは本連載の利用に限り、個人法人を問わず無料で利用できるが転載や再配布など二次利用は禁止するので注意してほしい。

また、本連載記載の内容については情報の提供のみを目的としている。したがって、本連載の記載内容を用いたシステム運用は、必ず読者自身の自己責任と判断によって行なっていただきたい。著者およびITライフハック編集部はその責を負うものではないことをあらかじめお断りしておく。

■Ansible登場の背景
まずは、「そもそも構成管理とは何なのか?」「Ansibleは何をしてくれるのか」について解説していこう。たとえば構成管理を英語では「Configuration Management」と書き、CMと略される。

構成管理の歴史は古く「武器システム」、「車両管理」、「情報システム」など、こうした複雑なシステムを管理するための軍事工学組織から広く行なわれるようになったという。

たとえばソフトウェアの構成管理は、「ビルド」、「リリース」、「バージョン管理」の3つに分けられる。ソースコードや対応する設計書などの成果物に対して変更履歴を管理し、必要に応じて任意のバージョンの成果物を取り出すことができるようにその運用をサポートするのがソフトウェアの構成管理だ。

もし、構成管理を実施しない場合、開発文書が存在しても実体と合致していないケースが多くなる。そのため、後から設計変更を施す際に実体を反映させるべく何度も開発文書を改訂する必要が生じてしまう。いちいち、各バージョンの文書と、その時点における状態を照らし合わせ一致させる必要がある。

しかし、構成管理を行なっていれば、そのような手間のかかるリバースエンジニアリング的な無駄な作業を減らすことができるわけだ。

そして本連載で解説する「Ansible」はシステム運用において構成管理をしてくれるツールで、Ansibleを導入することで手作業による構成管理を行う必要がなくなるのである。

■クラウド時代への変化により表舞台に出てきた構成管理ツール
「Subversion」や「Git」、「Chef」といったツールは、以前は縁の下の力持ち的な存在だった。これが表舞台でも注目されてきている理由として以下のポイントが挙げられる。

ポイント1) プログラミングの簡便化
ほんの10年ほど前と比べても、プログラミング言語が劇的に進化したことで以前よりプログラミング全体の難易度が下がってきている。

具体的にはテスト方法の普及による品質向上、「Ruby on Rails」などの生産性を高めるフレームワークなどによる開発の効率化といったようにプログラミング環境はどんどん簡易に、そして楽になってきている。そのため開発全体の中で大きく改善できるポイントとして「構成管理」が注目されるようになったと考えられる。

ポイント2) PaaS / IaaS などクラウドサービスの普及
自社で開発したアプリケーションを動かす環境も、いまでは自前でハードウェアを持たずクラウド上に仮想的なサーバを構築して利用するスタイルが一般的になってきている。

クラウド環境では、各種の操作に対応するAPIが提供され、プログラムからサーバを起動することはもちろん、ソフトウェアの構成を変更することも容易だ。これにより「システムの拡張」、「障害からの復旧」などが以前に比べると圧倒的に簡単にかつ迅速に行なえるようになった。その結果、「構成管理」の重要性が増したと考えられる。

ポイント3)アジャイル型開発の機運
ソフトウェアビジネスの中心は、これまでは受託開発であった。しかし現在は、特に中小のソフトウェア企業、スタートアップにおいては自社のWebサービス/製品開発に移り変わってきている。

こうした製品開発は、納期までに所定の仕様を満たすソフトウェアを納めれば完了というものではなく、むしろ提供を開始した時点がようやくスタート地点となる。ユーザーに満足してもらう価値のあるサービスとして成長させるために、ユーザー満足度を図りながら柔軟に仕様変更し、かつ頻繁にアップデートを繰り返し進化させていく。かつて、Googleはこうしたプロセスによって自社サービスを「永遠のベータ」と呼んでいたほどだ。

また「リーンスタートアップ」という言葉もよく聞かれる。「素早いリリース」や「プロダクション構築」、「検証用ベータ環境の構築」といったことを手早く実現するには、そのためのプロセスが必要になる。つまり、構成管理とは、ソフトウェアサービスを正しい方向に導くための必須の要素であるともいえるのではないだろうか。

次回は「Ansible」より先発の構成管理ツールである「Puppet 」や「Chef」より簡単に始められ、運用メリットの多いAnsibleの具体的な中身について紹介しよう。

s-fujita_profile

著者プロフィール:
藤田泰弘(ふじた・やすひろ)
株式会社ファランクスCTO(最高技術責任者)。1975年福井県生まれ。2002年東京大学経済学部卒業。大学在学中より携帯電話向けコンテンツサービスの開発に携わり、卒業後も同サービス開発会社で働く。主な担当はサービスインフラの設計・構築。ファランクスがアフィリエイト広告事業に参入するにあたり、大学時代からの知己であった経営陣からの誘いを受けて同社でのシステム全般の立ち上げに参画、現在に至る。


株式会社ファランクス