次の方法で共有


チュートリアル: ARM テンプレートと Azure Pipelines の継続的インテグレーション

前の チュートリアルでは、リンクされたテンプレートをデプロイします。 このチュートリアルでは、Azure Pipelines を使用して、Azure Resource Manager テンプレート (ARM テンプレート) プロジェクトを継続的にビルドしてデプロイする方法について説明します。

Azure DevOps は、チームをサポートするための開発者サービスを提供して、作業の計画、コード開発との共同作業、およびアプリケーションの構築と展開を行います。 開発者は、Azure DevOps Services を使用してクラウドで作業できます。 Azure DevOps には、Web ブラウザーまたは IDE クライアントからアクセスできる統合された機能セットが用意されています。 Azure Pipelines は、これらの機能の 1 つです。 Azure Pipelines は、完全に機能する継続的インテグレーション (CI) および継続的デリバリー (CD) サービスです。 お好みの Git プロバイダーで動作し、ほとんどの主要なクラウド サービスにデプロイできます。 その後、Microsoft Azure、Google Cloud Platform、または Amazon Web Services へのコードのビルド、テスト、デプロイを自動化できます。

プロジェクト名を選択します。 チュートリアルを実行するときは、 ARMPipelineProj のいずれかをプロジェクト名に置き換えます。 このプロジェクト名は、リソース名を生成するために使用されます。 リソースの 1 つはストレージ アカウントです。 ストレージ アカウント名の長さは 3 ~ 24 文字で、数字と小文字のみを使用する必要があります。 名前は一意である必要があります。 テンプレートでは、ストレージ アカウント名は ストア が追加されたプロジェクト名であり、プロジェクト名は 3 ~ 11 文字にする必要があります。 そのため、プロジェクト名はストレージ アカウント名の要件を満たし、11 文字未満である必要があります。

このチュートリアルに含まれるタスクは次のとおりです。

  • GitHub リポジトリを準備する
  • Azure DevOps プロジェクトの作成
  • Azure パイプラインを作成する
  • パイプラインのデプロイを確認する
  • テンプレートを更新して再デプロイする
  • リソースをクリーンアップする

Azure サブスクリプションをお持ちでない場合は、始める前に無料アカウントを作成してください。

[前提条件]

この記事を完了するには、以下が必要です。

GitHub リポジトリを準備する

GitHub は、Resource Manager テンプレートを含むプロジェクトのソース コードを格納するために使用されます。 サポートされているその他のリポジトリについては、 Azure DevOps でサポートされているリポジトリを参照してください。

GitHub リポジトリを作成する

GitHub アカウントをお持ちでない場合は、「 前提条件」を参照してください。

  1. GitHub にサインインします。

  2. 右上隅にあるアカウント イメージを選択し、[ リポジトリ] を選択します。

    Azure Resource Manager Azure DevOps Azure Pipelines 用の GitHub リポジトリを作成するスクリーンショット。

  3. [ 新規] を選択し、緑色のボタンを選択します。

  4. [ リポジトリ名] に、リポジトリ名を入力します。 たとえば、 ARMPipeline-repo などですARMPipeline は必ずプロジェクト名に置き換えてください。 このチュートリアルでは、[ パブリック ] または [ プライベート ] を選択できます。 次に、[ リポジトリの作成] を選択します。

  5. URL を書き留めます。 リポジトリの URL は、 https://github.com/[YourAccountName]/[YourRepositoryName]という形式です。

このリポジトリは、 リモート リポジトリと呼ばれます。 同じプロジェクトの各開発者は、独自の ローカル リポジトリを複製し、変更をリモート リポジトリにマージできます。

リモート リポジトリを複製する

  1. Git Shell または Git Bash を開きます。 「前提条件」を参照してください。

  2. 現在のフォルダーが GitHub であることを確認します。

  3. 次のコマンドを実行します。

    git clone https://github.com/[YourAccountName]/[YourGitHubRepositoryName]
    cd [YourGitHubRepositoryName]
    mkdir create_web_app
    cd create_web_app
    pwd
    

    [YourAccountName]を GitHub アカウント名に置き換え、[YourGitHubRepositoryName]を前の手順で作成したリポジトリ名に置き換えます。

create_web_app フォルダーは、テンプレートが格納されているフォルダーです。 pwd コマンドは、フォルダー パスを表示します。 パスは、次の手順でテンプレートを保存する場所です。

クイック スタート テンプレートをダウンロードする

テンプレートを作成する代わりに、テンプレートをダウンロードし、 create_web_app フォルダーに保存することができます。

フォルダー名とファイル名は、変更されずにそのままパイプラインで使用されます。 これらの名前を変更する場合は、パイプラインで使用される名前を更新する必要があります。

テンプレートをリモート リポジトリにプッシュする

