MS_ARMTemplate - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki
- æ»ã
-
ARM ãã³ãã¬ãŒããšãã
-
Azure ã§ã¯ã䞻㫠ARM ãã³ãã¬ãŒããå©çšããŠã
ã€ã³ãã©ãOS ã¬ã€ã€ãŸã§ã®ã€ã³ãã©æ§ç¯ã®ãèªååïŒIaCïŒããè¡ã-
ãªãœãŒã¹ãäžè²«æ§ã®ãã圢ã§ç¹°ãè¿ããããã€ããããã®
宣èšåã®ãã³ãã¬ãŒãã -
ãªãœãŒã¹ã»ã°ã«ãŒããžã®ãããã€å¯Ÿè±¡ãšãªã
ãªãœãŒã¹ãå®çŸ©ãã JSON ãã¡ã€ã«ã - ãããã€å¯Ÿè±¡ãªãœãŒã¹éã®äŸåé¢ä¿ãã
ãã®ãã³ãã¬ãŒãã«ãã£ãŠå®çŸ©ãããã
-
ãªãœãŒã¹ãäžè²«æ§ã®ãã圢ã§ç¹°ãè¿ããããã€ããããã®
è£è¶³ïŒææ°å / BicepïŒ: çŸåšãARM ãã³ãã¬ãŒãïŒJSONïŒã
çŽæ¥æžãããšã¯æšå¥šãããŠããªãã
Bicep ãšãã DSL ãçšæãããŠããã
ãããã³ã³ãã€ã«ãããš ARM ãã³ãã¬ãŒãã«ãªããBicepïŒ.bicepïŒââãã«ãâââ¶ ARM ãã³ãã¬ãŒãïŒ.jsonïŒâââ¶ ARM API äººãæžã æ©æ¢°ãèªãBicep ã®å©ç¹ã¯ã
- èšè¿°éãåå以äžã«ãªãïŒ
[parameters('x')]ã®ãããªæåååŒãäžèŠïŒã- äŸåé¢ä¿ãèªåæšè«ãããïŒåŸè¿°ã®
dependsOnã®èŠåŽãå€§å¹ ã«æžãïŒã- åãã§ãã¯ãšè£å®ãå¹ãã
ãšããç¹ãæ¬ããŒãžãè¿°ã¹ãŠããèŠåŽã®å€ã㯠Bicep ã§è§£æ¶ãããã
ãã ããARM ãã³ãã¬ãŒãã®æ§é ïŒparameters / variables / resources /
outputsãresourceId ã®èãæ¹ïŒã¯ãã®ãŸãŸ Bicep ã«ãéããããã
以äžã®å 容ã¯çŸåšãçè§£ãã䟡å€ãããã
Resource Manager ã¯ãã³ãã¬ãŒããè§£æãã
ãã®æ§æãé©åãªãªãœãŒã¹ã»ãããã€ãã® REST API æäœã«å€æããã
æ¢åã®ãªãœãŒã¹ã»ã°ã«ãŒãã®ãã³ãã¬ãŒãã®ååŸ
- ãªãœãŒã¹ã»ã°ã«ãŒãã®çŸåšã®ç¶æ ããšã¯ã¹ããŒã
- ç¹å®ã®ãããã€ã«äœ¿çšããããã³ãã¬ãŒãã衚瀺
ARM ãã³ãã¬ãŒããšãã©ã¡ã¿ã»ãã¡ã€ã«ããæ§æããã
äœæãããªãœãŒã¹çŸ€ãæå®ããïŒtemplate.jsonïŒã
- å¯å€èŠçŽ ããã©ã¡ã¿åããïŒparameters.jsonïŒã
- ãã³ãã¬ãŒãå®è¡æã«å€éšããå€ãäžããã
Visual Studio Code ã« ARM Tools ãã©ã°ã€ã³ãå ¥ãç·šéã
Azure ããŒã¿ã«ããä¿åã»å®è¡ãããšäŸ¿å©ã
â» ããŒã«ã«ã§å®è¡ããã«ã¯ãPowerShell ã©ã€ãã©ãªã®ã€ã³ã¹ããŒã«ãªã©ç°å¢æ§ç¯ãå¿ èŠã«ãªãã
è£è¶³ïŒææ°åïŒ: çŸåšã¯ Azure CLI ã§å®çµããã
# äºå確èªïŒå·®åãèŠãïŒ az deployment group what-if -g <RGå> --template-file main.bicep # é©çš az deployment group create -g <RGå> --template-file main.bicep --parameters @params.jsonç¹ã«
what-ifïŒWhat-If æäœïŒ ã¯ã
ããã®ãã³ãã¬ãŒããé©çšãããšäœãå€ãããããäºåã«è¡šç€ºããæ©èœã§ã
æ¬ããŒãžåŸåã®ãé 眮ãæåãããŸã§ trial and errorãã®èŠåŽã
å€§å¹ ã«è»œæžããã
-
ã¹ã¯ã©ããã§èšèŒããã®ã¯é£ããã®ã§ã
Automation ãªãã·ã§ã³ãAutomation ã¹ã¯ãªããã䜿çšããã -
ãªãœãŒã¹ã®äœæå or äœæåŸã§ããæ¹ãå€ãã£ãŠããã
-
ãªãœãŒã¹äœææã«ãã³ãã¬ãŒããåŒãæãã
ããŒã¿ã«ããã®ãªãœãŒã¹äœææã«ãAutomation ãªãã·ã§ã³ãç¢ºèª -
ãªãœãŒã¹äœæåŸã«ãã³ãã¬ãŒããåŒãæãã
ãªãœãŒã¹ã»ã°ã«ãŒããŸãã¯ãªãœãŒã¹ãããAutomation ã¹ã¯ãªãããåºå
-
-
以äžã®ãã¬ãŒãã»ãªããããã®ã§ã
ïŒã€ã®æ¹æ³ã䜵çšããŠäœæããã
| Automation ãªãã·ã§ã³<br>ãªãœãŒã¹äœææã«ãã³ãã¬ãŒããåŒãæãã | Automation ã¹ã¯ãªãã<br>ãªãœãŒã¹äœæåŸã«ãã³ãã¬ãŒããåŒãæãã | |
|---|---|---|
| GOOD | 綺éºãª JSON ãå ¥æã§ãã | åäœïŒäŸåé¢ä¿ã¢ãªãæ§æå€æŽåŸïŒã® JSON ãå ¥æã§ããã |
| BAD | ã»äžéšã®æ°ãããªãœãŒã¹ã§ãµããŒããããŠããªãã<br>ã»å šãŠããã©ã¡ã¿ã©ã€ãºãããç¶æ ã® JSONã<br>ã»åäœïŒäŸåé¢ä¿ãã·ãæ§æå€æŽåïŒã® JSON ããå ¥æã§ããªãã | ã»ãªãœãŒã¹ã«ãã£ãŠã¯ãJSON ååºæ¥ãªãã¢ããããã<br>ã»å端ã«ãã©ã¡ã¿ã©ã€ãºãããç¶æ ã® JSONã<br>ã»äœåãªå€ããéè€ããåºåããããããšãããã |
è£è¶³ïŒãã® 2 ã€ã®äœ¿ãåããæ¬ããŒãžã®æ žïŒ: ããŒã¿ã«ã§äœã£ãæ§æãã
ãã³ãã¬ãŒãããåŒãæãããšããææ³ã¯ã
ãŒããã JSON ãæžãã®ãéçŸå®çã§ãããšããçŸå®ã«å³ããå®è·µç¥ã§ããããAutomation ãªãã·ã§ã³ãïŒ äœæåã®ãã¬ãã¥ãŒ ããŒã¿ã«ã® [確èªãšäœæ] ã®çŽåã§èŠããã â 綺éºã ãããã®ãªãœãŒã¹åäœã®ã¿ ãAutomation ã¹ã¯ãªãããïŒ äœæåŸã®ãšã¯ã¹ããŒã ãªãœãŒã¹ ã°ã«ãŒãã® [ãã³ãã¬ãŒãã®ãšã¯ã¹ããŒã] â å šäœãåããããäœèšãªå€ãŸã§ä»ããŠããã綺éºãªåäœããšãæ±ãå šäœããçªãåãããŠæã§çµãã
ãšããã®ãæ¬ããŒãžã®ææ³ã§ããã
ãããããã¯ãŒã¯ã® ARM ãã³ãã¬ãŒãäœæ
- ä»®æ³ãããã¯ãŒã¯ã®äœæ
- ãµããããã®äœæ
- ã«ãŒãã»ããŒãã«ïŒUDRïŒã®äœæ
- VPN Gateway ã®äœæ
- Azure Firewall ã®èšå®
- 蚺æãã°ã»ã¹ãã¬ãŒãžã®äœæ
- ä»®æ³ãã·ã³ã®äœæïŒãïŒ
⻠以äžããµã³ãã«ã»ã·ããªãªã®æé
ä»®æ³ãããã¯ãŒã¯ã®äœæ
ãªãœãŒã¹äœææã®ãã³ãã¬ãŒãåŒãæãæ©èœã䜿çšããã
-
ããŒã¿ã«äžã§ä»®æ³ãããã¯ãŒã¯ãAzure FirewallïŒïŒãããªã㯠IPïŒãæ§æããã
-
äœæåã«ãAutomation ãªãã·ã§ã³ãéžæãã
ARM ãã³ãã¬ãŒããšãã©ã¡ã¿ã»ãã¡ã€ã«ãåŒãæãã -
ãã³ãã¬ãŒãã«ãåºæ¬çãªä¿®æ£ãæœãã
-
ãã³ãã¬ãŒãã®ä¿®æ£åŸãå®éã«ãªãœãŒã¹ãäœæããã
- äœæãããã³ãã¬ãŒãã Azure ããŒã¿ã«ããç»é²ããå±éããã¹ã
- èšè¿°ã«ãã°ãããå Žåã«ã¯é 眮ã倱æãã â é 眮ãæåãããŸã§ãtrial and errorã
æ¢åãªãœãŒã¹ããããªãœãŒã¹äœæåŸã®ãã³ãã¬ãŒãåŒãæãæ©èœã䜿çšããã
ïŒäœææã¯åŒãæãäžå¯ã§ããããïŒ
-
å ããããŒã¿ã«äžã§ãµãããããïŒã€æ§æããïŒä»®æ³ãããã¯ãŒã¯ã®ãµãã»ãªãœãŒã¹ïŒã
- 管ç VM çš
- DNS çé 眮çš
- Gateway çš
-
äœæåŸã«ãAutomation ã¹ã¯ãªãããéžæãããšã
åœè©²ãªãœãŒã¹ãå«ãŸãããªãœãŒã¹ã»ã°ã«ãŒãå šäœã
ARM ãã³ãã¬ãŒããšãã©ã¡ã¿ã»ãã¡ã€ã«ã«åŒãæãã -
Automation ã¹ã¯ãªããã®ç¹åŸŽã
- ãªãœãŒã¹ã»ã°ã«ãŒãå šäœãåŒãæãããã
- æ¢å®å€ããçŸåšã®ç¶æ ãªã©ãäœåãªãã©ã¡ã¿å€ãåŒãæãããã
- ãµãã»ãªãœãŒã¹ãç¬ç«ãããªãœãŒã¹ãšããŠå±éãããã
- ãã®ãããå šäœçã«åé·ã«ãªãã
- ãŸããäŸåé¢ä¿ãå±éå ã«å€æŽãããã
-
Automation ã¹ã¯ãªããããã³ãã¬ãŒãã«ããŒãžããã
-
ã³ãã©ã®ãã³ãã¬ãŒããããŒã¹ã«ãAutomation ã¹ã¯ãªãããåèã«ããŠã
å±éããããªãœãŒã¹ïŒãµããããïŒã¯ãïŒä»®æ³ãããã¯ãŒã¯ã®ïŒãµãã»ãªãœãŒã¹çã«ããŒãžããã- ã³ã³ã§ã¯ããµãŒãã¹ã»ãšã³ããã€ã³ãã®å®çŸ©ã远å ãããŠããã®ã§ã³ã¬ãããŒãžããã
- æ¢å®å€ããçŸåšã®ç¶æ ãªã©ãGUI ããèšå®ããŠããªãäœåãªå€ã¯ãç§»è¡ããªãããã«ããã
-
æåŸã«ããã³ãã¬ãŒãã«ãåºæ¬çãªä¿®æ£ãæœãã
-
-
ãã³ãã¬ãŒãã®ä¿®æ£åŸãå®éã«ãªãœãŒã¹ãäœæããã
è£è¶³ïŒãµãã»ãªãœãŒã¹ã® 2 éãã®æžãæ¹ïŒ: ãµããããã®ãããª
ã芪ã«å±ãããªãœãŒã¹ãã¯ãARM ã§ã¯ 2 éãã«æžããã// â 芪ã®äžã«å ¥ãåã§æžãïŒæ¬ããŒãžãæšå¥šããåœ¢ïŒ { "type": "Microsoft.Network/virtualNetworks", "properties": { "subnets": [ { "name": "mgmt", ... } ] } } // â¡ ç¬ç«ãããªãœãŒã¹ãšããŠæžãïŒãšã¯ã¹ããŒããããåœ¢ïŒ { "type": "Microsoft.Network/virtualNetworks/subnets", "name": "vnet/mgmt", ... }â ãšâ¡ãæ··åšããããšããããã€ã®ãã³ã«ãµãããããæ¶ãããšãã
äºæ ãèµ·ããïŒâ åŽã®å®çŸ©ã â¡ ãäžæžãããããïŒã
åæãããµãã»ãªãœãŒã¹çã«ããŒãžããããšäžè²«ããŠè¿°ã¹ãŠããã®ã¯ã
ãã®äºæ ãé¿ããããã®å€æã§ããã
ã«ãŒãã»ããŒãã«ïŒUDRïŒã®äœæ
åæ§ã«ãæ¢åãªãœãŒã¹ããããªãœãŒã¹äœæåŸã®ãã³ãã¬ãŒãåŒãæãæ©èœã䜿çšããã
ïŒãªãœãŒã¹äŸåé¢ä¿ã®æå®ããã€ã³ãïŒ
-
ããŒã¿ã«äžã§ã«ãŒãã»ããŒãã«ïŒUDRïŒãæ§æããã
-
Automation ãªãã·ã§ã³ã確èªããïŒäŸåé¢ä¿ãã·ãæ§æå€æŽåïŒã
-
äžèšã®ã«ãŒãã»ããŒãã«ãããŒã¿ã«äžã§å®éã«äœæãã
-
Automation ã¹ã¯ãªãããçæããïŒäŸåé¢ä¿ã¢ãªãæ§æå€æŽåŸïŒã
-
Automation ã¹ã¯ãªããã確èªããã
- ã«ãŒãã»ããŒãã«ãšã«ãŒããçæãããé¢é£ä»ãã¯ããµããããåŽã«å ¥ãã
- ã«ãŒãã»ããŒãã«ã®ãµãã»ãªãœãŒã¹ã®ã«ãŒããå±éãããéè€ããŠåºåãããã
â» åæ®µéã® Automation ã¹ã¯ãªãããš Diff ãåããªã©ãããšè¯ãããã§ã¯ããã
-
Automation ã¹ã¯ãªããããã³ãã¬ãŒãã«ããŒãžããã
-
ããŒã¹ã®ãã³ãã¬ãŒãã«æ°èŠãªãœãŒã¹ãšãµãã»ãªãœãŒã¹ã®å®çŸ©ã ããããŒãžããã
- ã«ãŒãã»ããŒãã«ãšã«ãŒãã®äœæã®å®çŸ©
- ãµããããã«è¿œå ãããã«ãŒãã»ããŒãã«å²åœã®å®çŸ©
-
äŸåé¢ä¿ãåæããŠãäŸåé¢ä¿ãèšå®ãçŽãã
äŸåé¢ä¿èšå®ã¯ã芪å士ã®äŸåé¢ä¿ã«çœ®ãæãããšè¯ãã- ããµãããã â ã«ãŒãã»ããŒãã«ãã®äŸåé¢ä¿ãã
- ãä»®æ³ãããã¯ãŒã¯ â ã«ãŒãã»ããŒãã«ãã®äŸåé¢ä¿ã«ä¿®æ£ã
-
æåŸã«ããã³ãã¬ãŒãã«ãåºæ¬çãªä¿®æ£ãæœãã
-
-
ãã³ãã¬ãŒãã®ä¿®æ£åŸãå®éã«ãªãœãŒã¹ãäœæããã
VPN Gateway ã®äœæ
åã³ããªãœãŒã¹äœææã®ãã³ãã¬ãŒãåŒãæãæ©èœã䜿çšããã
ïŒãã³ãã¬ãŒãã«å«ãããªãœãŒã¹ã®ç¯å²ããã€ã³ãïŒ
-
ããŒã¿ã«äžã§ Gateway çšãµããããã«ã
VPN GatewayïŒïŒãããªã㯠IPïŒãæ§æããã
ïŒå¯Ÿåãããã¯ãŒã¯ãç¡ããšèšå®ã§ããªãæã¯æ§æããªãçïŒ -
äœæåã«ãAutomation ãªãã·ã§ã³ãéžæãã
ARM ãã³ãã¬ãŒããšãã©ã¡ã¿ã»ãã¡ã€ã«ãåŒãæãã -
Automation ãªãã·ã§ã³ããã³ãã¬ãŒãã«ããŒãžããã
-
ãªãœãŒã¹äœæåŸã®ãã³ãã¬ãŒãåŒãæãæ©èœã䜿çšããåŸã«ã
ãªãœãŒã¹äœææã®ãã³ãã¬ãŒãåŒãæãæ©èœã䜿çšããå Žåã
ïŒæ¢ã«ãããªãœãŒã¹ãåæã«ãªã£ãŠããã®ã§ïŒ
以äžã®æ§ã«äŸåé¢ä¿ã®ä¿®æ£ãå¿ èŠã«ãªãããšãããã- å®çŸ©ã«ãªãœãŒã¹ãèå¥ããåºå®å€ã® ID ã䜿çšãããŠããå Žåã
resourceId 颿°ã䜿çšããåç解決ãå¿ èŠã«ãªãããšãããã - ãŸããäŸåé¢ä¿èšå®ã¯ã芪å士ã®äŸåé¢ä¿ã«çœ®ãæãããšè¯ãã
- å®çŸ©ã«ãªãœãŒã¹ãèå¥ããåºå®å€ã® ID ã䜿çšãããŠããå Žåã
-
æåŸã«ããã³ãã¬ãŒãã«ãåºæ¬çãªä¿®æ£ãæœãã
-
-
ãã³ãã¬ãŒãã®ä¿®æ£åŸãå®éã«ãªãœãŒã¹ãäœæããã
Azure Firewall ã®èšå®
æ¢åãªãœãŒã¹ããã®ãã³ãã¬ãŒãåŒãæãæ©èœã«å¯Ÿå¿ããŠããªãå Žåã®æ±ãæ¹
çŸæç¹ã§ã¯ãäžèšã®åŒãæãæ©èœãå®è£
ãããã
ïŒãããŠããªãå Žåã¯ããªãã¡ã¬ã³ã¹é Œãã«ãªãïŒ
-
ããŒã¿ã«äžã§ Azure Firewall ã«ä»¥äžãæ§æããã
- Windows Update
- DNS ã¯ãšãª
-
äžèšãããŒã¿ã«äžã§å®éã«é©çšãã
-
Automation ã¹ã¯ãªãããçæã»ç¢ºèªããã
-
Automation ã¹ã¯ãªããããã³ãã¬ãŒãã«ããŒãžããã
-
Azure Firewall ã®ãproperties ã®ã
xxxxxRuleCollections ããã³ãã¬ãŒãã«ããŒãžããã - æåŸã«ããã³ãã¬ãŒãã«ãåºæ¬çãªä¿®æ£ãæœãã
-
Azure Firewall ã®ãproperties ã®ã
-
ãã³ãã¬ãŒãã®ä¿®æ£åŸãå®éã«ãªãœãŒã¹ãäœæããã
蚺æãã°ã»ã¹ãã¬ãŒãžã®äœæ
åã³ããªãœãŒã¹äœææã®ãã³ãã¬ãŒãåŒãæãæ©èœã䜿çšããã
ïŒã°ããŒãã«äžæãªãœãŒã¹ãååšããã±ãŒã¹ïŒ
-
ããŒã¿ã«äžã§ã¹ãã¬ãŒãžã»ã¢ã«ãŠã³ããæ§æããã
-
äœæåã«ãAutomation ãªãã·ã§ã³ãéžæãã
ARM ãã³ãã¬ãŒããšãã©ã¡ã¿ã»ãã¡ã€ã«ãåŒãæãã -
Automation ãªãã·ã§ã³ããã³ãã¬ãŒãã«ããŒãžããã
-
ã¹ãã¬ãŒãžã»ã¢ã«ãŠã³ãã®ã»ã¯ã·ã§ã³ããã³ãã¬ãŒãã«ããŒãžããã
- virtualNetworkRules ã®ãµããããã®åºå®å€ã® ID ã resourceId ã§åç解決ããã
- ã³ãã©ã®æ®µéã§ããµããããã«ãµãŒãã¹ãšã³ãã»ãã€ã³ããæå®ãããŠããã
- ãããŠãïŒãµããããã§ã¯ãªãïŒä»®æ³ãããã¯ãŒã¯ãžã®äŸåé¢ä¿ã远å ããã
-
æåŸã«ããã³ãã¬ãŒãã«ãåºæ¬çãªä¿®æ£ãæœãã
-
-
ãã³ãã¬ãŒãã®ä¿®æ£åŸãå®éã«ãªãœãŒã¹ãäœæããã
ïŒãã®éãã°ããŒãã«äžæãªãœãŒã¹çšã®å€æ°å ¥åãæ±ããããïŒ
è£è¶³ïŒã°ããŒãã«äžæãªãœãŒã¹ïŒ: ã¹ãã¬ãŒãž ã¢ã«ãŠã³ãåã¯
å šäžçã§äžæã§ããå¿ èŠãããïŒ<åå>.blob.core.windows.netãšãã
FQDN ã«ãªãããïŒã
ãããã£ãŠããã³ãã¬ãŒãã«åºå®åãæžããšä»äººãšè¡çªããŠå€±æããã
åŸè¿°ã® parameters / variables ã§
ãå ±éã®ãã¬ãã£ãã¯ã¹ ïŒ ç°å¢ããšã®èå¥åããçµã¿ç«ãŠãã®ãå®ç³ãçŸåšã¯
uniqueString(resourceGroup().id)颿°ã䜿ãã
ãªãœãŒã¹ ã°ã«ãŒãããšã«æ±ºå®çãªäžææååãçæããæ¹æ³ãäžè¬çã
ä»®æ³ãã·ã³ã®äœæïŒ
管ç VM çšãµããããã«ç®¡ççšã®ä»®æ³ãã·ã³ãäœæãããã
ä»®æ³ãã·ã³ã§ã¯ã
- ãªãœãŒã¹äœææã®ãã³ãã¬ãŒãåŒãæãæ©èœãš
- ãªãœãŒã¹äœæåŸã®ãã³ãã¬ãŒãåŒãæãæ©èœãšã
䜵çšããïŒãããŠãè©äŸ¡åŒã®ä¿®æ£ã®ã³ãããã€ã³ãïŒã
-
ããŒã¿ã«äžã§ä»®æ³ãã·ã³ãæ§æããã
-
äœæåã«ãAutomation ãªãã·ã§ã³ãéžæãã
ARM ãã³ãã¬ãŒããšãã©ã¡ã¿ã»ãã¡ã€ã«ãåŒãæãã-
ä»®æ³ãã·ã³ã¯ã倿°ã®ãªãœãŒã¹ããæ§æãããããšãè§£ãã
- NIC
- NSG
- ãããªã㯠IP
- ä»®æ³ãã·ã³
-
ãŸããåãªãœãŒã¹éã«äŸåé¢ä¿ãããã
- NIC â ïŒNSGããããªã㯠IPïŒ
- NSG â ïŒïŒïŒ
- ãããªã㯠IP â ïŒïŒïŒ
- ä»®æ³ãã·ã³ â ïŒNICïŒ
-
-
Automation ãªãã·ã§ã³ããã³ãã¬ãŒãã«ããŒãžããã
-
ãã¹ã¯ãŒãã¯ãã°ããŒãã«äžæãªãœãŒã¹åæ§ã
parameters ã»ã¯ã·ã§ã³ã«å€æ°ã远å ããïŒããå㯠secureString ã«ããïŒ -
parameters ã»ã¯ã·ã§ã³ã«å€æ°ã®å å·¥ãå¿ èŠãªå Žåãvariables ã»ã¯ã·ã§ã³ã䜿çšãããŠããã
variables ã䜿çšããªãããã«å±éãããšããã®äžã«åç解決ãã¹ããã©ã¡ã¿ã確èªã§ããã®ã§ã
ãã®å€ã resourceId ã§åç解決ããïŒNIC ãå©çšãããµããããã NSG ã® ID ã該åœããïŒã -
æåŸã«ããã³ãã¬ãŒãã«ãåºæ¬çãªä¿®æ£ãæœãã
-
-
äžèšã®ä»®æ³ãã·ã³ãããŒã¿ã«äžã§å®éã«äœæãã
-
Automation ã¹ã¯ãªãããçæã»ç¢ºèªããã
ãããšã远å ã§ä»¥äžã®äŸåé¢ä¿ã確èªã§ããã- NIC â ïŒãµããããïŒ
- ä»®æ³ãã·ã³ â ïŒã¹ãã¬ãŒãžã»ã¢ã«ãŠã³ãïŒ
-
Automation ã¹ã¯ãªããããã³ãã¬ãŒãã«ããŒãžããã
-
äžèšã®äŸåé¢ä¿ã远å ããããåæ§ã«ã
芪å士ã®äŸåé¢ä¿ã«çœ®ãæãããšè¯ãïŒãµãããã â ä»®æ³ãããã¯ãŒã¯ïŒã -
æåŸã«ããã³ãã¬ãŒãã«ãåºæ¬çãªä¿®æ£ãæœãã
-
-
ãã³ãã¬ãŒãã®ä¿®æ£åŸãå®éã«ãªãœãŒã¹ãäœæããã
ïŒãã®éãã°ããŒãã«äžæãªãœãŒã¹çšã®å€æ°å ¥åãæ±ããããïŒ
è£è¶³ïŒsecureString ã®éèŠæ§ïŒ: ãã¹ã¯ãŒãã
stringåã§åãããšã
ãããã€å±¥æŽã«ãã©ã¡ãŒã¿ã®å€ãå¹³æã§æ®ãïŒããŒã¿ã«ããèŠããïŒã
secureStringã«ãããšå€ããã°ã«æ®ããªããããå®å šãªã®ã¯ãKey Vault ããåç §ããæ¹åŒã§ããã
"adminPassword": { "reference": { "keyVault": { "id": "/subscriptions/.../vaults/myVault" }, "secretName": "vmAdminPassword" } }ãããããšããã©ã¡ãŒã¿ ãã¡ã€ã«ã«ç§å¯ãã®ãã®ãæžããã«æžãã
ä»®æ³ãã·ã³ã®äœæïŒ
DNS çé
眮çšãµããããã« DNS ãµãŒãçšã®ä»®æ³ãã·ã³ãäœæããã®ã§ã
åé·åã®ã¿ã¡ã«å¯çšæ§ã»ããã«ïŒå°ã®ä»®æ³ãã·ã³ãé
眮ãããã
ãã®å ŽåãïŒå°äœæããŠã³ããã§å¢ãããšããæ¹æ³ãæ¡ããã
-
å ããããŒã¿ã«äžã§å¯çšæ§ã»ãããäœæããã
-
äœæåã«ãAutomation ãªãã·ã§ã³ãéžæãã
ARM ãã³ãã¬ãŒããšãã©ã¡ã¿ã»ãã¡ã€ã«ãåŒãæãã -
Automation ãªãã·ã§ã³ããã³ãã¬ãŒãã«ããŒãžããã
- å¯çšæ§ã»ãããããŒãžã
- ãã³ãã¬ãŒãã«ãåºæ¬çãªä¿®æ£ãæœãã
-
äžèšã®å¯çšæ§ã»ãããããŒã¿ã«äžã§å®éã«äœæãã
-
æŽã«ãããŒã¿ã«äžã§åœè©²å¯çšæ§ã»ããäžã«ä»®æ³ãã·ã³ãæ§æããã
-
äœæåã«ãAutomation ãªãã·ã§ã³ãéžæãã
ARM ãã³ãã¬ãŒããšãã©ã¡ã¿ã»ãã¡ã€ã«ãåŒãæãã -
Automation ãªãã·ã§ã³ããã³ãã¬ãŒãã«ããŒãžããã
- ä»®æ³ãã·ã³ãåè¿°ãšåæ§ã®æé ã§ããŒãžã
- ãã³ãã¬ãŒãã«ãåºæ¬çãªä¿®æ£ãæœãã
-
äžèšã®ä»®æ³ãã·ã³ãããŒã¿ã«äžã§å®éã«äœæãã
-
Automation ã¹ã¯ãªãããçæã»ç¢ºèªããã
ãããšã远å ã§ä»¥äžã®äŸåé¢ä¿ã確èªã§ããã- NIC â ïŒãµããããïŒ
- ä»®æ³ãã·ã³ â ïŒã¹ãã¬ãŒãžã»ã¢ã«ãŠã³ããå¯çšæ§ã»ããïŒ
-
Automation ã¹ã¯ãªããããã³ãã¬ãŒãã«ããŒãžããã
- äžèšã®äŸåé¢ä¿ãåè¿°ãšåæ§ã®æé ã§è¿œå ã
- æåŸã«ããã³ãã¬ãŒãã«ãåºæ¬çãªä¿®æ£ãæœãã
-
æåŸã«ãä»®æ³ãã·ã³ãã³ããã§å¢ããããªããŒã ããè¡çªãç¡ãããšã確èªããã
ïŒã¢ã³ãã»ãã«ãŠã§ã¢ãªã©ãæ§æãããšãVM åãå«ãŸããªããªãœãŒã¹ãå«ãŸããã±ãŒã¹ããããããïŒã -
ãã³ãã¬ãŒãã®ä¿®æ£åŸãå®éã«ãªãœãŒã¹ãäœæããã
ïŒãã®éãã°ããŒãã«äžæãªãœãŒã¹çšã®å€æ°å ¥åãæ±ããããïŒ -
æŽã«ãéç IP ãæ§æããŠã远å ã®ãã£ãŒãããã¯ãè¡ãã
- Automation ã¹ã¯ãªãããçæã»ç¢ºèªããã
- ã¹ã¯ãªããããã³ãã¬ãŒãã« Diff ïŒããŒãžã
- éç IP 㯠NIC ã®ã³ã³ãã£ã®ã¥ã¬ãŒã·ã§ã³ãããã
è£è¶³ïŒãã³ããã§å¢ãããã®ä»£æ¿ïŒ: åæã®ææ³ã¯çŽ æŽã ã確å®ã§ããã
çŸåšã¯ **copyèŠçŽ ïŒBicep ã§ã¯forã«ãŒãïŒ**ã§
åãå®çŸ©ã N åå±éã§ãããresource vm 'Microsoft.Compute/virtualMachines@2023-03-01' = [for i in range(0, 2): { name: 'dns-vm-${i}' ... }]ã³ããã ãšçæ¹ã ãçŽããŠäžæŽåã«ãªãäºæ ãèµ·ããããããã
å°æ°ãå¢ãããªãã«ãŒãã«ããæ¹ãããã
ãã ãåæãææãããVM åãå«ãŸããªããªãœãŒã¹ãã®è¡çªã¯
ã«ãŒãã§ãèµ·ããããã確èªã¯å¿ èŠã
Automation ã䜿çšããŠãã³ãã¬ãŒããäœæããéã®ãã€ã³ãã®ãŸãšãã
äœãã®å Žåãã以äžã®ãåºæ¬çãªä¿®æ£ãæœãã
-
ãã³ãã¬ãŒãå ã®ãã©ã¡ã¿å€ã®å ·äœå€åãè¡ãã
- template.json ã® resources ã»ã¯ã·ã§ã³ã®
"[parameters('XXXX')]"ãã
parameters.json ã® parameters ã»ã¯ã·ã§ã³ã®å ·äœå€ã«å€ããã - å ·äœå€ã«å€ãããtemplate.json ã® parameters ã»ã¯ã·ã§ã³ã®ãã©ã¡ã¿ãåé€ããã
- template.json ã® resources ã»ã¯ã·ã§ã³ã®
-
æ¢å®ã§ GUI ããã®å ¥åã䜿çšãããã©ã¡ã¿ã®åçå€åãè¡ãã
-
ãªãœãŒã¹ã»ã°ã«ãŒãåïŒnameïŒããªãœãŒã¹ãäœæããå ŽæïŒlocationïŒ
-
"[parameters('XXXX')]"ã ã£ãæã"[resourceGroup().XXXX]"ã«å€æŽããã
ïŒããã§ãã³ãã¬ãŒããå®è¡ããéã«äžãããããã©ã¡ã¿ã䜿çšãããããïŒ
-
-
åé·ãª concat 颿°ã¯æååã«ããŠããŸãã
è£è¶³ïŒãã®ãå ·äœå€åãã®æå³ïŒ: äžèŠãããš IaC ã®ååã«åãã
ïŒãã©ã¡ãŒã¿åãæ»ããŠããïŒããã«èŠããããããã¯åççã§ãããããŒã¿ã«ãããšã¯ã¹ããŒããããšãå€ããå¿ èŠã®ãªãå€ãŸã§
ãã¹ãŠãã©ã¡ãŒã¿åãããã
ãã®çµæãparameters ãæ°åå䞊ã³ã
æ¬åœã«å€ãããå€ãã©ããåãããªããªããããšã¯ã¹ããŒãçŽåŸãparameters ã 40 å â äœãæž¡ãã°ããã®ãäžæ ãæŽçåŸã parameters ã 3 å â ç°å¢ããšã«å€ããã®ã¯ããã ã**ãç°å¢ããšã«å€ãããã®ã ãããã©ã¡ãŒã¿ã«ããã**ãšããååã«
æ»ãäœæ¥ããšçè§£ãããšããã
ã°ããŒãã«äžæãªãœãŒã¹ãååšããå Žåãªã©ã®ã±ãŒã¹ã§å©çšããã
-
parameters ã»ã¯ã·ã§ã³ã䜿çšãããšã
å®è¡æã«ãŠãŒã¶å ¥åãåæ ã§ããã- parameters ã»ã¯ã·ã§ã³ã«å€æ°ã远å ããã
"parameters": {
"virtualDataCenterId": {
"type": "string",
"defaultValue": ""
}
},- ã°ããŒãã«äžæãªãœãŒã¹åãªã©ã«ïŒæååé£çµã§ïŒåæ ããã
"name": "[concat('xxxxxx', parameters('virtualDataCenterId'))]",-
variables ã»ã¯ã·ã§ã³ã䜿çšãããšã
parameters ã»ã¯ã·ã§ã³ã®å€æ°ãå å·¥ã§ããã- variables ã»ã¯ã·ã§ã³ã«å€æ°ã远å ã parameters ãå å·¥ããã
"variables": {
"diagnosticsStorageAccountName": "[concat('azrefarchubrgdiag', parameters('virtualDataCenterId'))]"
},- ã°ããŒãã«äžæãªãœãŒã¹åãªã©ã« variables ã䜿çšããã
"name": "[variables('diagnosticsStorageAccountName')]",ä»®æ³ãããã¯ãŒã¯äœææã
ãªãœãŒã¹äœææã®ãã³ãã¬ãŒãåŒãæãæ©èœã䜿çšããŠã
ãã³ãã¬ãŒããæ°èŠäœæã
-
以éãåºæ¬çã«ã¯ãæ¢åãªãœãŒã¹ããã
ãªãœãŒã¹äœæåŸã®ãã³ãã¬ãŒãåŒãæãæ©èœã䜿çšããŠã
Automation ã¹ã¯ãªããããã³ãã¬ãŒãã«ããŒãžã- å±éããããªãœãŒã¹ã¯ããŒãžããã
- ãµãã»ãªãœãŒã¹ã®ã¿ããã³ãã¬ãŒãã«ããŒãžããã
- åæ§ã«ãäŸåé¢ä¿ãåæããŠãäŸåé¢ä¿ãèšå®ãçŽãã
-
åã³ããªãœãŒã¹äœææã®ãã³ãã¬ãŒãåŒãæãæ©èœã䜿çšããŠã
Automation ãªãã·ã§ã³ããã³ãã¬ãŒãã«ããŒãžããå Žåã
â» ä»®æ³ãã·ã³çã§ã¯ãäžèšïŒã€ã®æ¹æ³ã䜵çšããã
-
äŸåé¢ä¿èšå®
-
åºæ¬çã«ããµãã»ãªãœãŒã¹ã¯äœ¿çšããã
芪å士ã®äŸåé¢ä¿ã«çœ®ãæãããšè¯ãã -
åã³ãAutomation ãªãã·ã§ã³ã䜿çšããå Žåã
ïŒæ¢ã«ãããªãœãŒã¹ãåæã«ãªã£ãŠããã®ã§ïŒäŸåé¢ä¿ã®ä¿®æ£ãå¿ èŠã«ãªãããšãããã- å®çŸ©ã«ãªãœãŒã¹ãèå¥ããåºå®å€ã® ID ã䜿çšãããŠããå Žåã
resourceId 颿°ã䜿çšããåç解決ãå¿ èŠã«ãªãããšãããã - ãŸããäŸåé¢ä¿èšå®ã¯ã芪å士ã®äŸåé¢ä¿ã«çœ®ãæãããšè¯ãã
- å®çŸ©ã«ãªãœãŒã¹ãèå¥ããåºå®å€ã® ID ã䜿çšãããŠããå Žåã
-
-
dependsOn ã® ID ã®æžãæ¹
æååãšé¢æ°ã®ïŒçš®é¡ãããæååã䜿çšããæ¹æ³ã§ã¯ã
簡䟿ãªèšè¿°ãã§ããããã«ãªã£ãŠããããæå®ãææ§ã«ãªãæãã- æååïŒ
"Microsoft.Network/virtualNetworks/azrefarc-hub-vnet/subnets/mgmt" - 颿°ïŒ
"[resourceId(resourceGroup().name, 'Microsoft.Network/virtualNetworks/subnets', 'azrefarc-hub-vnet', 'mgmt')]"
- æååïŒ
è£è¶³ïŒBicep ãªãäžèŠã«ãªãäœæ¥ïŒ: ãã®ç¯ãæ±ã£ãŠãã
dependsOnã®æäœæ¥ãšresourceIdã®çµã¿ç«ãŠã¯ã
ARM ãã³ãã¬ãŒãïŒJSONïŒãæžãããã§æãéªšã®æããéšåã§ãããBicep ã§ã¯ãä»ã®ãªãœãŒã¹ã®ããããã£ãåç §ããæç¹ã§
äŸåé¢ä¿ãèªåçã«æšè«ããããããåådependsOnãæžããªããresource vnet 'Microsoft.Network/virtualNetworks@2023-05-01' = { ... } resource nic 'Microsoft.Network/networkInterfaces@2023-05-01' = { properties: { ipConfigurations: [{ properties: { // vnet ãåç § â èªåçã« vnet ãžã®äŸåãèšå®ããã subnet: { id: vnet.properties.subnets[0].id } } }] } }æ¬ããŒãžã®ã芪å士ã®äŸåé¢ä¿ã«çœ®ãæããããšãã工倫ãã
Bicep ã§ã¯æèããã«æ£ãã圢ã«ãªãã
-
ãªãœãŒã¹ã»ã°ã«ãŒãåãå€ããããšã«ãã£ãŠã
- 䞊è¡å±éãå¯èœã§çŽ æ©ãäœæ¥ãããããããšãåºæ¥ãã
- ãã ãã課éããããã®ã§ã䞊è¡ããŠãªãœãŒã¹ã»ã°ã«ãŒãã®éæŸãè¡ãã
-
ãã³ãã¬ãŒããè€éãå±éã«æéã®ããã
ãªãœãŒã¹ã¯æåŸã«ãã³ãã¬ã«è¿œå ããããã«ããã- VPN Gateway ã®äœæ
-
ä»®æ³ãã·ã³ã®äœæïŒãïŒ
- JSON å®çŸ©ãããªã倧ããªãµã€ãºã«ãªãã
- ä»®æ³ãããã¯ãŒã¯ããµãããããªã©ã«æ¯ã¹ããšãããã€ã«æéããããããïŒïŒïŒ
è£è¶³ïŒVPN Gateway ãé ãçç±ïŒ: VPN Gateway ã®äœæã«ã¯
30ã45 åãããïŒããã¯ãšã³ãã§å°çšã® VM ãæ§æãããããïŒã
詊è¡é¯èª€ã®æåŸã«åãããšããåæã®å€æã¯æ¥µããŠå®è·µçã§ããã
åæ§ã«æéã®ããããã®ãšããŠãAzure Firewallã
Application GatewayãAKS ããããçŸåšã¯
what-ifã§æ§æã»åç §ã®èª€ããäºåã«æœ°ããããã
ãäœã£ãŠã¿ãŠå€±æãããåæ°èªäœãæžãããã
-
ããããã¯ã©ãŠãã®ã€ã³ãã©æ§ç¯ã¯ã
ãtrial and errorããªæãããããã
åºç€ã«çæãããšææ»ãã倧ãããªãå¯èœæ§ãããã -
æ ã«ãæ§ç¯ã®åºç€ã«ã¯ããŒã¿ã«ã䜿çšãã
çããŠããããã³ãã¬ãŒãåãéå§ããããã«ããã
è£è¶³ïŒãã®çµè«ãæ¬ããŒãžã®çœçïŒ: ãIaC ã¯æåããããã¹ãããšãã
äžè¬è«ã«å¯Ÿãã**ãæ§æã確å®ããŠããã**ãšããçŸå®çãªæéã
瀺ããŠããç¹ãæ¬ããŒãžã®äŸ¡å€ã§ãããIaC (Infrastructure as Code) ãè¿°ã¹ã
ãé©åãªã¿ãŒã²ããã«æå¹ããã¹ã±ãŒã«ã»ã¡ãªãããå¿ èŠããšããçä¿ãš
åãè¶£æšã§ããã
- æ§æãæ¢çŽ¢ããæ®µéã¯ããŒã¿ã«ïŒéãã詊ããããïŒ
- æ§æãåºãŸã£ã段éã§ãã³ãã¬ãŒãåïŒåçŸæ§ãç£æ»æ§ïŒ
ãšããæ®µéåããå®åã«å³ããŠããã
ãªãããã®å€æã¯åãç°å¢ãäœé¢ãäœãäºå®ããããã§å€ããã
æåããè€æ°ç°å¢ã確å®ããŠãããªããæ©ãã«ã³ãŒãåããæ¹ãããã
- Azure Resource Manager ãã³ãã¬ãŒãå
¥éãšäœæ | ããã°äžèЧ | DATUM STUDIO æ ªåŒäŒç€Ÿ
https://datumstudio.jp/blog/azure-resource-manager-%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E5%85%A5%E9%96%80%E3%81%A8%E4%BD%9C%E6%88%90
- Azure Resource Manager ãã³ãã¬ãŒã
https://azure.microsoft.com/ja-jp/products/arm-templates/
-
Azure Resource Manager
-
ãã³ãã¬ãŒãã®æŠèŠ
https://learn.microsoft.com/ja-jp/azure/azure-resource-manager/templates/overview -
ãã³ãã¬ãŒãããããã€ãã - Azure portal
https://learn.microsoft.com/ja-jp/azure/azure-resource-manager/templates/quickstart-create-templates-use-the-portal -
ãã³ãã¬ãŒãã®ãã¹ã ãã©ã¯ãã£ã¹
https://learn.microsoft.com/ja-jp/azure/azure-resource-manager/templates/best-practices -
ãã³ãã¬ãŒãã®æ§é ãšæ§æ
https://learn.microsoft.com/ja-jp/azure/azure-resource-manager/templates/syntax -
Bicep ãšã¯
https://learn.microsoft.com/ja-jp/azure/azure-resource-manager/bicep/overview -
What-If æäœ
https://learn.microsoft.com/ja-jp/azure/azure-resource-manager/templates/deploy-what-if
-
-
Azure Virtual Machines
- ã¯ã€ã㯠ã¹ã¿ãŒã:Resource Manager ãã³ãã¬ãŒãã䜿çšã㊠Windows VM ãäœæãã
https://learn.microsoft.com/ja-jp/azure/virtual-machines/windows/quick-create-template - ã¯ã€ã㯠ã¹ã¿ãŒã:Resource Manager ãã³ãã¬ãŒãã䜿çšã㊠Ubuntu Linux VM ãäœæãã
https://learn.microsoft.com/ja-jp/azure/virtual-machines/linux/quick-create-template
- ã¯ã€ã㯠ã¹ã¿ãŒã:Resource Manager ãã³ãã¬ãŒãã䜿çšã㊠Windows VM ãäœæãã
-
ARMTemplate ãããã€çšã® Json ãã€ãžã
https://qiita.com/sat0tabe/items/7d268d140aa849fbb665 -
Azure ã® ARM ãã³ãã¬ãŒããçè§£ãã
- part1 (åºæ¬ç·š)
https://qiita.com/j-tsurumi/items/cc86e9412349da80a323 - part2 (ãããã¯ãŒã¯ãªãœãŒã¹ç·š)
https://qiita.com/j-tsurumi/items/d7e9eda9da223764a799
- part1 (åºæ¬ç·š)
-
Azure Resource Manager ãã³ãã¬ãŒãã
- 䜿çšããä»®æ³ãã·ã³ã®ãããã€
https://qiita.com/yuki451/items/9a6bfc0e544cdcc32788 - 䜿çšããèªåã·ã£ããããŠã³ã®èšå®
https://qiita.com/yuki451/items/347cac19e6a76455edb6 - 䜿ãè€æ°ã®ãã©ã¡ãŒã¿ãŒããŸãšããŠãããã€ãã PowerShell ã¹ã¯ãªãã
https://qiita.com/yuki451/items/d8b1e5c9b8de8e9f2462
- 䜿çšããä»®æ³ãã·ã³ã®ãããã€
-
ARMTemplate ã§ AzureDNS ã®ãªãœãŒã¹äœæãšã¬ã³ãŒããèšå®ãã(CLI ãããã)
https://qiita.com/HiroyukiSakoh/items/6d3538303bbc310dd59f -
Azure Function v2 ã« HttpClientFactory+Polly
ãçµã¿èŸŒã¿ãHttpClient ã®å詊è¡ãå®è£ ãã
https://qiita.com/HiroyukiSakoh/items/92d1365db6447bd64550
FgCF > ãŒããã©ã¹ãåãã«ãã¯ã©ãŠã IT ç°å¢ > Azure ã«ããä»®æ³ããŒã¿ã»ã³ã¿æ§ç¯ææ³
ïŒ å
±éæè¡ > ãããã¯ãŒã¯åºç€ã®æ§ææ¹æ³ > ARM ãã³ãã¬ãŒãã®å©ç𿹿³
-
YouTube
-
videoãppt
https://nakama.blob.core.windows.net/mskk/2019_01_03_PracticalARMTemplate.zip
â» äœç³»ã»pwd 㯠FgCF (Financial-grade Cloud Fundamentals) ãåç §ã
- Azure CLI ãã ARM ãã³ãã¬ãŒããå©çšã㊠Ubuntu ããããã€ãã
https://tech-lab.sios.jp/archives/2975
Tags: ç§»è¡, ã€ã³ãã©ã¹ãã©ã¯ãã£, ã¯ã©ãŠã, ã»ãã¥ãªãã£, Azure, IaC