🫠

Azure devops_コード記載/デプロイの手引き

に公開

はじめに

備忘録としての投稿のため、読みづらいものになるかと思います。
Azure devopsを始めるにあたり、当方が躓いて思ったことを記事にします。

前提事項

・VScodeをインストール済
・Gitインストール済
・当方の記事"Azure devops のチュートリアル①〜③"を一読 or 実施済

記事リンク
https://zenn.dev/kararagi2/articles/150e0d2118c0ab
https://zenn.dev/kararagi2/articles/98757204578820
https://zenn.dev/kararagi2/articles/b5aa6af49fbb78

コードデプロイの仕組み

1組3ファイルでデプロイ_deploy.yml ⇒ template.yml ⇒ template.json
※"Pipeline > variables" でリソースグループとparameter.jsonを指定する

当方的なチェックシート

1.サブスクリプションの誤記載がないか
2.パスの誤記載がないか (冒頭に不要な"/"が入ってたり、そもそもパスが違う場合など)
3.オブジェクト{}、配列[] のどちらの記載であるか (配列では"XXX[0].XXX"などの記載となる)
4.GUIでコードと同等のリソースを作成できるか (コードでしか設定不可もあり要注意)
5.コード内のpropertyやparameterが存在しているか
6.リソースの特性で共存できない設定がされていないか (エラーメッセージに書いてある場合あり)
7.デプロイ後にポータルで何かメッセージ出ていないか (サポート終了などの場合あり)
8.Pipelineでエラーメッセージが出ていてもデプロイされていないか
9.ARMのみで再現難しいものはコードで対応できそうか (ARMのみだと限界ありそう)

コマンドを使用する記載

AzCli

- task: AzureCLI@2
  displayName: Setting
  inputs:
  azureSubscription: 'XXX'
  scriptType: ps
  scriptLocation: inLineScript
  inlineScript: |
    az xxxxx ・・・・・・・・・

PowerShell

- task: AzurePowerShell@4
  displayName: Setting
  inputs:
    azureSubscription: 'XXX'
    scripType: inLineScript
    azurePowerShellVersion: latestVersion
    inlineScript: |
      Set-Azxxxxx ・・・・・・・・・

Bash

- task: Bash@3
  displayName: Setting
  env:
    BASH_ENV: '~/.profile'
  inputs:
    targetType: 'inline'
    script: |
      cd /var/tmp
      rm -rf xxxxx・・・・・

よく使用した記載

パラメーター等

"[parameters('XXX').XXX.name]"

リソースID

"[concat(resourceId(parameters('XXX').ENVIRONMENT.resourceGrroups, 'Microsoft.Network/virtualnetworks',parameters('XXX').VNET.name), '/subnets/' , parameters('XXX').VNET.subnetname)]"

配列[]での複数記載

"properties":{
    "networkAcls":{
        "networkRules":[
             {
                "rules":{
                    "rule1":"/subsucription/XXX/resoucegroup/XXX/・・・",
                    "rule2":"/subsucription/XXX/resoucegroup/XXX/・・・"
          }
        }
      ]
        }

配列[]からの引用記載

"[concat(parameters('XXX').BLOB.properties.networkAcls.networkRules[0].rules.rule1]"

使用したVScode拡張機能

.NET Install Tool
Azure Resource Manager (ARM) Tools
Git Graph
Git History
Git Lens
Japanese Language Pack for Visual Studio Code
vscode-icons

感想

オブジェクト{}と配列[]が混ざってくると初めてdevops触る人には厳しいものがある、当方は知識がなく結構な苦戦を強いられた・・・

GUIだけで出来ない設定(例:Loganalyticsワークスペースのカスタムテーブルの作成など)は、割とAzureではあるイメージなので公式ドキュメントも見ないといけない。(公式ドキュメントは読みづらいので億劫ではある)

とは言いつつもデプロイしてエラーを繰り返すごとに勘所みたいなものやエラーメッセージを見慣れてくるので数を熟すのが大事と改めて当方は実感しました。

おまけ

当方が印象に残り且つ結構に手詰まりになった記載を載せておきます。
下記の記載が完成して、診断設定ができたときは達成感より疲れが先行しましたね・・・

診断設定_PowerShell

New-AzDiagnosticSetting
    -ResourceId $resourceId
    -StorageAccountId $storageAccountId
    -WorkspaceId $workspaceId
    -name $diaglogname
    -Log @(
        New-AzDiagnosticsSettingLogSettingsObject -Enabled $True -Category "kube-apiserver"
        New-AzDiagnosticsSettingLogSettingsObject -Enabled $True -Category "kube-controller-manager"
        New-AzDiagnosticsSettingLogSettingsObject -Enabled $True -Category "kube-scheduler"
        New-AzDiagnosticsSettingLogSettingsObject -Enabled $True -Category "kube-autoscaler"
        )

Discussion