ログイン / 登録 アカウント

自動化

IaC (Infrastructure as Code) とは

Jump to section

IaC (Infrastructure as Code) は、手動のプロセスではなく、コードを使用してインフラストラクチャの管理とプロビジョニングを行うことを言います。

IaC を使用すると、インフラストラクチャ仕様を含む設定ファイルが作成され、設定の編集と配信が容易になります。また、毎回同じ環境をプロビジョニングできるようになります。

IaC は、設定仕様を体系化および文書化することにより構成管理を支援し、構成が文書化されることなくアドホックに変更されないようにします。

IaC においてバージョン管理は重要な要素であり、設定ファイルは他のソフトウェアのソースコードファイルと同じようにソース管理を行う必要があります。 

インフラストラクチャをコードとしてデプロイするということは、インフラストラクチャをモジュラー・コンポーネントに分割し、自動化を使ってさまざまに組み合わせることもできるということです。

 

IaC を使用するインフラストラクチャ・プロビジョニングの自動化により、開発者は、アプリケーションを開発またはデプロイするたびに、サーバー、オペレーティングシステム、ストレージ、およびその他のインフラストラクチャ・コンポーネントのプロビジョニングと管理を手動で行う必要がなくなります。 

インフラストラクチャを体系化すれば、プロビジョニングをテンプレート化できます。これは手動でも作成できますが、Red Hat® Ansible Automation® Platform のような自動化ツールから取得できます。 

Ansible Automation Platform では、Playbook を使用してインフラストラクチャの望ましい状態を記述し、ツールがそれをプロビジョニングします。構成管理に Ansible Automation Platform を使用して、システムを望ましい状態に維持することもできます。

 

IaC への宣言型アプローチと命令型アプローチ

IaC へのアプローチには、宣言型と命令型の 2 つの方法があります。 

宣言型アプローチは、必要なリソースや備えておくべきプロパティといった、システムの望ましい状態を定義するもので、構成は IaC ツールが行います。 

また、宣言型アプローチでは、システムオブジェクトの現在の状態に関するリストも保持されるため、インフラストラクチャのテイクダウンの管理が単純になります。

それに対して、命令型アプローチは、望ましい設定を実現するために必要な特定のコマンドを定義するものであり、それらのコマンドは正しい順序で実行される必要があります。 

多くの IaC ツールは宣言型アプローチを使用しており、目的のインフラストラクチャを自動的にプロビジョニングします。望ましい状態に変更を加えると、宣言型の IaC ツールの場合、その変更はツールによって適用されます。命令型のツールの場合は、これらの変更の適用方法をユーザーが見極める必要があります。

IaC ツールは多くの場合、いずれのアプローチでも動作可能ですが、一方のアプローチが他方よりも使いやすくなっている傾向があります。

 

IaC のメリット

これまで、インフラストラクチャのプロビジョニングは時間とコストのかかる手動のプロセスでした。現在、インフラストラクチャ管理の対象はデータセンターの物理ハードウェア (もちろん、これらがコンポーネントとして使用される場合もあります) から仮想化コンテナクラウド・コンピューティングに移行しています。 

クラウド・コンピューティングでは、インフラストラクチャ・コンポーネントの数が増え、日常的にプロダクションにリリースされるアプリケーションが増加しており、インフラストラクチャのスピンアップ、スケールアップ、スケールダウンが頻繁に行えるようにする必要があります。IaC の手法を取り入れなければ、現在のインフラストラクチャの規模を管理することはますます困難になります。

IaC は、組織が IT インフラストラクチャのニーズを管理するのに役立つと同時に、一貫性を向上させ、エラーと手作業による設定を削減します。

メリット:

  • コスト削減
  • デプロイメントの高速化
  • エラーの減少 
  • インフラストラクチャの一貫性の向上
  • 構成ドリフトの排除
  • IaC ツールの実例

IaC を実現するためによく使用されるのが、サーバーの自動化および構成管理ツールです。IaC に特化したソリューションもあります。 

一般的なツールは以下の通りです。

  • Chef
  • Puppet
  • Red Hat Ansible Automation Platform
  • Saltstack
  • Terraform 
  • AWS CloudFormation

オペレーティングシステムとネットワークデバイスのプロビジョニング、アプリケーションのデプロイ、構成管理のための Ansible の使用方法を学びましょう

 

IaC はなぜ DevOps にとって重要なのか

IaC は、DevOps プラクティスと継続的インテグレーション/継続的デリバリー (CI/CD) の実装に重要な役割を果たします。IaC によって、開発者によるプロビジョニング作業の大部分が不要になり、開発者は、スクリプトを実行してインフラストラクチャを準備することができます。  

これにより、インフラストラクチャが利用可能になるまでアプリケーションのデプロイを待つことはなくなり、システム管理者が時間のかかる手作業のプロセスを管理することもなくなります。 

CI/CD は、統合、テスト、提供、デプロイへと至るアプリケーションライフサイクル全体を通じて継続的な自動化と継続的な監視に依存しています。 

環境を自動化するためには、一貫性が必要です。開発チームによるアプリケーションのデプロイや環境の構成と、運用チームによるデプロイと構成の方法が異なる場合、アプリケーションのデプロイの自動化は機能しません。

DevOps アプローチを通じて開発チームと運用チームを連携させることで、エラー、手動のデプロイ、不整合が少なくなります。 

開発チームも運用チームも、同じアプリケーション・デプロイメントの記述を使用して DevOps アプローチをサポートできるため、IaC によって開発と運用を連携することができます。

本番環境を含むすべての環境で同じデプロイメントプロセスを使用する必要があります。IaC は、使用されるたびに同じ環境を生成します。

また、IaC によって、自動的に再現できない独自の設定で個々のデプロイメント環境を維持する必要がなくなり、本番環境の一貫性が確保されます。

DevOps のベストプラクティスは、IaC のインフラストラクチャにも適用されます。インフラストラクチャは、ソフトウェア開発時にアプリケーションが通過するのと同じ CI/CD パイプラインを通過して、インフラストラクチャ・コードに同じテストとバージョン管理を適用します。

 

Red Hat の自動化を選ぶ理由

組織規模の自動化手法を構築することにより、IT プロセスだけでなく、テクノロジー、チーム、そして組織そのものを自動化することができます。 

Red Hat Ansible Automation Platform には、Playbook、ビジュアル・ダッシュボード、分析機能など、企業全体での自動化の導入に必要なツールがすべて揃っています。

YAML で作成された Ansible Playbook は、システムの望ましい状態を記述します。これらは通常、ソース管理で保持されます。Red Hat Ansible Automation Platform は、現在の状態に関係なく、システムを望ましい状態にする作業を行います。 

Ansible Automation Platform は、インストール、アップグレード、日常の管理を繰り返し可能で信頼性の高いものにします。

また、Red Hat Ansible Automation Platform は Forrester Research により 2020 年第 3 四半期の Forrester Wave™: Infrastructure Automation Platforms でリーダーに選出されています。

適切な自動化ソリューションを導入すれば、新しいアプリケーションやサービスの迅速な導入、IT インフラストラクチャの効率的な管理、アプリケーション開発の生産性向上が可能になります。

自動化に必要なプラットフォーム

Red Hat Ansible Automation Platform

大規模な IT 自動化を構築するためのシンプルなエージェントレス・プラットフォーム。ビジュアル・ダッシュボードやロールベースのアクセス制御などにより IT インフラストラクチャを一元的に制御できます。

自動化についてさらに詳しく知る