DevOpsの実装方法:Microsoft AzureとAzure Resource Managerを使用したコードとしてのインフラストラクチャ





みなさんこんにちは! Vorlon.JSチームによる記事「How We Deployed DevOps」の次号。 Vorlon.JSはnode.jsベースのツールで、Web開発者が、特にモバイルシステムや組み込みシステムで、Webアプリケーションをリモートでテスト、制御、デバッグする便利な方法を提供します。 MSDNのブログで、チームはVorlon.JSの作業を整理する際のDevOpsプラクティスの段階的な実装と、日常のタスクを解決するためのツールの選択について説明しました。 Vorlon.JSはオープンソースプロジェクトです。
Microsoftは、DevOpsプラクティスを実装するために使用できる多数のツールを提供しています。これらのツールの一部については、このシリーズで説明します。



サイクルコンテンツ:



Infrastructure-as-a-Codeとは何ですか?



Infrastructure-as-a-codeは、開発から本番までのライフサイクルのすべての段階でアプリケーション展開環境を作成および管理する方法を改善する機会です。 これにより、環境の最終的な望ましい状態を記述(宣言)できます。



4つのサーバーのWebファームで実行する必要があるアプリケーションを展開するとします。



アプリケーションは、Azure SQLデータベースからデータを保存および取得し、Redis Cacheサービスを使用してロード時間を最適化します。 Infrastructure-a-a-codeアプローチでは、環境全体をべき等の方法で作成するスクリプトを作成できます(つまり、繰り返し実行しても同じ結果になります)。



別の重要な機能:インフラストラクチャをスクリプトで記述すると、そのバージョンを制御できます。 したがって、ソースコードリポジトリを使用すると、開発者と運用チームのやり取りを改善できます。つまり、共通のツールになります。 ソースコードリポジトリでインフラストラクチャスクリプトのバージョンを管理することにより、たとえば、エラーを修正するために、アプリケーションとその環境の任意のバージョンをいつでも復元できます。



Infrastructure-as-a-codeおよびMicrosoft Azure



Microsoft Azureでコードとしてインフラストラクチャを使用する方法は簡単です。Azureリソースマネージャーと展開テンプレートを使用します。



Azure Resource Managerとリソースグループとは何ですか?



Azure Resource Manager(ARM)は、その名が示すとおり、Azureで作成されたすべてのリソースの管理サービスです。 Microsoft Azureの最初のバージョンでは、ARMが存在しなかったため、アプリケーションのサービスを作成する際に、開発者は問題に直面しました。 マルチリソースアプリケーションの管理は簡単ではありませんでした。



ARMはリソースプロバイダーと連携します。 各リソースプロバイダー(Microsoft.Compute、Microsoft.Storage、Microsoft.Networkなど)を使用して基本リソースを作成し、ARMがすべてのプロバイダーを管理します。



すべてではありませんが、多くのサービスがARMに移植されています。 それらのいくつかは複製されます。 たとえば、Azureポータルでは、クラシックプロバイダーを使用して仮想マシンを作成したり、ARMで動作する新しいプロバイダーを使用したりできます。 新しいインフラストラクチャを作成するには、可能であればARMプロバイダーを使用することをお勧めします。







ARMを使用する場合、作成されたすべてのリソースはリソースグループに配置されます。 このエンティティは、Microsoft Azureでリソースをグループ化するためのものです。 リソースグループは、タグの使用や、個々のサービスではなくアプリケーション全体の請求データの取得など、多くの便利な新機能を提供します。



ARMを使用して新しいリソースを展開する場合、最初に新しいリソースが割り当てられるリソースグループを作成するか、既存のリソースグループを使用する必要があります。 もちろん、1つのリソースグループのリソースを異なるデータセンターに展開できます。



古いプロバイダーと比較したARMのもう1つの利点:JSOファイルを使用してリソースのグループを記述でき、ARMはリソースを順番にではなく並行して、つまりはるかに高速に展開します。



Vorlon.JSプロジェクトのDeploymentフォルダーには、開発、テスト、および運用環境のインフラストラクチャを展開するために使用される多数のスクリプトが含まれています。 実際、開発環境とテスト環境で異なるパラメーターファイルを使用して同じスクリプト(azuredeploy.json)を使用したため、環境ごとに各リソースを構成できました。







他の2つの環境では必要ないAzure Web Apss機能(展開スロット)を使用するため、他の展開テンプレートが運用環境に使用されます。



さらに、Deploymentフォルダーには、リリース管理プロセスで使用されるいくつかのPowerShellスクリプトが含まれています。 これについては、今後の投稿で説明します。



