Azure の仮想マシンでインフラストラクチャ自動化ツールを使用する

適用対象: ✔️ Linux VM ✔️ Windows VM ✔️ フレキシブル スケール セット ✔️ 均一スケール セット

Azure の仮想マシン (VM) を一貫した方法で大規模に作成および管理するには、一般的に、何らかの形で自動化することが必要です。 Azure インフラストラクチャのデプロイと管理のライフサイクル全体を自動化できるツールやソリューションはたくさんあります。 この記事では、Azure で使用できるインフラストラクチャ自動化ツールの一部を紹介します。 これらのツールは、一般的に、次のいずれかのアプローチに適しています。

Terraform

Terraform は、単一のテンプレート形式言語 (HashiCorp 構成言語 (HCL)) で、Azure インフラストラクチャ全体を定義して作成できる自動化ツールです。 Terraform を使用して、特定のアプリケーション ソリューションのネットワーク、ストレージ、および VM リソースを作成するプロセスを自動化するテンプレートを定義します。 他のプラットフォーム用の既存の Terraform テンプレートを Azure で使用することで、Azure Resource Manager テンプレートに変換せずに、一貫性を確保し、インフラストラクチャのデプロイを簡略化することができます。

具体的には、次の方法を学習します。

Azure Automation

Azure Automation では、Runbook を使用して、ターゲットの VM で一連のタスクを処理します。 Azure Automation は、インフラストラクチャを作成するためではなく、既存の VM を管理するために使用します。 Azure Automation は、Linux と Windows の両方の VM で、および Hybrid Runbook Worker を使用してオンプレミスの仮想または物理マシンで実行できます。 Runbook は、GitHub などのソース管理リポジトリに格納することができます。 これらの Runbook は、手動で、または定義されたスケジュールに基づいて実行できます。

また、Azure Automation には、特定の VM セットの構成方法の定義を作成できる Desired State Configuration (DSC) サービスも用意されています。 DSC により、必要な構成が適用され、VM の一貫性が維持されます。 Azure Automation DSC は、Windows マシンと Linux マシンの両方で動作します。

具体的には、次の方法を学習します。

Azure DevOps Services

Azure DevOps Services は、コードの共有と追跡、自動ビルドの使用、完全な継続的インテグレーションと開発 (CI/CD) パイプラインの作成に役立つ一連のツールです。 Azure DevOps Services は、Visual Studio や他のエディターと統合して、簡単に使用できるようにします。 Azure DevOps Services では、Azure VM を作成して構成した後、VM にコードをデプロイすることもできます。

各項目の詳細情報

Azure Resource Manager テンプレート

Azure Resource Manager は、Azure のデプロイおよび管理サービスです。 Azure サブスクリプション内のリソースを作成、更新、および削除できる管理レイヤーを提供します。 アクセス制御、ロック、タグなどの管理機能を使用して、デプロイ後にリソースを保護および整理します。

具体的には、次の方法を学習します。

Bicep

Bicep は、宣言型の構文を使用して Azure リソースをデプロイするドメイン固有言語 (DSL) です。 Bicep ファイル内で、Azure にデプロイするインフラストラクチャを定義し、そのファイルを開発ライフサイクル全体にわたって使用して、インフラストラクチャを繰り返しデプロイします。 リソースは一貫した方法でデプロイされます。

クイックスタートを開始します。

cloud-init

cloud-Init は、Linux VM を初回起動時にカスタマイズするために広く使用されているアプローチです。 cloud-init を使って、パッケージをインストールしてファイルを書き込んだり、ユーザーとセキュリティを構成したりすることができます。 cloud-init は初回起動プロセスの間に呼び出されるので、構成を適用するために追加の手順や必要なエージェントはありません。 #cloud-config ファイルの形式を正しく設定する方法について詳しくは、cloud-init のドキュメント サイトをご覧ください。 #cloud-config ファイルは、base64 でエンコードされたテキスト ファイルです。

cloud-init はディストリビューション全体でも有効です。 たとえば、パッケージをインストールするときに apt-get installyum install は使用しません。 代わりに、cloud-init ではインストールするパッケージの一覧をユーザーが定義できます。 cloud-init によって、選択したディストリビューションに対してネイティブのパッケージ管理ツールが自動的に使用されます。

Microsoft は、動作保証済み Linux ディストリビューションのパートナーと協力して、cloud-init 対応のイメージを Azure Marketplace で利用できるようにする作業を行っています。 これらのイメージでは、cloud-init のデプロイと構成が、VM および Virtual Machine Scale Sets とシームレスに動作するようになります。 Azure の cloud-init について詳しくは、次のページをご覧ください。

