自動構成ツールって本当に有効ですか?
そんなのシェルスクリプトでも用は足りる
数年前くらいから、冪等性を売りにした構成ツールをよく見かけるようになった。ChefやPuppetが有名だ。最近ではこれらに代わってAnsibleというツールが勢力を広げているように思う。ChefやPuppetでは、導入までの手数がそれなりにかかったり、覚えるべき内容が多かった。Ansibleはこれらのツールの問題点をうまいこと解消したと思う。
物理環境にせよ仮想環境にせよ、環境の構成というのは中々手間がかかる。このようなツールを利用することで、大幅に効率を上げることが期待できる。反面、本来これらのツールが適さない用途は存在する。便利なツールほど使い所をよく考えるべきだ。適さない用途で使用しても、効率を上げるどころか、大きく効率を損なうことになる。
当たり前だが、自動構成ツールそれぞれにコンセプトがある。コンセプトに合った使い方をしないと、非常に融通の利かないツールになってしまう。コンセプトを無視して、あれもできる、これもできるばかり追求しても、どのように活用するか考えるフェーズに来ると行き詰まる。
自動構成ツールの仕組みは、何らかの仕組みで対象のシステムに接続してコマンドを実行しているだけだ。シェルスクリプトで同じ作業をしたとしても、「どのようにコマンドを実行したか」という方法の差しか出てこない。用途によっては、シェルスクリプトで十分に用が足りてしまう。コンセプトを理解しないと最適なツールの選択を踏み外す。
実質的導入コスト
この手のツールをSIer系の案件で使用しているのを見たことが無い。詳細な仕様書や手順書を書き、手作業で環境を構築しているからだ。このやり方が良いか悪いかは置いておいて、もし、こういうやり方をしている人たちが自動構成ツールを導入したらどうなるだろう。現状のやり方との差が大きすぎて、学習コストが凄まじくかかることだろう。
実際のところ、構築さえできてしまえばいいという世界だ。そういう状況で自動構成ツールを使用することのメリットを説明できるだろうか。構成をコードやYAML形式で書けるので、後から読んで分かりやすいという説明が思い浮かぶが、そもそもドキュメントはExcelで書く。そこまでしなくてもシェルスクリプトで十分だという考え方が主流だ。自分たちがよく知っているコマンドをそのまま使える。コメント入れれば十分に分かり易くなるとのことだ。
他に思い浮かぶメリットとして、複数台のサーバをまとめて構成できるというのもある。ただし、一般的なSIerの要件であれば一台一台実行すれば事足りる。わざわざ一括りの仕組みでやる理由が無い。検証環境にしても、ツールを使わずに雛形を作り込んでデプロイで間に合わせたり、スナップショットを駆使して再構築の回数を省くアプローチを取る。
こういう感覚でいる人たちに対して、ツールを使うメリットを説明し、効率的な使い方を考えて導入を支援したとしよう。かなり苦労することになるだろう。自動構成ツールが優秀だったとしても、それをどういう考え方をする人が使うかによって、導入コストは大きく変動する。ツールが優秀であれば、導入コストも安く済むとは安易に考えない方がいい。
分からない人にはシェルスクリプトの方が有効
ここで質問を投げかけたい。一通り手作業でサーバを構築できるようになった人がいたとする。あなたなら、ここで自動構成ツールの使い方を教えるだろうか。それとも、シェルスクリプトの書き方を教えるだろうか。立場やらコンセプト等、色々な条件があるので、どれが正解というのは無い。だが、私なら間違いなくシェルスクリプトの書き方を教える。
シェルスクリプトをある程度使いこなす人でないと、自動構成ツールの良さはなかなか伝わらない。シェルスクリプトを書くにしても、「ごちゃごちゃ考えずに一個一個、全部書いていけばいいじゃないか」という考え方の人に自動構成ツールのメリットを説明したことがある。しかし、彼には自動構成ツールのメリットが理解できなかった。考えずに書いた方が早くて分かり易いと思っていたからだ。
自動構成ツールというのは非常に高性能なように見えるが、実際の機能は限定的だ。当たり前だがシステムの構成にしか使えない。シェルスクリプトの方が格段に汎用性が高い。やりたい処理を切り出せたり、出力の形式の変更、処理の追加や順番の制御が楽だ。しかし、こういう制御の試行錯誤を繰り返していると、あるポイントで壁に当たる。そういう時に自動構成ツールを出してあげると喜ばれる。
つまり、分かってる人でないと自動構成ツールの有用性は理解できない。裏を返すと、分からない人にはシェルスクリプトの方が有効になる。あくまで、基礎があってこそ活きるツールだ。ツールを使いこなすことが凄いのではなく、ツールを使いこなせるだけのバックボーンが凄いのだ。こういう人は、新しいツールが出てきても、なんの頓着もなく乗り換えて使いこなしていく。
自動構成ツールの活用シーン
個人的な意見ではあるが、冪等性というのはインパクトは強いが本当に必要かと言われると、そうでもないような気がする。そこまでしなくても事足りる状況だからだ。冪等性が役に立つ状況というのは、実際にツールを活用して実益を得た人でなければピンと来ないのだろう。ただ、私は実益を受けたことが無いので否定も肯定もしない。
現場で活用している人の話を聞くと、どの自動構成ツールも多様な機能を備えている。故に、少ない学習コストで特定の機能をひたすら使うか、じっくり学習コストをかけて多くの機能を使いこなすか、使いこなすと言っても色々なスタイルがある。使いこなしている人は取捨選択に長けている。単にツールオタクになることが使いこなすということではないようだ。
自動構成ツールが一番役に立つのは、色々な条件で何度も検証環境を構築するような状況だろう。また、一人で何十台と構成するような状況でも役に立ちそうだ。あとは、今までのやり方を変えるためにツールを使うという考え方がある。今までは同じ検証環境を使い回していたのを、使い捨てにして再構築するようにスタイルを変える。そういう時にも自動構成ツールは役に立つ。
こういうツールの話をすると、やれ何ができるとか、どのツールがどうこうという話題で持ちきりになる。自動構成ツールの活用シーンは、関心のある人がコンセプトを理解して使う状況ではないだろうか。ちなみに私はシェルスクリプトで十分と思う立場だ。冪等性より別のコンセプトに価値を見いだしているからだ。何が便利かはそれぞれの置かれた状況によって変わる。ツールはコンセプトに合わせて使いこなそう。
コメント
ななっしー
Excel使うにしても自動的に設定ファイル吐けるフォーマットとマクロがあることが前提になるのかなとこっそり思いました まる
John Doe
一年前の記事ですが、この筆者は「自動構成ツール」と「構成管理ツール」の違いを理解されていない(或いは理解が足りない)と思う。
列挙されているツールは前者ではなく後者。だからこその冪等性。
SIerが行う初回の構築が話の中心であるようだが、自社サービス会社であったり社内サーバであったり、継続的に構成変更やチューニングを行うことになる。そしてHA構成であったりLBを介していたりすれば本番サーバが複数台、それに同様の構成のステージングサーバや開発用のサーバがあったり、それらがホスト名などを除けば同じ構成を保っている必要がある。こうした場合に構成管理ツールが役に立つ。
また、当社の場合は、何十台かあるmacクライアントの構成を同じ状態に保つのにも重宝していますよ。社内ユーザーが設定を色々変えてしまうので。もちろんこれはプロファイルマネージャで本当は管理すべき所でしょうけど、サーバー設定だけではないということ。