Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
study-infra-0526
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
tenn25
May 26, 2018
Programming
65
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
97
Azure-CICD.pdf
tenn25
0
110
study-infra-0708
tenn25
0
75
study-infra-0429
tenn25
0
87
Other Decks in Programming
See All in Programming
選挙速報を多くのユーザーへ 届ける Live Activities 設計
hamayokokuririn
0
180
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
130
更なる可用性を求めて、5年間運用したKotlinのアプリケーションをGoでリプレイスする話
ken_tunc
0
390
JPUG勉強会 OSSデータベースの内部構造を理解しよう(第2回)
oga5
0
280
モジュールの視点からSwiftを読み解く #iosdc
s_shimotori
0
200
TiDB Cloudのカスタムコントローラーによるオートスケール対応
takaidohigasi
0
140
Snowflakeで業務アプリを作ろう。 Snowflakeのアプリ機能解説&実践ガイド
ayumu_yamaguchi
2
310
App Storeの外へ──日本のiOSサイドローディング入門 for iOSDC Japan 2026
yuukiw00w
0
270
マイコン向けの軽量Ruby「PicoRuby」で各種デバイスを制御するネイティブアプリの実現手法
bash0c7
0
460
技術的負債を組織課題として解く-増えすぎたマイクロサービスとの戦い-
reimaru
1
2.4k
Apple Intelligence を用いた個人情報誤送信防止、及びユーザーリクエスト体験の改善について
yukiny
0
190
ゲームコントローラやキーボードのファームウェアをSwiftで書く
kishikawakatsumi
1
260
Featured
See All Featured
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
490
Optimizing for Happiness
mojombo
378
71k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2.1k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
66k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
58k
How to make the Groovebox
asonas
2
2.5k
The Limits of Empathy - UXLibs8
cassininazir
1
690
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
250
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
680
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
340
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
The Curious Case for Waylosing
cassininazir
1
540
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 遊んだあとはリソースのお 片付けを忘れずに…