はじめに
本ブログは正式リリース前にクローズ環境で運用していたのですが、そのクローズ環境はAzure上にWordPressを構築して作っていました。その時のメモです。
作り方
Azureでリソース作成しようとするとWordPressがたくさん出てくるのですが、一番ベーシックと思われる、Web Apps + Azure Database for MySQLのものを使っています。
が、こちらのWordPress環境、以前に自分だけでテスト用に作成した際には、Web Appsや Azure Database for MySQL のプランを選べていたのですが、アップデートがあったのか、プランなどが選べなくなってしまいました。(2021/10/22時点でプレビューになっているようです)
そのまま作ると、Web AppsはPremium V2、 Azure Database for MySQL は汎用になってしまいます。
本番運用ならともかく、限定テストでこのスペックはやや過剰ですし、どちらかというコストを優先したい段階です。
デプロイ後にスケールダウンさせることも考えたのですが、Web Appsの方はスケールダウン可能なものの、 Azure Database for MySQLの方は汎用目的からBasicに下げる事が出来ませんでした。
とはいえ、Web Appsと Azure Database for MySQL を個別に作成してWordPressをインストールするのも手間なのでどうしようか悩んでいた所、テンプレートをカスタマイズして使えばいい事に気づきました。
というわけで、実際の作成は行わず、Autoimationのテンプレートをダウンロードします
ダウンロードしたtemplateとparameterのjsonファイルを見て、それっぽいところのパラメーターを自分好みにカスタマイズしていきます。パラメーターの名前だけだとWeb Apps側の設定なのかMySQL側の設定なのかわかりにくい部分も多かったので、テンプレート内で使われている所を探しながら調整しました。
参考:パラメーター
以下は、パラメーター内で主に変更した箇所にメモを入れたものです。そのまま使えるものではないので参考までに。
今回はついでに、MySQL側のパスワードをべた書きではなく、Key Vaultから読み込むように変更しました。
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"subscriptionId": {
"value": "サブスクリプションの名前"
},
"name": {
"value": "Web Appsの名前"
},
"location": {
"value": "ロケーション"
},
"hostingPlanName": {
"value": "App Serviceの名前"
},
"serverFarmResourceGroup": {
"value": "リソースグループの名前"
},
"sku": {
"value": "App Serviceのレベル(Basic, Standardなど)"
},
"skuCode": {
"value": "App Serviceのインスタンス(B1,B2,S1など)"
},
"workerSize": {
"value": "1"
},
"workerSizeId": {
"value": "1"
},
"numberOfWorkers": {
"value": "1"
},
"storageSizeMB": {
"value": 5120
},
"backupRetentionDays": {
"value": 7
},
"geoRedundantBackup": {
"value": "Disabled"
},
"vmName": {
"value": "B_Gen5_1"
},
"vCores": {
"value": 1
},
"sslEnforcement": {
"value": "Disabled"
},
"charset": {
"value": "utf8"
},
"collation": {
"value": "utf8_general_ci"
},
"databaseName": {
"value": "Azure Database for MySQLのデータベースの名前"
},
"skuSizeMB": {
"value": 5120
},
"skuFamily": {
"value": "Gen5"
},
"serverName": {
"value": "Azure Database for MySQLの名前"
},
"serverUsername": {
"value": "Azure Database for MySQLのユーザー名"
},
"serverPassword": {
"reference": {
"keyVault": {
"id": "/subscriptions/サブスクリプションのID/resourceGroups/keyVaultのリソースグループ/providers/Microsoft.KeyVault/vaults/keyVaultの名前"
},
"secretName": "keyVaultに保存したシークレットの名前"
}
},
"serverEdition": {
"value": "Azure Database for MySQLのレベル(Basicなど)"
}
}
}
後は、パラメーターを変更したもので上書きして、デプロイすれば出来上がりです。
おわりに
ということで、GUIで思った通りに作成出来ない場合でも、ARM Templateでなんとかなりました、という話でした。
舟越 匠(日本ビジネスシステムズ株式会社)
人材開発部に所属。社内向けの技術研修をしつつ、JBS Tech Blog編集長を兼任。2024年8月からキーマンズネットでPower Automateの連載を開始。好きなサービスはPower AutomateやLogic Apps。好きなアーティストはZABADAKとSound Horizon。
担当記事一覧