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
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
93
Azure-CICD.pdf
tenn25
0
100
study-infra-0708
tenn25
0
75
study-infra-0429
tenn25
0
86
Other Decks in Programming
See All in Programming
数百円から始めるRuby電子工作
tarosay
0
110
生成AI導入の「期待外れ」を乗り越える ー 開発フロー改革が目指す、真の組織変革
starfish719
0
2.4k
AIエージェントで 変わるAndroid開発環境
takahirom
2
720
吝嗇家のためのAI活用 / AI development for miser - ChatGPT + Issue Driven Development
tooppoo
0
200
改善しないと、タスクが回らない。 “てんこ盛りポジション” を引き継いだ情シスの、入社3ヶ月の業務改善録
krm963
0
200
Claude Opus 4.6以後の受託開発エンジニアの変化(Claude Code開発ノウハウ大公開スペシャルbyクラスメソッド)
iidatakuma
1
870
全PRの83%がAIレビューだけでマージできるようになった開発組織はその後どうなったか
athug
0
450
Generative UI & AI-Assistants for Your Angular Solutions
manfredsteyer
PRO
0
120
AI がコードを書く時代における新卒エンジニアの仕事風景 (2026) / New Graduate Engineers in the Era of AI Coding (2026)
sushichan044
0
240
「正の参照」と 「負の導出」で組む ハーネスエンジニアリング
cottpan
1
150
【やさしく解説 設計編 #1】「ドメイン駆動」と「実装駆動」ってなに? 〜設計の考え方を、たとえ話で学ぼう〜
panda728
PRO
1
140
任せる範囲はこう広がった / How the Scope of AI Delegation Has Expanded
nrslib
1
280
Featured
See All Featured
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.6k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
570
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
270
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
320
How STYLIGHT went responsive
nonsquared
100
6.2k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
67
56k
How to build a perfect <img>
jonoalderson
1
5.8k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
630
Designing Powerful Visuals for Engaging Learning
tmiket
1
460
So, you think you're a good person
axbom
PRO
2
2.1k
Odyssey Design
rkendrick25
PRO
2
730
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 遊んだあとはリソースのお 片付けを忘れずに…