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
43
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
26
Azure-CICD.pdf
tenn25
0
48
study-infra-0708
tenn25
0
53
study-infra-0429
tenn25
0
71
Other Decks in Programming
See All in Programming
Ruby メモリ管理 プログラミング
megmogmog1965
0
130
How to use Macrobenchmark
veronikapj
0
160
Advanced App Shrinking Techniques
cbeyls
2
150
しくじり先生 Image Matching Challenge 2024 編
goosehaaan
0
810
継続的な活動で築く地方エンジニアの道
myamashii
2
360
小さな開発会社を作った理由
polidog
0
1.9k
はしめてのプログラミングとロボット制御
watawatavoltage
0
290
Exploring the Gradually Lost Technical Skills in the Cloud Native Era
hwchiu
2
3.9k
大規模マルチテナントを解決するYugabyteDBという選択肢
nnaka2992
1
250
3 Effective Rules for Success with Signals in Angular
manfredsteyer
PRO
0
120
CSC307 Lecture 13
javiergs
PRO
0
150
Activities at Cairo Library
cairolibrary720
0
1.2k
Featured
See All Featured
Web Components: a chance to create the future
zenorocha
307
41k
The Power of CSS Pseudo Elements
geoffreycrofte
64
5.2k
What’s in a name? Adding method to the madness
productmarketing
PRO
21
2.9k
Designing with Data
zakiwarfel
96
5k
Git: the NoSQL Database
bkeepers
PRO
423
64k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
248
20k
Faster Mobile Websites
deanohume
303
30k
Writing Fast Ruby
sferik
623
60k
Building Flexible Design Systems
yeseniaperezcruz
323
37k
The Language of Interfaces
destraynor
151
23k
How To Stay Up To Date on Web Technology
chriscoyier
784
250k
The Mythical Team-Month
searls
217
43k
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 遊んだあとはリソースのお 片付けを忘れずに…