Azure Deployment Environmentを触ってみてつまずきそうなポイントをまとめておく
参考:Azure Deployment Environments プレビューとは
デベロッパーセンターを作成する
公式ドキュメント通りに作成する
設定周り
作成したデベロッパーセンターで以下のような設定を行う。
- デベロッパーセンターでマネージドIDを割り当てる
- デベロッパーセンターでAzure ロールの割り当て:所有者ロール を割り当てる
- KeyVault を作成してアクセスポリシーからマネージドIDを割り当てる
これらの設定によりデベロッパーセンターが KeyVault にアクセスできるようになる。
試す環境として👇のリポジトリをforkして参照した。
https://github.com/Azure/deployment-environments
PAT の生成をしないといけないので自分のアカウントにforkしておく
PAT の生成は、GitHub では右上の自分のアイコンの[Settings]へいき、[Developer Settings] -> [Personal access tokens(classic)] から生成できる。
生成した PAT は先ほど作成した KeyVault のシークレットに保管する。
デベロッパーセンターが 保管したこのシークレット(PAT)を参照できるようにシークレット識別子をコピーしておく
PAT周りを適切に設定しないとカタログの追加でたぶん失敗する。
カタログの追加
以下の内容を入力して追加する
- 名前: 任意のカタログ名を入力
- Git クローン URI: リポジトリのURL。設定周りでフォークしたものを入力
- ブランチ: main
- フォルダーのパス: /Environments
- シークレット識別子: PATを保管しているシークレットのシークレット識別子を入力
シークレット識別子は、マネージドIDやアクセスポリシーを設定していないと失敗するので適切に設定する。
追加すると同期がスタートする。
失敗した場合は上記の設定を見直す。
環境の種類の作成
デベロッパーセンターから環境の種類を作成する。
今回は Dev で作成した。
プロジェクトの作成
デベロッパーセンターからプロジェクトを作成する
[管理] にある [プロジェクト] へ移動して [作成] を押す
任意で名前などを入力して作成した。
環境の作成
作成したプロジェクトへ移動して、そこから [管理] にある [環境] へ移動すると👇の画面が表示される。
現在(2022/11/22)、GUIでは用意されていないため Azure CLI から作成する。
コマンドは公式ドキュメントあるのでそれを参考にしながら作成。
(※2022/11/22 時点だとコマンドが間違ってたりしてるので注意)
参考にしたコマンド→環境の種類
Azure Portal 上の Cloud Shell だとログイン周りで私はうまくいかなかったのでlocalでコマンド流した。
az コマンド使用できるのであれば local でも問題なくできる。
拡張機能をインストール
az extension add --source https://fidalgosetup.blob.core.windows.net/cli-extensions/devcenter-0.1.0-py3-none-any.whl
ログイン
az login
環境作成
az devcenter dev environment create --dev-center-name dev-center-hoge --project-name pj-hoge -n env-hoge-test --environment-type Dev --catalog-item-name WebApp --catalog-name catalog-hoge --owner me
-
--dev-center-name
: プロジェクトがあるデベロッパーセンターを入力。今回は最初に作成したデベロッパーセンターでok -
--project-name
: 作成したプロジェクトの名前を入力 -
-n
: 作成したい環境の名前(任意の名前を入力) -
--environment-type
: 環境の種類を入力(今回は Dev) -
--catalog-item-name
: forkしたリポジトリのEnvironments/WebApp/manifest.yamlで記述してるnameを入力する。※1 -
--catalog-name
: 追加したカタログの名前 -
--owner
: me を入力
※1 --catalog-item-name
では👇画像にある name
に指定してある WebApp を入力した。(画像はfork元のリポジトリになってます)
正常にコマンドが走ると Running
になるので待機。
コマンドが問題なければ Azure Portal 上でプロビジョニングのステータスとかも出てきます
しばらくすると プロビジョニングの状態が成功になります。
この画面からリソースグループ、コスト分析の画面へ遷移できる。
注意点
- az login でログインしてからでないと失敗しますのでまずはログインする
- 存在するリソース名(デベロッパーセンター、プロジェクト、環境の種類、カタログ名、カタログアイテム名)を入力しないとおそらくエラーになる
- もしプロビジョニングが失敗した場合は、設定まわりを見直す。
- ロール、KeyVault のアクセスポリシー、GitHub のPATなど
- カタログの同期を再度確認してみる。同期が失敗した場合はPATやKeyVault周りの設定が怪しいと思われる
- コマンド誤表記
- 公式ドキュメントでは
-g <resource-group-name>
でリソースグループを選択しているが、このオプションは現時点ではないらしい - 公式ドキュメントでは
---catalog-name <catalog-name>
となっており、-
が1個多いのでコピペするとき注意 - 公式ドキュメントでは
--parameters <deployment-parameters-json-string>
がありますが必須オプションではないです。おそらくデプロイ実行時の設定まわりをjson文字列で渡せるのだと思ってます。 - 公式ドキュメントでは
--owner me
は記載されてないが、この所有者識別子のオプションがないとたしか認証でエラーになり、プロビジョニングが失敗した気がします。
- 公式ドキュメントでは
- 困ったら
--help
オプションでコマンドのオプションを確認する
az devcenter dev environment create --help
環境の削除:おまけ
最後にリソースをきれいにするために以下のコマンド流しました。
az devcenter dev environment delete --dev-center dev-center-hoge --project-name pj-hoge -n env-hoge-test --user-id "me"
正常に削除できていたのを確認しました。