PowerShell DSC

PowerShell Desired State Configuration (DSC) は、ターゲット マシンの構成を定義するための管理プラットフォームです。 DSC は、Open Management Infrastructure (OMI) サーバーを介して Linux で使用することもできます。

DSC 構成では、マシンにインストールするものと、ホストを構成する方法を定義します。 Local Configuration Manager (LCM) エンジンは、プッシュされた構成に基づいて要求されたアクションを処理する各ターゲット ノードで実行されます。 プル サーバーは、中央ホストで実行され、DSC 構成と関連リソースを格納する Web サービスです。 プル サーバーは、各ターゲット ホスト上の LCM エンジンと通信して、必要な構成を提供し、コンプライアンスについて報告します。

具体的には、次の方法を学習します。

Azure カスタム スクリプト拡張機能

Linux または Windows 用の Azure カスタム スクリプト拡張機能は、Azure VM でスクリプトをダウンロードして実行します。 拡張機能は、VM を作成するときや、VM の使用中にいつでも使用できます。

スクリプトは、Azure Storage または GitHub リポジトリなどの公開されている場所からダウンロードできます。 カスタム スクリプト拡張機能を使用すると、ソース VM で実行されるスクリプトを任意の言語で作成できます。 これらのスクリプトを使用して、アプリケーションをインストールしたり、必要に応じて VM を構成したりすることができます。 資格情報をセキュリティで保護するために、パスワードなどの機密情報を保護された構成に格納することができます。 これらの資格情報は、VM 内でのみ復号化されます。

具体的には、次の方法を学習します。

Ansible

Ansible は、構成の管理、VM の作成、またはアプリケーションのデプロイ用の自動化エンジンです。 Ansible では、ターゲット マシンを認証および管理するために、通常は SSH キーによる、エージェントレス モデルを使用します。 構成タスクはプレイブックで定義し、特定のタスクを実行するために利用できるいくつかの Ansible モジュールが用意されています。 詳細については、「How Ansible works (Ansible のしくみ)」を参照してください。

具体的には、次の方法を学習します。

Chef

Chef は、インフラストラクチャを構成、デプロイ、管理する方法を定義するのに役立つ自動化プラットフォームです。 コンポーネントとして、インフラストラクチャではなくアプリケーションのライフサイクル自動化のための Chef Habitat のほか、セキュリティとポリシー要件へのコンプライアンスの自動化に役立つ Chef InSpec があります。 Chef Client はターゲット マシンにインストールし、1 つ以上の中央 Chef Server で構成を保存および管理します。 詳細は、「An Overview of Chef (シェフの概要)」を参照してください。

具体的には、次の方法を学習します。

Puppet

Puppet は、アプリケーションの配信とデプロイのプロセスを処理する、エンタープライズ対応の自動化プラットフォームです。 エージェントは、ターゲット マシンにインストールし、Azure インフラストラクチャと VM の目的の構成を定義したマニフェストを Puppet Master が実行できるようにします。 Puppet は、Jenkins や GitHub などの他のソリューションと統合して、DevOps ワークフローを強化できます。 詳細については、「How Puppet works (Puppet のしくみ)」を参照してください。

具体的には、次の方法を学習します。

Packer

Packer は、Azure でカスタム VM イメージを作成するときのビルド プロセスを自動化します。 Packer を使用して、OS を定義し、特定のニーズに合わせて VM をカスタマイズする構成後スクリプトを実行します。 構成後、VM は管理対象ディスク イメージとしてキャプチャされます。 Packer は、ソース VM、ネットワーク、ストレージ リソースを作成し、構成スクリプトを実行して、VM イメージを作成するプロセスを自動化します。

具体的には、次の方法を学習します。

Jenkins

Jenkins は、アプリケーションのデプロイとテスト、コード配信用の自動化されたパイプラインの作成に役立つ継続的インテグレーション サーバーです。 Jenkins のコア プラットフォームを拡張するプラグインは多数あります。また、webhook を介して他のさまざまな製品やソリューションと統合することもできます。 Azure VM に手動で Jenkins をインストールしたり、Docker コンテナー内から Jenkins を実行したり、事前に構築された Azure Marketplace イメージを使用したりできます。

具体的には、次の方法を学習します。

次のステップ

Azure でインフラストラクチャ自動化ツールを使用する方法はたくさんあります。 ニーズや環境に最適なソリューションを自由に使用できます。 Azure に組み込まれているいくつかのツールを使用したり、試したりするには、Linux または Windows VM のカスタマイズを自動化する方法を参照してください。