LAC WATCH

セキュリティとITの最新情報

RSS

株式会社ラック

メールマガジン

サイバーセキュリティや
ラックに関する情報をお届けします。

サービス・製品 | 

釘を打つのにドライバーを使ってませんか?正しいプロビジョニングツールを使いましょう

サーバの構築や構成管理、運用を支えるツールはたくさんあります。それぞれの目的に合ったツール、とりわけプロビジョニングに適したツールを選ぶにはどうすれば良いでしょうか。また、HashiCorpのプロビジョニングツール、Terraformにはどのような特徴があるでしょうか。

今回は、「正しいプロビジョニングツールを使いましょう」と題した記事を日本語に訳してお届けします。著者のSean CarolanはHashiCorp社のテクノロジー・スペシャリストで、エンジニアだけでなくビジネスサイドにも技術をわかりやすく説明することを得意としています。


「仕事に合った正しい道具を使いましょう」という言葉を聞いたことがあるかもしれません。他に選択肢がなければ、ドライバーや石でも釘を打つことはできるでしょう。でもそれでは、良いハンマーを持った、腕の立つ大工にはかないませんよね。

ジョン・フェラーロ(別名 金槌頭)の釘打ち
ジョン・フェラーロ(別名"金槌頭")の釘打ち・・・

目的に適した(あるいは間違った)ツールを使うかどうかで、導入時間や停止頻度、ロールバック回数、作業に伴うリスクに大きな違いが生じます。業界によっては、ソフトウエアのミスが人間の生命を危険にさらしてしまうことさえあります。間違ったツールは、作業の生産性を低下させるだけでなく、思いもよらぬ結末を招くことがあるのです。

どんなツールを使っていますか?

システム運用に携わっている人間であれば誰でも自分の好きなツールがあるものです。ツールを使うと、アプリケーションやインフラ環境の構築・管理が素早く、効率的に行えます。ツールにはプロビジョニングやテスト、コンフィギュレーション、セキュリティ、モニタリング用のものなどがあります。エンジニアのノートパソコンに、お気に入りのツールのステッカーが所狭しと貼られているのを見たことがあるでしょう。

