アジアクエスト クラウドインテグレーション部の田中雄也です。
この記事では、CI/CDを知るためのはじめの一歩として、サーバーを管理するための構成管理ツールについて触れていきます。
「Continuous Integration」・「Continuous Delivery」の略称で、日本語に訳すと「継続的インテグレーション・継続的デリバリー」といった意味になります。
ソフトウェアのリリーススピードの向上を目的とした開発手法で、 ソフトウェアをリリースさせた段階で満足するのではなく、リリース後においても継続的なアップデートの提供をすることで、絶えず変化するビジネス環境に適応したソフトウェアの提供を目指すための手法です。
コードの変更が行われる都度のテストやデプロイを自動化することで、ソフトウェアのリリーススピードの向上を通して、市場が求めるアプリケーションを維持し、競争力を保ち続けることが目的となっています。
現在ではソフトウェアだけでなく、クラウドインフラにもこの仕組みが応用されるなど幅広い開発現場で用いられる手法となっています。
今回紹介をする構成管理とCI/CDの関係性をおおまかに表すと
「CI/CDで構成したシステム環境を構成管理によって効率的に管理していく」といったイメージで用いられるものになります。
各要素は
といったように関連させることができます。それぞれ別のアプローチをしながらも、ソフトウェア開発と運用の効率化を目指すという部分で共通した目的を持っており、これらを組み合わせることで、より人の手を省いた効率的なシステム運用が可能になります。
ITシステムを構成する各要素(ソフトウェアやOS、ライセンスなど)を把握し、管理することです。各要素間の関係性や依存関係を理解し、整合性を維持することが構成管理の役割です。
そのプロセスのなかで、構成要素の設定変更を追跡し、必要に応じて以前の状態に戻すことも可能となっています。
構成管理が適切に行われないことで、ITシステムの構成要素同士の不整合や互換性における問題が発生し、システムが稼働しなくなったり、システムにおいて問題が発生した場合にシステムを構成している要素の特定が遅れることで対応が難しくなってしまうことが考えられます。
具体例としては、PCのOSのバージョンアップをしたことによって、周辺機器が利用できなくなることなどが挙げられます。
構成管理を行っていく上で、該当のシステムにおける構成要素が多くなると、単純に各要素を把握するだけでも難しくなります。その上で、各要素ごとの変更やバージョンを継続的に人力で管理しようとすると、とてつもない負担となることでしょう。
そのため、それらの要素の情報を本格的に管理するためにシステム化が必要となってきます。
ITシステムを安定稼働させるためにも、構成管理をシステム化し効率的かつ正確な構成管理を実現する必要があり、そのための手段として構成ツールを用いる必要性がでてきます。
その名の通り、構成管理をするために用いられるツールであり、ITシステムの構成要素を一元管理するために用いられます。
構成管理ツールを導入することによって、各システムのアップデートや設定項目の状況確認、サーバーの構築などを一元的に管理し、整合性を保ったシステム運用をすることが可能になります。
構成管理ツールを導入することによるメリットはどんなものなんでしょう?
その例が以下になります。
構成管理ツールは、データの扱い方にそれぞれ異なる分類をもっています。
それはPull型、Push型といった形式であり、この形式の違いによって以下の様な特徴があります。
ここからは、画像に記載されている代表的な構成管理ツール3つについて紹介していきます!
各ツールの特徴は以下のようになっています。
2005年に開発されたオープンソースの構成管理ツール。Puppet DSLというRubyを元にした独自言語で構成を記述する必要があり、その他の構成管理ツールと比べ学習コストがかかってしまう。
サーバーにエージェントをインストールする必要のあるPull型のツール。
自動化されたレポート機能や、ユーザーフレンドリーなWebインターフェイスなどの管理をサポートする機能から、大規模な環境に対しても強力な管理機能を提供している。
2009年に開発されたオープンソースの構成管理ツール。Rubyで構成を記述する。サーバーにエージェントをインストールする必要のあるPull型のツール。
「Cookbooks」という概念を使用して構成を管理している。これらは「Recipe」の集合体であり、特定のタスクを実行するためのコードとデータを含む。
カスタマイズ性が高いことと多くのプラットフォームと統合できる点や設定内容を記述したファイルである「Recipe」の再利用をしやすいことが特徴。
2012年に開発された構成管理ツール。エージェントレスなPush型のツールのため、セットアップ完了までがシンプルで使いやすいことが特徴。記述形式もYAMLという単純なコードであるため、学習コストが低く、導入の手間を最小限に抑えたい場合に向いている。
その反面、GUIでの操作がデフォルトで用意されていなかったり、複雑な処理の表現が難しい部分がある。
各ツールは、用途や目的によって使い分けられています。
構成管理ツール導入の際には、導入の目的を明確にすることが必要です。ただ、やみくもに導入をすれば効率が良くなるんじゃないかといった考えではなく、ツールを導入することでの明確なメリットを考えた上で、導入後の運用方針をきちんと固めることが構成管理ツール導入成功のカギとなってくるでしょう。
今までご紹介してきた構成管理ツールはクラウド環境でインフラを構成するクラウドサービスに最適化する形でクラウド環境にも波及しているのです。
というわけで、ここからは、クラウドにおける構成管理ツールを紹介していきます。
基本的には同じOpsWorksであるため、それぞれ記述方法などが大きく異なるわけではなく、先ほど紹介したような各構成管理ツールをクラウド上で使いやすく改良しているようなイメージ。
また、OpsWorksの特徴としてオンプレ環境にも対応していることが挙げられる。
2023年11月現在では新規の顧客を受け付けておらず、サービス自体も2024年5月を目途に順次廃止予定。
アプローチが異なるため詳細は割愛するものの、同じAWS内では、類似な機能を提供するサービスとして、AWS CloudFormationとAWS Systems Managerが挙げられる。
AzureAutomationというAzureにおける自動化の大きな機能のうちの一機能であり、PowerShellベースの構成管理が可能なため、PowerShellに慣れている人が触れやすいツールだと言える。
Azureのリソースグループやサブスクリプション全体にわたって、リソースの状態を一貫して管理する機能を提供しつつも、Push型/Pull型に両対応しているため、それぞれの長所を活かした運用が可能。
Google Cloud VM ManagerというGCP内でのVM周りの管理の大部分を担う機能のうちの一機能。
GCPのアプリ群などの管理単位を指すプロジェクトに一括適用可能。
仮想サーバに対して構成管理を行うために、OS Configエージェントのインストールが必要。
クラウドの構成管理ツールは、複雑なクラウド環境において、リソースの管理を自動化し、一貫性を保つために重要です。これにより、人的ミスを減らし、効率的な運用を支援します。
クラウドにおいても、正しいツールの選定は、クラウドリソースの最適な利用、コスト管理、セキュリティの向上に直接的に貢献します。そのため、選定過程では組織の特定のニーズと目標に合わせて適切なツールを選ぶことが必要です。
というわけで、この記事では「CI/CDはじめの一歩 構成管理ツール編」として、CI/CDと構成管理。そこに用いられるツールについて触れさせていただきました。
が、ご理解いただけたでしょうか?
この記事が皆様のCI/CDや構成管理ツールに踏み出す一歩として寄与することを願っています。
最後までお読みいただき、ありがとうございました。
また、この記事は
以前に投稿したCI/CDはじめの一歩シリーズの一部となっています。
以前の記事をご覧になりたい方は下記のリンクより参照できますので、よければご覧ください。
CI/CDはじめの一歩 ソースコード管理(Git)編
CI/CDはじめの一歩 CIツール編
参考記事
構成管理ツールのおすすめ一覧!メリット、注意点も紹介 | QUERYY
構成管理ツールとは?導入するメリットや注意点を把握し、最適な管理を行いましょう。 | 株式会社ディアイスクエア