Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
study-infra-0526
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
tenn25
May 26, 2018
Programming
60
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
study-infra-0526
Azureで Infrastructure as Code
tenn25
May 26, 2018
More Decks by tenn25
See All by tenn25
DQ-Management3-1
tenn25
0
91
Azure-CICD.pdf
tenn25
0
97
study-infra-0708
tenn25
0
74
study-infra-0429
tenn25
0
85
Other Decks in Programming
See All in Programming
Javaの型とAI時代に型が大事な理由 / java types and type in AI era
kishida
2
150
Honoでのサプライチェーン侵害対策 〜 3つのライブラリに学ぶ
yusukebe
7
1.5k
技術的負債解消で開発者の未来を開く- AIの力でコード刷新
kmd2kmd
0
120
ふつうのFeature Flag実践入門
irof
8
4.2k
Webフレームワークの ベンチマークについて
yusukebe
0
180
Dataformのリポジトリを立ち上げるときにまずやること / dataform-day0-2026
snhryt
0
190
Skillsは効率化、Agentsは"自分の拡張"——Builder時代のエージェント編成(CC Night 2026)
wemra
1
170
さぁV100、メモリをお食べ・・・
nilpe
0
160
LaravelLive Japan の裏方のすべて — 第188回 PHP勉強会@東京 (2026-06-24)
suguruooki
2
130
代数的データ型って何が嬉しいの? #frontend_phpcon_do
kajitack
8
3.8k
Lessons from Spec-Driven Development
simas
PRO
0
220
AI時代のUIはどこへ行く?その2!
yusukebe
22
7.6k
Featured
See All Featured
From π to Pie charts
rasagy
0
220
The SEO Collaboration Effect
kristinabergwall1
1
490
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
62
44k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.2k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
950
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
370
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
55k
RailsConf 2023
tenderlove
30
1.5k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
210
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
280
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
260
Paper Plane
katiecoart
PRO
1
52k
Transcript
Azureで Infrastructure as Code #インフラ勉強会 2018/5/26 @tenn_25 1
@tenn_25 ・Web系企業のシステム運用 ・最近AWSとかAzureとか触る ・データベースが好き ・ネットワークが苦手 自己紹介 2
今回の目的 ・みんなに「AzureでInfrastructure as Code」する方法を知ってもらう。 ・わたしが「まさかり」をもらってレベルアップする。 ・カレンダーの空白を埋めるため。 3
手元で触ってみたい方 ①MSアカウントとAzureのサブスクリプションを登録する(クレカ登録が必要) https://azure.microsoft.com/ja-jp/free/ ②手元のPCにAzure CLIを入れる https://docs.microsoft.com/ja-jp/cli/azure/install-azure-cli?view=azure-cli-latest とりあえずこれだけでOK 4
アジェンダ ・AzureのARMテンプレートとは ・Azureポータルからリソースをつくってみよう ・作ったリソースのARMテンプレートを確認しよう ・ARMテンプレートの構成を理解しよう ・テンプレートからデプロイしてみよう ・ARMテンプレートの感想、困ったこと 5
AzureのARMテンプレートとは ・ARM…Azure Resource Manager (最近のAzureのデプロイモデル) ・Azure上のリソースをJSON形式でコード化したもの。 ・Terraformとか、AWSだとCloudFormationみたいなやつ? ※Azureは公式ドキュメントが良くまとまっています。 https://docs.microsoft.com/ja-jp/azure/azure-resource-manager/ 6
Azureポータルからリソースをつくってみよう ①リソースグループ 仮想的なグループ。AWSにはない。全てのリソースは何かしらのグループに含まれる。 ②AppServicePlan 後述するWebAppsを動かす環境。コンピューティングリソースを決める。この単位で課金が発生する。 ③AppService WebAppsを選ぼう。Webサーバー(IIS)のPaaS。AWSにはない。世界で1つだけの名前をつける。 (以下余力があったら後でやる) ④SQL サーバー
…後述するSQLデータベースを動かす論理サーバー。DBへのログインはこの単位。世界に1つだけの(ry ⑤SQLデータベース … データベース(SQLServer)のPaaS。AWSでいうRDS。この単位で課金が発生する。 7
作ったリソースのARMテンプレートを確認しよう ・Auzreポータル>リソースグループ>デプロイ>テンプレート 画面から作った各リソースのJSONテンプレートが確認できる。 ・テンプレート … json形式。作りたいインフラの構成。 template.json ・パラメータ … json形式。テンプレートに渡す変数を記載する。
parameter.json ・CLI / Powershell / .NET / Ruby … AzureCLIを実行する各言語のスクリプト 8
ARMテンプレートの構成を理解しよう テンプレートの大枠 9 { "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": {},
"variables": {}, "resources": [], "output": [] }
ARMテンプレートの構成を理解しよう "parameters" ・変数の定義。各リソースの名前やパスワードなど。 ・デフォルト値や最大/最小値などを指定できる。 ・実際の値はparameter.json等の別ファイルに外出しする。 10 "parameters": { "administratorLogin" :
{ "type": "String" }, "administratorLoginPassword" : { "type": "SecureString" }, "location": { "type": "String" }, "serverName": { "type": "String" } }
ARMテンプレートの構成を理解しよう "variables" ・定数の値を書いたり、 paramater.jsonから取得した変数をごにょごにょする (まさかりポイント) ・テンプレート内は色々な関数が使えるみたい。下の例だと concatで文字連結をしている。 11 "variables": {
"appAvailsetName" : "appavset", "appLBName": "applb", "appLBIPAddressName" : "applbpip", "appLBRuleName" : "applbrule", "appVmNicName" : "[concat(parameters('appVmNamePrefix'),'nic')]" , "appVmDscExtName" : "[concat(parameters('appVmNamePrefix'),'dscext')]" , "appVmAntiMalwareExtName" : "[concat(parameters('appVmNamePrefix'),'amwext')]" }
ARMテンプレートの構成を理解しよう "resources": [ { "type": "Microsoft.Web/sites", "name": "[parameters('name')]", "apiVersion": "2016-03-01",
"location": "[parameters('location')]", "tags": {"一部省略"}, "properties": { "name": "[parameters('name')]", "serverFarmId": "一部省略", "hostingEnvironment": "[parameters('hostingEnvironment')]" }, "dependsOn": [ "[concat('Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]" ] } ] 12 "resources" ・実際に作りたいものを記述 ・変数はparameters('')で取得 ・リソース間で依存関係がある場合は、 "dependsOn"で記載。 例)AppServicePlan⇨WebAppsの順に作る必要があ る。 例)デプロイする時に、WebよりDBを先に作りたい。
ARMテンプレートの構成を理解しよう "outputs": { "adminUsername" : { "type": "string", "value": "[parameters('adminUsername')]"
} } 13 "output" ・デプロイのリクエストに対する戻り値 ・必須ではなさそう ・良い使い方が思いつかない…(まさかり)
ARMテンプレートからデプロイしてみよう 14 やりたいこと:手作業で作った構成をテンプレートにして、パラメータを変えて別のリソー スグループにデプロイ! 手順1:Auzreポータル>リソースグループ>Automationスクリプト リソースグループ単位に1つのテンプレートにまとめて出力してくれる
手順1:Auzreポータル>リソースグループ>Automationスクリプト リソースグループ単位に1つのテンプレートにまとめて出力してくれる ※なんかテンプレート化できない項目とか一部あるらしい・・ WebAppsのアプリ設定(IISの設定)とかも反映されないらしい・・ ARMテンプレートからデプロイしてみよう 15
ARMテンプレートからデプロイしてみよう 16 手順2:Autmationスクリプト>ダウンロード template.json、parameters.json等がダウンロードできるが、パラメータが空っぽ。 手順3:リソースグループ>Automationスクリプト デフォルトのパラメータが入った状態でJSONが表示されるので手順2でダウンロードし たtemplate.jsonにコピペする。
ARMテンプレートからデプロイしてみよう 17 手順4:テンプレートを修正 WebApps名は一意でないといけないので変更する。 その他お好みで設定を変更。 (以下余力があったら後でやる) 手順5:Database名は一意でないといけないので変更する。 手順6:DBのパスワードを指定する部分を加える。
ARMテンプレートからデプロイしてみよう 先にリソースグループを作成 $ az group create --name ResourceGroupName --location japaneast
JSONファイルを引数に指定してデプロイを実行!!!! $ az group deployment create --name DeployName --resource-group ResourceGroupName --template-file template.json --parameters parameters.json ポータルからリソースが起動できることを確認しましょう。 エラーはリソースグループのデプロイの項目で詳細確認しよう。 18
ARMテンプレートの感想、困ったこと ・ポチポチ作る→JSONにリバースできるの素敵!! ・JSONの形式やコマンドがシンプル!! ・テンプレート化できない項目や、本当はできるけど含まれてない項目がある。 ・まずはミニマムスタートしよう ・パスワードの扱い→KeyVault? ・リソースグループ粒度とテンプレートの分け方に悩む。 ・この先に待っているCI/CDは如何に。 19
参考書籍 Microsoft Azure実践ガイド https://www.amazon.co.jp/dp/4295002798/ref=cm_sw_r_tw_dp_U_x_hrccBbHT3KC29 githubなどからサンプルのテンプレートがあるから使ってみよう! https://github.com/ToruMakabe/ImpressAzureBook 20 遊んだあとはリソースのお 片付けを忘れずに…