ノートパソコンは何を物語るか(Photo by Seth Kenlon. CC BY-SA 4.0)
ノートパソコンは何を物語るか(Photo by Seth Kenlon. CC BY-SA 4.0

ステッカーだらけのノートパソコンのように、世の中にはとてもたくさんのツールがあります。それらすべての役割を理解し、互いに組み合わせるとどんな使い方ができるのか(あるいは使えないか)を把握するのは難しいものです。エンジニアは、特定のツールに非常にこだわることがあります。作業を楽にしたり、ある特定の問題の解決に役立ったりするものであればなおさらです。これまでの仕事で使い慣れたツールで作業するのが好きな人もいるでしょう。また、たくさんのツールの複雑な一連の操作を簡単にできる、多機能なツールやプラットフォームを提供している企業もあります。

ツールからどんな成果を望むか?

一歩下がって全体を俯瞰してみましょう。どのツールを使うかを決める前に、どんな成果を望むかを考える必要があります。はっきりと、簡潔に、期待している成果を書き出してみましょう。例えば次のように。

「Linuxサーバの設定にかかる時間を半減したい」
「コンプライアンスとセキュリティポリシーは維持して、開発者が自由に開発環境を構築できるようにしたい」
「アプリケーションを、2つのパブリッククラウドに6か月以内にリリースしなければならない」

この段階ではまだ、どのツールが良いとか、どんな機能が必要だとかは考えないようにしましょう。ツールやプラットフォームのメリット・デメリットについて話したい気持ちはわかりますが、ここでは我慢しましょう。その代わりに、どんな成果を期待するのかという、より上位の要求を考えることに集中します。達成すべき目標が定まってから、どのツールを使うかを検討します。

プロビジョニングツールにはどのようなものがあるか?

この記事では、主にプロビジョニングツールに注目しようと思っています。プロビジョニングツールは、OS(基本ソフト)やアプリケーションが稼働するインフラの構築や設定に利用します。次に挙げるのは特に人気のあるツールですから、皆さんもご存じかもしれません。

  • Chef
  • Puppet
  • CFEngine
  • Ansible
  • AWS Cloudformation
  • Azure Resource Manager
  • Google Deployment Manager
  • HashiCorp Terraform
  • Bourne again shell(Bash)
  • Powershell

ここに挙げたのは、プロビジョニングツールのほんの一例にすぎません。ここに挙げたツールと協調して動作するツールもありますし、そのうちのいくつかはオープンソースと商用版の両方が出ているものもあります。これだけさまざまな選択肢があると、自分たちの手を動かすことをあきらめて、すべてをアウトソースしてしまいたくなるのも無理のないことかもしれません。

プロビジョニングとは?

ITの世界では、プロビジョニングとは一般的に、サービスやインフラを人間やコンピューターが利用できるように準備することを意味します。これには、プロビジョニングされたものの設定(構成)を含む場合もあれば、含まない場合もあります。例えば、システム管理者がLinux仮想マシンを構築し、いくつかのセットアップスクリプトを実行したとします。この作業は、基本的なプロビジョニングに加えて、設定管理も少し含まれていると言えます。

話を明確にするために、ここでは次のように定義します。

プロビジョニングツール
インフラを構築する。システムの稼働(Day1)に必要な運用の準備を含む場合もある。
構成管理ツール
システムの運用中(Day N+1)にインフラやアプリケーションの構成を管理する。
運用ツール
アプリケーションの実行時設定、監視、セキュリティ、レポーティングなどを管理する。

運用ツール

運用ツールから見てみましょう。Bash、Powershell、Python、Perl、Rubyなどのスクリプト言語はいずれも運用ツールに該当します。スクリプト言語の利点は、さまざまな用途のプログラムが作れることにあります。例えば、ログファイルのローテーション、アラートの発報、サービスの停止・再起動、アプリケーションの設定などのためのプログラムです。一方で欠点は、作った人以外は誰も理解できない、使えないコードを書いてしまいやすいことでしょう。

クラウドで仮想マシンをプロビジョニングするのにPowershellは使えるでしょうか。もちろん可能です。しかし、最適なツールかと言うと、たぶん違うでしょう。PowershellやBashは、クラウドのプロビジョニング作業の自動化に使えますが、最後にはやっつけ仕事のように切り張りされた見苦しいスクリプトが残るだけでしょう。

構成管理ツール

続いて、構成管理ツールについて見てみましょう。構成管理ツールは、OSやアプリケーションの設定を管理することを目的に作られたツールです。Cfengine、Puppet、Chef、Ansibleなどがこのカテゴリーに分類されます。Cfengine、Puppet、Chefは、いずれも類似の機能群と構成管理の考え方を持っています。これらのツールでは、管理対象のマシン上でエージェントを動作させます。この方式は、サーバにパッチを適用したり、数か月から数年にわたってマシンを管理したりしなければならない場合にとても有用です。マシンに設置したエージェントは自律的に動作します。すなわち、それぞれのマシンは自らを最新状態に保つことに責任を持っているということです。一般的にエージェントは30分ごとに起動し、セルフチェックを実行してマシンが正しく設定されているかどうかを確認します。

Ansibleもサーバの設定に利用されますが、エージェントは利用しません。その代わりに設定するマシンとの間にリモート接続を必要とします。Ansibleの良い点は、使い始めるのがとにかく簡単なことと、管理対象マシンにソフトウエアをインストールする必要がないことです。欠点は、管理対象となるすべてのマシンに対してリモート接続が必要なことと、他の構成管理ツールとは異なり、自らの設定は修復できないことです。

プロビジョニングツール

最後にプロビジョニングツールについて見てみましょう。プロビジョニングツールは、クラウドやデータセンターなどのオンプレミス環境に新たなインフラを準備(プロビジョン)することを目的として作られたもので、Terraform、AWS Cloudformation、Azure Resource Manager、Google Cloud Deployment Managerなどがあります。

三大クラウドベンダーのAWS、Google、Microsoftには、それぞれ独自のプロビジョニングツールがあります。いずれも基本的な動作は一緒です。JSON、もしくはYAMLというファイル形式で設定ファイルを準備し、クラウドプロバイダーが提供するAPIを通じてテンプレートを流し込むことでインフラを構成します。クラウドベンダーが提供するプロビジョニングツールは、それぞれのクラウドでのみ動作するように作られています。利点は、クラウドベンダーによって動作が保証され、指示通りに操作すれば通常は正しく動作することです。欠点は、特定のクラウド環境に特化して最適化されているために可搬性(ポータビリティ)に欠けることです。AWS CloudformationのテンプレートをAzureに持ち込んでも何も起きません。クラウドベンダーはそれぞれ独自のAPIとプロビジョン方法を持っているからです。

Terraformはマルチクラウドで利用可能なプロビジョニングツールで、学習も容易ですぐに使い始められます。Terraformを使えば、プロビジョニング手順を人間にとっても読みやすく、機械処理もしやすい形式で表現することができます。工具に例えるならば、調整可能なラチェットレンチみたいなものです。クラウドごとに異なるツールを持ち歩かなくとも、Terraformであればほとんどすべてのクラウドで利用できます。Terraformの利点は、第一に主要なパブリッククラウドやプライベートクラウドで動作すること、第二に簡単で学びやすいこと、第三にオープンソースソフトウェアであることです。欠点は、あえて挙げるなら正しい使い方を学ぶのに数時間かかることです。もっとも、これは他のツールでも同様だと思いますが!

正しいツールを選び、使い方を身につけましょう

自社や自社の従業員のことは、誰よりもあなた自身がよくご存じでしょう。ツールについても、調査してそれぞれのメリットとデメリットをよく理解しましょう。エンジニア、開発者、運用担当者にどのツールを知っているか聞いてみてください。どこにボトルネックや非効率なプロセスがあるかを理解し、期待する成果を明確に定義しましょう。試しにどれかのツールを使ってみて、期待通りの結果が得られるか確認してみてください。同じツールを使っているユーザにヒアリングして、そのツールのどこを気に入っているのかを尋ねてみましょう。インフラやアプリケーションのプロビジョニングと構成管理に適したツールを選択するのに役に立つでしょう。きっとすぐに、便利なツールを使ってプロのようにインフラをプロビジョニングできるようになります。

それでは最後に、名工ラリー・ハウンの釘打ちをご覧ください。

ラリー・ハウンの釘打ち
さあ、ご覧あれ!
より詳しく知るにはこちら

より詳しく知るにはこちら

Terraformはオープンソースのソフトウエアですが、本番環境への導入やご利用にあたって商用サポートが必要な場合にはお問い合わせください。

この記事は役に立ちましたか?

はい いいえ