azuredeploy.json がローカル リポジトリに追加されました。 次に、テンプレートをリモート リポジトリにアップロードします。

  1. Git Shell または Git Bash が開かっていない場合は開きます。

  2. ローカル リポジトリ内の create_web_app フォルダーにディレクトリを変更します。

  3. azuredeploy.json ファイルがフォルダー内にあるかどうかを確認します。

  4. 次のコマンドを実行します。

    git add .
    git commit -m "Add web app templates."
    git push origin main
    

    LF に関する警告が表示される場合があります。 警告は無視してかまいません。 main はメイン ブランチです。 通常、各更新ごとにブランチを作成します。 このチュートリアルを簡略化するには、メイン ブランチを直接使用します。

  5. ブラウザーから GitHub リポジトリを参照します。 URL は https://github.com/[YourAccountName]/[YourGitHubRepository] です。 create_web_app フォルダーとフォルダー内の 2 つのファイルが表示されます。

  6. azuredeploy.json を選択してテンプレートを開きます。

  7. Raw ボタンを選択します。 URL は https://raw.githubusercontent.comで始まります。

  8. URL のコピーを作成します。 この値は、チュートリアルの後半でパイプラインを構成するときに指定する必要があります。

ここまで、GitHub リポジトリを作成し、テンプレートをリポジトリにアップロードしました。

DevOps プロジェクトを作成する

次の手順に進む前に、DevOps 組織が必要です。 お持ちでない場合は、「 前提条件」を参照してください。

  1. Azure DevOps にサインインします。

  2. 左側から DevOps 組織を選択し、[ 新しいプロジェクト] を選択します。 プロジェクトがない場合は、プロジェクトの作成ページが自動的に開きます。

  3. 次の値を入力します。

    Azure Resource Manager Azure DevOps Azure Pipelines 用の Azure DevOps プロジェクトの作成のスクリーンショット。

    • プロジェクト名: プロジェクト名を入力します。 チュートリアルの最初に選択したプロジェクト名を使用できます。
    • 可視性: [プライベート] を選択します。

    その他のプロパティには既定値を使用します。

  4. を選択してを作成します。

プロジェクトを Azure にデプロイするために使用するサービス接続を作成します。

  1. 左側のメニューの下部にある [プロジェクトの設定 ] を選択します。

  2. [パイプライン] の下にある [サービス接続] を選択します。

  3. [ サービス接続の作成] を選択し、[ Azure Resource Manager] を選択して、[ 次へ] を選択します。

  4. [ サービス プリンシパル (自動)] を選択し、[ 次へ] を選択します。

  5. 次の値を入力します。

    • スコープ レベル: [サブスクリプション] を選択します。
    • サブスクリプション: サブスクリプションを選択します。
    • リソース グループ: 空白のままにします。
    • 接続名: 接続名を入力します。 たとえば、 ARMPipeline-conn です。 この名前を書き留めます。パイプラインの作成時に名前が必要です。
    • すべてのパイプラインにアクセス許可を付与します。 (選択)
  6. 保存 を選択します。

パイプラインを作成する

ここまでは、次のタスクを完了しました。 GitHub と DevOps に慣れているため、前のセクションをスキップする場合は、続行する前にタスクを完了する必要があります。

  • GitHub リポジトリを作成し、テンプレートをリポジトリ内の create_web_app フォルダーに保存します。
  • DevOps プロジェクトを作成し、Azure Resource Manager サービス接続を作成します。