Azure Resource Managerとリソースグループの詳細については、 こちらのドキュメントをご覧ください



Azure Resource Managerとリソースグループの使用を開始する



おそらく、 Vorlon.JSプロジェクトのARMテンプレートは読みやすい資料ではありませんが、ARMでの作業は非常に簡単であることを知ってほしいです。



まず、 このGitHubリポジトリには多くのテンプレートがあり、すぐに使い始めることができます。 それらを読んだり、変更したり、デプロイを試みたりすることもできます。そのためには、目的のテンプレートのreadmeセクションにある[Azureにデプロイ]ボタンをクリックします。 Azureポータルに移動します。ここで必要なのは、パラメーターを入力し、[OK]をクリックして展開を開始するだけです。







Visual StudioおよびMicrosoft Azure SDK / Toolsの最新バージョンには、Azure Resource Managerテンプレートを操作するためのユーザーインターフェイスが含まれています。



最初に、Visual StudioでAzureリソースグループプロジェクトを作成します。







ウィザードのプロンプトは、リソースグループの作成に役立ちます。 たとえば、WebアプリケーションとAzure SQLデータベースで構成されるリソースグループを作成できます。







Visual Studioは次のソリューションを生成します。







Scriptsフォルダーには、Azureでリソースグループをデプロイするために使用できるPowerShellスクリプトがあります。



Templatesフォルダーには、2つのJSONファイルが含まれています。インフラストラクチャの説明を含むAzure Resource Managerテンプレートと、スクリプトに必要なパラメーターを含むパラメーターファイルです。 異なる環境に合わせて、2番目のファイルの複数のコピーを作成できます。



Toolsフォルダーには、実行可能ファイルAzCopy.exeが含まれています。 これは、展開中にAzureにコンテンツ(アプリケーションパッケージやデータベースバックアップなど)をアップロードできるコピーロボットのAzureバージョンです。



ARMテンプレートを開くと、JSONアウトラインウィンドウが横に表示されます。







このウィンドウは、テンプレートをナビゲートするために使用されます。リストでリソースを選択すると、その表現がJSONファイルで強調表示されます。



さらに、このウィンドウでは、テンプレートにリソースを追加できます。 リソースノードを右クリックして、[新しいリソースの追加]を選択します。







ウィザードが再び開き、テンプレートに多くのリソースを追加できます。







ご覧のとおり、作成されたリソースが他のリソースに依存している場合、システムはそれらのリソースも作成することを提案します。



準備されたテンプレートは、Microsoft Azureに展開できます。 テンプレートを右クリックして、[新しい展開]を選択します。







Azureの資格情報とリソースグループの名前を入力し、グループを作成するサブスクリプションを選択します。



別の方法があります-ScriptsフォルダーからPowerShellスクリプトを開いて実行するには:







Vorlon.JSでは、Visual Stusio Team Servicesを使用してアプリケーションのリリースを自動的に準備するために使用されるパターンを定義しました。 これらのテンプレートは、GitHubで直接表示できます: https : //github.com/MicrosoftDX/Vorlonjs/tree/dev/DeploymentTools



アプリケーションのソースコードを使用して、インフラストラクチャをコードテンプレートの形式で保持することをお勧めします。依存するインフラストラクチャと同時にアプリケーションバージョンを管理できます。 たとえば、ユーザーが古いバージョンでエラーを報告したとします。 ソースコードだけでなくインフラストラクチャテンプレートもある場合は、エラーのあるバージョンを抽出し、数分で環境を復元し、デバッグを開始できます。



これで、Microsoft Azureでコードとしてのインフラストラクチャアプローチを使用する基本を理解できました。



このシリーズの次の記事では、Visual Studio Team ServicesのAzureリソースマネージャーとリリース管理テンプレートを使用して、ビルドが正常に完了した直後に環境を自動的に準備し、アプリケーションをデプロイする方法を学習します。



連絡を取り合いましょう!



著者について





Julien Coriolandは、フランスのマイクロソフトのテクノロジーエバンジェリストです。 主な作業分野は、Microsoft Azureアプリケーションプラットフォームです。 彼は開発者がクラウドアプリケーションを作成するのを手伝い、Vorlon.JSツール開発グループの一員でもあり、DevOpsプラクティスの実装を支援しています。



Vorlon.JSプロジェクトの開発者であるJulien CoriolandとEttiene Margraffは、DevCon 2016カンファレンスで講演者となり、ライブプラクティスの実装経験についてのみ話し、これらのプロセスを自分で構築する機会を提供します。手。



この一連の出版物またはDevOps方法論について質問がある場合は、Twitter経由で著者に直接連絡できます: twitter.com/jcorioland



便利なリンク






All Articles