AQ Tech Blog

CI/CDはじめの一歩 構成管理ツール編

作成者: yuya.tanaka|2024年04月17日

 

はじめに

アジアクエスト クラウドインテグレーション部の田中雄也です。
この記事では、CI/CDを知るためのはじめの一歩として、サーバーを管理するための構成管理ツールについて触れていきます。

 

記事の目的(または狙い)

  • 今後、CI/CDや構成管理ツールに触れてみたい方のきっかけづくりに
  • 構成管理の情報収集をする方向けの参考情報に
  • サーバー構築の手段を学ぶ

 

そもそもCI/CDとは

「Continuous Integration」・「Continuous Delivery」の略称で、日本語に訳すと「継続的インテグレーション・継続的デリバリー」といった意味になります。

ソフトウェアのリリーススピードの向上を目的とした開発手法で、 ソフトウェアをリリースさせた段階で満足するのではなく、リリース後においても継続的なアップデートの提供をすることで、絶えず変化するビジネス環境に適応したソフトウェアの提供を目指すための手法です。

コードの変更が行われる都度のテストやデプロイを自動化することで、ソフトウェアのリリーススピードの向上を通して、市場が求めるアプリケーションを維持し、競争力を保ち続けることが目的となっています。
現在ではソフトウェアだけでなく、クラウドインフラにもこの仕組みが応用されるなど幅広い開発現場で用いられる手法となっています。

 

CI/CDと構成管理

今回紹介をする構成管理とCI/CDの関係性をおおまかに表すと
「CI/CDで構成したシステム環境を構成管理によって効率的に管理していく」といったイメージで用いられるものになります。

各要素は

  • 構成管理
    • CI/CDによってデプロイされるアプリケーションを実行するためのインフラ環境(サーバー、ネットワーク、ストレージなど)を準備する
    • また、CI/CDによってデプロイされたシステムの環境の設定と状態を一貫して管理する
  • CI/CD
    • 構成管理ツールによって準備されたインフラ環境に対して、ソフトウェアのビルド、テスト、デプロイメントを自動化する

といったように関連させることができます。それぞれ別のアプローチをしながらも、ソフトウェア開発と運用の効率化を目指すという部分で共通した目的を持っており、これらを組み合わせることで、より人の手を省いた効率的なシステム運用が可能になります。

構成管理とは

ITシステムを構成する各要素(ソフトウェアやOS、ライセンスなど)を把握し、管理することです。各要素間の関係性や依存関係を理解し、整合性を維持することが構成管理の役割です。
そのプロセスのなかで、構成要素の設定変更を追跡し、必要に応じて以前の状態に戻すことも可能となっています。

構成管理が適切に行われないことで、ITシステムの構成要素同士の不整合や互換性における問題が発生し、システムが稼働しなくなったり、システムにおいて問題が発生した場合にシステムを構成している要素の特定が遅れることで対応が難しくなってしまうことが考えられます。

具体例としては、PCのOSのバージョンアップをしたことによって、周辺機器が利用できなくなることなどが挙げられます。

 

構成管理のシステム化

構成管理を行っていく上で、該当のシステムにおける構成要素が多くなると、単純に各要素を把握するだけでも難しくなります。その上で、各要素ごとの変更やバージョンを継続的に人力で管理しようとすると、とてつもない負担となることでしょう。

そのため、それらの要素の情報を本格的に管理するためにシステム化が必要となってきます。
ITシステムを安定稼働させるためにも、構成管理をシステム化し効率的かつ正確な構成管理を実現する必要があり、そのための手段として構成ツールを用いる必要性がでてきます。

構成管理ツールとは

その名の通り、構成管理をするために用いられるツールであり、ITシステムの構成要素を一元管理するために用いられます。

構成管理ツールを導入することによって、各システムのアップデートや設定項目の状況確認、サーバーの構築などを一元的に管理し、整合性を保ったシステム運用をすることが可能になります。

 

構成管理ツール導入によるメリット

構成管理ツールを導入することによるメリットはどんなものなんでしょう?
その例が以下になります。

  • 構成管理をシステム化できる
    • 人的な作業ミスを減らすことができます。従来の手作業に比べ、自動化されたプロセスによりヒューマンエラーが大幅に削減されます。
    • 作業時間を削減できます。システム化により、タスクの実行や情報へのアクセスが効率化され、業務の処理時間が短縮されます。
  • システムを一元管理できる
    • 構成管理ツールを導入することで、ITシステムにおける構成要素を一元化して管理できます。それによりシステムにおける設定の一貫性を保ったり、セキュリティパッチやアップデートの適用が容易に行えるようになります。
  • サーバー構築を簡単にできる
    • Infrastructure as Code(IaC)を活用して、インフラの構成をコード化し、自動化・標準化することで、同じ構成のサーバーをミスなく短時間で複数台つくるようなことも可能になります。

 

構成管理ツールの分類

構成管理ツールは、データの扱い方にそれぞれ異なる分類をもっています。
それはPull型、Push型といった形式であり、この形式の違いによって以下の様な特徴があります。

  • Pull型:構成管理サーバから設定情報を積極的に取得(Pull)するタイプ。管理対象から情報を送信するために管理対象へのエージェントのインストールが必要(例:Puppet、Chef)
    • 逐次自動的に情報を取得してくれるため、情報の管理がしやすく大規模な環境に向いている
  • Push型:構成管理サーバが設定情報を積極的に送信(Push)するタイプ。エージェントのインストールが不要(例:Ansible)
    • 即時性に優れており、中央の管理サーバーから直接対象のシステムへ情報を送信する都合上、小規模な環境に向いている

 

代表的な構成管理ツール