テンプレートをデプロイするステップを含むパイプラインを作成するには:

  1. 左側 メニューから [パイプライン] を選択します。

  2. [パイプラインを作成] を選択します。

  3. [ 接続 ] タブで、 GitHub を選択します。 求められたら、GitHub の資格情報を入力し、指示に従います。 次の画面が表示される場合は、[ リポジトリの選択のみ] を選択し、[ 承認] と [インストール] を選択する前にリポジトリが一覧に表示されていることを確認します。

    Azure Resource Manager Azure DevOps Azure Pipelines のリポジトリの選択のスクリーンショット。

  4. [ 選択 ] タブで、リポジトリを選択します。 既定の名前は [YourAccountName]/[YourGitHubRepositoryName] です。

  5. [ 構成 ] タブで、[ スターター パイプライン] を選択します。 2 つのスクリプト ステップを含 むazure-pipelines.yml パイプライン ファイルが表示されます。

  6. .yml ファイルから 2 つのスクリプト ステップを削除します。

  7. カーソルをステップ:の後の行に移動します。

  8. 画面の右側にある [アシスタントの表示 ] を選択して 、[タスク ] ウィンドウを開きます。

  9. ARM テンプレートのデプロイを選択します。

  10. 次の値を入力します。

    • deploymentScope: リソース グループを選択します。 スコープの詳細については、「 デプロイ スコープ」を参照してください。
    • Azure Resource Manager 接続: 前に作成したサービス接続名を選択します。
    • サブスクリプション: ターゲット サブスクリプション ID を指定します。
    • アクション: [リソース グループの作成または更新 ] アクションを選択すると、2 つのアクション (1) が実行されます。 新しいリソース グループ名が指定されている場合は、リソース グループを作成します。2. 指定したテンプレートをデプロイします。
    • [リソース グループ] :新しいリソース グループの名前を入力します。 たとえば、 ARMPipeline-rg です。
    • 場所: リソース グループの場所 ( 米国中部など) を選択します。
    • テンプレートの場所: ファイルの URL を選択します。つまり、タスクは URL を使用してテンプレート ファイルを検索します。 relativePath はメイン テンプレートで使用され、relativePath は URI ベースのデプロイでのみサポートされるため、ここでは URL を使用する必要があります。
    • テンプレート リンク: [GitHub リポジトリの準備 ] セクションの最後に取得した URL を入力します。 これは https://raw.githubusercontent.com で始まります。
    • [テンプレート パラメーター] リンク: このフィールドは空白のままにします。 パラメーター値は、テンプレート パラメーターのオーバーライドで指定 します
    • テンプレート パラメーターをオーバーライドする: -projectName [EnterAProjectName]を入力します。
    • デプロイ モード: [増分] を選択します。
    • デプロイ名: DeployPipelineTemplate と入力します。 [デプロイ名] を表示する前に、[詳細設定] を選択します。

    Azure DevOps Azure Pipelines に必要な値が入力された ARM テンプレートのデプロイ ページのスクリーンショット。

  11. [] を選択し、[] を追加します。

    タスクの詳細については、「Azure リソース グループのデプロイ タスク」および「Azure Resource Manager テンプレートのデプロイ タスク」を参照してください。

    .yml ファイルは次のようになります。

    Azure DevOps Azure Pipelines のパイプライン YAML を確認するというタイトルの新しいパイプラインが表示された [レビュー] ページのスクリーンショット。

  12. [保存および実行] を選択します。

  13. [保存して実行] ウィンドウで[保存して実行]を選択し、もう一度実行します。 YAML ファイルのコピーが接続されたリポジトリに保存されます。 リポジトリを参照すると、YAML ファイルを確認できます。

  14. パイプラインが正常に実行されたことを確認します。

    Azure Resource Manager Azure DevOps Azure Pipelines YAML ファイルのスクリーンショット。

デプロイメントを確認する

  1. Azure portal にサインインします。
  2. リソース グループを開きます。 名前は、パイプライン YAML ファイルで指定した名前です。 作成されたストレージ アカウントが 1 つ表示されます。 ストレージ アカウント名は ストアで始まります。
  3. ストレージ アカウント名を選択して開きます。
  4. [プロパティ] を選択します。 レプリケーションローカル冗長ストレージ (LRS) であることに注意してください。

更新と再デプロイ

テンプレートを更新し、変更をリモート リポジトリにプッシュすると、パイプラインによってリソース (この場合はストレージ アカウント) が自動的に更新されます。

  1. Visual Studio Code または任意のテキスト エディターでローカル リポジトリから linkedStorageAccount.json を開きます。

  2. storageAccountTypedefaultValueStandard_GRSに更新します。 次のスクリーンショットを参照してください。

    Azure Resource Manager Azure DevOps Azure Pipelines の YAML ファイルの更新のスクリーンショット。

  3. 変更を保存します。

  4. Git Bash/Shell から次のコマンドを実行して、リモート リポジトリに変更をプッシュします。

    git pull origin main
    git add .
    git commit -m "Update the storage account type."
    git push origin main
    

    最初のコマンド (pull) は、ローカル リポジトリをリモート リポジトリと同期します。 パイプライン YAML ファイルは、リモート リポジトリにのみ追加されました。 pull コマンドを実行すると、YAML ファイルのコピーがローカル ブランチにダウンロードされます。

    4 番目のコマンド (push) は、変更した linkedStorageAccount.json ファイルをリモート リポジトリにアップロードします。 リモート リポジトリのメイン ブランチが更新されると、パイプラインが再度起動されます。

変更を確認するには、ストレージ アカウントの Replication プロパティを確認します。 デプロイの確認を参照してください。

リソースをクリーンアップする

Azure リソースが不要になったら、リソース グループを削除して、デプロイしたリソースをクリーンアップします。

  1. Azure portal で、左側のメニューから [リソース グループ ] を選択します。
  2. [名前 でフィルター] フィールドにリソース グループ名を入力します。
  3. リソース グループ名を選択します。
  4. 上部のメニューから [ リソース グループの削除 ] を選択します。

GitHub リポジトリと Azure DevOps プロジェクトを削除することもできます。

次のステップ

これで、この Resource Manager テンプレートのデプロイ チュートリアルが完了しました。 フィードバック セクションにコメントや提案がある場合は、お知らせください。 よろしくお願いいたします。 テンプレートに関するより高度な概念に進む準備ができました。 次のチュートリアルでは、デプロイするリソースの定義に役立つテンプレート リファレンス ドキュメントの使用について詳しく説明します。