Azure CLI のみで App Service にカスタムドメインを追加してみる

2022.09.24

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

いわさです。

以前 App Service へカスタムドメインを登録する際のカスタムドメイン検証用 ID を CLI で取得する方法を調べたことがあります。

移行などの兼ね合いで大量のカスタムドメインを App Service に移行しなければならないケースを自動化出来るかどうかを検証するために本日は Azure CLI のみでカスタムドメイン追加を完結出来るのかを実際に試してみました。

今回自動化したかった部分はカスタムドメイン検証用の TXT レコードの追加と、App Service へのカスタムドメイン追加です。

Azure DNS の利用を前提に TXT 値の取得と ホストゾーンへのレコード登録

前述の記事を参考に検証用レコードに必要な情報は取得することが出来ます。
あとは以下に従ってレコード作成部分を CLI で作成するところをやってみます。

ここでは ドメイン自体は App Service Domain を取得済みなので、Azure DNS をそのまま使います。
私は普段は Amazon Route 53 でホストゾーンの管理を行うことが多いので、その場合はこの部分だけ AWS CLI の操作が混在しますが、今回はわかりやすく Azure にリソースを統一させました。

az webapp showcustomDomainVerificationIdを取得することが出来ます。
それを使って TXT レコードを作成します。
asuid.で作成します。

% az webapp show --resource-group 20220922 --name hoge0922app | jq -r '.customDomainVerificationId'                                                  
0685442C97CB634D52F2EE61E99B780E6432F2EEC39A3133469507271D39A011
% az network dns record-set txt add-record -g common -z iwasahoge.net -n asuid.hoge0922 -v 0685442C97CB634D52F2EE61E99B780E6432F2EEC39A3133469507271D39A011        
{
  "etag": "f1b833a4-177c-4bc4-b34f-8a71bdc06d82",
  "fqdn": "asuid.hoge0922.iwasahoge.net.",
  "id": "/subscriptions/xxxx/resourceGroups/common/providers/Microsoft.Network/dnszones/iwasahoge.net/TXT/asuid.hoge0922",
  "metadata": null,
  "name": "asuid.hoge0922",
  "provisioningState": "Succeeded",
  "resourceGroup": "common",
  "targetResource": {
    "id": null
  },
  "ttl": 3600,
  "txtRecords": [
    {
      "value": [
        "0685442C97CB634D52F2EE61E99B780E6432F2EEC39A3133469507271D39A011"
      ]
    }
  ],
  "type": "Microsoft.Network/dnszones/TXT"
}

成功すると以下のように Azure DNS 上のホストゾーンに TXT レコードが作成されていることが確認出来ます。

対象 App Service へカスタムドメイン追加

TXT レコードが検証可能な状態であれば、App Service へのカスタムドメイン追加操作が成功する状態です。

az webapp config hostname addを使ってホスト名を追加します。

% az webapp config hostname add --hostname hoge0922.iwasahoge.net --resource-group 20220922 --webapp-name hoge0922app                                      
{
  "azureResourceName": null,
  "azureResourceType": null,
  "customHostNameDnsRecordType": null,
  "domainId": null,
  "hostNameType": "Verified",
  "id": "/subscriptions/xxxx/resourceGroups/20220922/providers/Microsoft.Web/sites/hoge0922app/hostNameBindings/hoge0922.iwasahoge.net",
  "kind": null,
  "location": "Japan East",
  "name": "hoge0922app/hoge0922.iwasahoge.net",
  "resourceGroup": "20220922",
  "siteName": "hoge0922app",
  "sslState": null,
  "thumbprint": null,
  "type": "Microsoft.Web/sites/hostNameBindings",
  "virtualIp": null
}

以下のようにアサインすることが出来ました。

ただし、SSL バインディングが出来ていないのでこのあたりは必要に応じて構成する必要があります。
今回は SSL 構成が検証上必須ではなかったので割愛していますが SSL バインディングを構成する際はaz webapp config ssl配下のコマンドを使って構成することが出来ます。

さいごに

本日は Azure CLI のみで App Service にカスタムドメインを追加してみました。
こうして書き出してみると非常に簡単でボリュームもあまり無い感じではありますが Azure ポータル上で作業すると追加作業後にレコード作成し検証ボタンを押して...という作業を繰り返す必要があるので CLI を初めコード化しておくと便利ですね。