ここからは、画像に記載されている代表的な構成管理ツール3つについて紹介していきます!

各ツールの特徴は以下のようになっています。

 

Puppet

2005年に開発されたオープンソースの構成管理ツール。Puppet DSLというRubyを元にした独自言語で構成を記述する必要があり、その他の構成管理ツールと比べ学習コストがかかってしまう。
サーバーにエージェントをインストールする必要のあるPull型のツール。
自動化されたレポート機能や、ユーザーフレンドリーなWebインターフェイスなどの管理をサポートする機能から、大規模な環境に対しても強力な管理機能を提供している。

 

Chef

2009年に開発されたオープンソースの構成管理ツール。Rubyで構成を記述する。サーバーにエージェントをインストールする必要のあるPull型のツール。
「Cookbooks」という概念を使用して構成を管理している。これらは「Recipe」の集合体であり、特定のタスクを実行するためのコードとデータを含む。
カスタマイズ性が高いことと多くのプラットフォームと統合できる点や設定内容を記述したファイルである「Recipe」の再利用をしやすいことが特徴。

 

Ansible

2012年に開発された構成管理ツール。エージェントレスなPush型のツールのため、セットアップ完了までがシンプルで使いやすいことが特徴。記述形式もYAMLという単純なコードであるため、学習コストが低く、導入の手間を最小限に抑えたい場合に向いている。
その反面、GUIでの操作がデフォルトで用意されていなかったり、複雑な処理の表現が難しい部分がある。


各ツールは、用途や目的によって使い分けられています。
構成管理ツール導入の際には、導入の目的を明確にすることが必要です。ただ、やみくもに導入をすれば効率が良くなるんじゃないかといった考えではなく、ツールを導入することでの明確なメリットを考えた上で、導入後の運用方針をきちんと固めることが構成管理ツール導入成功のカギとなってくるでしょう。

 

クラウドの構成管理ツール

今までご紹介してきた構成管理ツールはクラウド環境でインフラを構成するクラウドサービスに最適化する形でクラウド環境にも波及しているのです。
というわけで、ここからは、クラウドにおける構成管理ツールを紹介していきます。

 

AWS OpsWorks

  • OpsWorks関連のサービスには、以下の3種類が存在する
    • OpsWorks スタック
    • OpsWorks for Chef Automate
    • OpsWorks for Puppet Enterprise

基本的には同じOpsWorksであるため、それぞれ記述方法などが大きく異なるわけではなく、先ほど紹介したような各構成管理ツールをクラウド上で使いやすく改良しているようなイメージ。
また、OpsWorksの特徴としてオンプレ環境にも対応していることが挙げられる。
2023年11月現在では新規の顧客を受け付けておらず、サービス自体も2024年5月を目途に順次廃止予定。

アプローチが異なるため詳細は割愛するものの、同じAWS内では、類似な機能を提供するサービスとして、AWS CloudFormationとAWS Systems Managerが挙げられる。

 

Azure Automation State Configuration

AzureAutomationというAzureにおける自動化の大きな機能のうちの一機能であり、PowerShellベースの構成管理が可能なため、PowerShellに慣れている人が触れやすいツールだと言える。
Azureのリソースグループやサブスクリプション全体にわたって、リソースの状態を一貫して管理する機能を提供しつつも、Push型/Pull型に両対応しているため、それぞれの長所を活かした運用が可能。

 

GCP ConfigurationManagement

Google Cloud VM ManagerというGCP内でのVM周りの管理の大部分を担う機能のうちの一機能。
GCPのアプリ群などの管理単位を指すプロジェクトに一括適用可能。
仮想サーバに対して構成管理を行うために、OS Configエージェントのインストールが必要。


クラウドの構成管理ツールは、複雑なクラウド環境において、リソースの管理を自動化し、一貫性を保つために重要です。これにより、人的ミスを減らし、効率的な運用を支援します。
クラウドにおいても、正しいツールの選定は、クラウドリソースの最適な利用、コスト管理、セキュリティの向上に直接的に貢献します。そのため、選定過程では組織の特定のニーズと目標に合わせて適切なツールを選ぶことが必要です。

まとめ

というわけで、この記事では「CI/CDはじめの一歩 構成管理ツール編」として、CI/CDと構成管理。そこに用いられるツールについて触れさせていただきました。

  • CI/CDとは、継続的インテグレーション・継続的デリバリーを指す言葉でソフトウェアのリリーススピードの向上を目的として、コードの変更が行われる都度のテストやデプロイを自動化するものとして現在では、ソフトウェアだけでなくクラウドインフラを含めた幅広い開発現場で用いられている開発手法であること。
  • 構成管理とは、ITシステムを構成する各要素を把握、管理することで各要素間の関係性や依存関係を理解し、整合性を維持すること。
  • そんなCI/CDと構成管理は、ソフトウェア開発と運用の効率化を目指すという部分で共通した目的を持っており、これらを組み合わせることで、より人の手を省いた効率的なシステム運用が可能となること。

が、ご理解いただけたでしょうか?

この記事が皆様のCI/CDや構成管理ツールに踏み出す一歩として寄与することを願っています。
最後までお読みいただき、ありがとうございました。

また、この記事は
以前に投稿したCI/CDはじめの一歩シリーズの一部となっています。

以前の記事をご覧になりたい方は下記のリンクより参照できますので、よければご覧ください。
CI/CDはじめの一歩 ソースコード管理(Git)編
CI/CDはじめの一歩 CIツール編

参考記事

構成管理ツールのおすすめ一覧!メリット、注意点も紹介 | QUERYY
構成管理ツールとは?導入するメリットや注意点を把握し、最適な管理を行いましょう。 | 株式会社ディアイスクエア