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
0
50
study-infra-0526
Azureで Infrastructure as Code
tenn25
May 26, 2018
Tweet
Share
More Decks by tenn25
See All by tenn25
DQ-Management3-1
tenn25
0
30
Azure-CICD.pdf
tenn25
0
48
study-infra-0708
tenn25
0
60
study-infra-0429
tenn25
0
76
Other Decks in Programming
See All in Programming
3 Effective Rules for Using Signals in Angular
manfredsteyer
PRO
0
100
AWS Lambdaから始まった Serverlessの「熱」とキャリアパス / It started with AWS Lambda Serverless “fever” and career path
seike460
PRO
1
250
광고 소재 심사 과정에 AI를 도입하여 광고 서비스 생산성 향상시키기
kakao
PRO
0
170
ヤプリ新卒SREの オンボーディング
masaki12
0
130
CSC509 Lecture 11
javiergs
PRO
0
180
リアーキテクチャxDDD 1年間の取り組みと進化
hsawaji
1
220
Streams APIとTCPフロー制御 / Web Streams API and TCP flow control
tasshi
2
350
よくできたテンプレート言語として TypeScript + JSX を利用する試み / Using TypeScript + JSX outside of Web Frontend #TSKaigiKansai
izumin5210
6
1.7k
PHP でアセンブリ言語のように書く技術
memory1994
PRO
1
170
最新TCAキャッチアップ
0si43
0
140
ActiveSupport::Notifications supporting instrumentation of Rails apps with OpenTelemetry
ymtdzzz
1
230
初めてDefinitelyTypedにPRを出した話
syumai
0
400
Featured
See All Featured
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.5k
Bash Introduction
62gerente
608
210k
Fireside Chat
paigeccino
34
3k
Code Reviewing Like a Champion
maltzj
520
39k
4 Signs Your Business is Dying
shpigford
180
21k
GraphQLとの向き合い方2022年版
quramy
43
13k
Side Projects
sachag
452
42k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
6.8k
Building Your Own Lightsaber
phodgson
103
6.1k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
6
410
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 遊んだあとはリソースのお 片付けを忘れずに…