2016 Azure Bootcamp Taipei - Infrastructure as Code by Azure Resource Manager Template

2,277 views

Published on

2016 Azure Bootcamp Taipei
Infrastructure as Code by Azure Resource Manager Template

Published in: Technology

2016 Azure Bootcamp Taipei - Infrastructure as Code by Azure Resource Manager Template

  1. 1. Howie YU
  2. 2. About me 雲端研究室
  3. 3. 先問幾個問題
  4. 4. 在場有多少人被荼毒用過/還再用ASM?
  5. 5. 有多少人已經開始使用ARM?
  6. 6. 有多少人不知道什麼是ARM ASM?
  7. 7. 有多少使用過Azure CLI 開過 VM?
  8. 8. 有多少使用過ARM Template開過 VM?
  9. 9. 感謝配合~
  10. 10. 圖片來源:mucski 故事是這樣開始的
  11. 11. 我雲端奇幻旅程….
  12. 12. TenMax on Azure
  13. 13. 我以為Azure 敢出來跟AWS PK應該蠻有兩把刷子的~ 但是實際上….
  14. 14. 蠻荒時代 – Azure(v1) ASM •  Basic unit – cloud service •  No logic group concept •  No role-based access control •  Slow Blocking deploy •  No deployment template!
  15. 15. 蠻荒時代 – Azure(v1) ASM •  Basic unit – cloud service –  Hard to migration virtual machine –  Hard to locate resource Produc1on Stage
  16. 16. 蠻荒時代 – Azure(v1) ASM Old Portal •  No role-based access control •  Everybody is admin!? •  No Logic group •  DB group •  Service group •  Location group
  17. 17. 無盡的Loading和無盡的等待…. Slow Blocking deploy!
  18. 18. 為了加速Provisioning 的速度….程式自動化!
  19. 19. 蠻荒時代 – Azure(v1) ASM No deployment template! Write Script yourself
  20. 20. 人家 AWS 2012年就有 CloudFormation了…
  21. 21. 苦水吐完了…. 我今天真的不是來砸場的
  22. 22. Azure(v2) ARM is Coming
  23. 23. ASM vs. ARM (Azure Resource Manager)
  24. 24. 終於要進入主題…. Infrastructure as Code
  25. 25. Software Stack Azure Resource Provision OS Configuration App Deployment
  26. 26. Things to be done •  Choose OS Image •  Create VM •  Create Disk •  Setup Network •  Setup Load balance •  Setup OS •  Firewall seDng •  Install applica1on ( Nginx , Apache…. ) •  Install java, Python, Node.. •  Upload War •  Upload html to Apache •  Docker pull •  …. Azure Resource Provision OS Configuration App Deployment
  27. 27. Software architecture - much more
  28. 28. Software stack automation = Infrastructure as Code?
  29. 29. Principles of Infrastructure as Code •  Principle –  Reproducibility –  Consistency –  Repeatability –  Disposability –  Service continuity –  Self-testing systems –  Self-documenting systems –  Small changes –  Version all the things
  30. 30. Azure Templates can: •  Ensure Idempotency •  Simplify Orchestration •  Simplify Roll-back •  Provide Cross-Resource Configuration and Update Support Azure Templates are: •  Source file, checked-in •  Specifies resources and dependencies (VMs, WebSites, DBs) and connections (config, LB sets) •  Parametized input/output Instan1a1on of repeatable config. Configura)on à Resource Group Power of Repeatability SQL - A Website Virtual Machines SQL-A Website [SQL CONFIG] VM (2x) DEPENDS ON SQLDEPENDS ON SQL SQLCONFIG Source: hUps://channel9.msdn.com/Events/Build/2014/2-607
  31. 31. 讓我們先來看看template長什麼樣子…
  32. 32. Structure of Template
  33. 33. Azure-quick-template hUps://github.com/Azure/azure-quickstart-templates/tree/master/100-STARTER-TEMPLATE-with-VALIDATION Template Template paramteter Template metadata
  34. 34. Parameter (外部參數)
  35. 35. 外部傳入的參數 變數 Resources Template 預設值 建立storage account 建立public ip
  36. 36. Resource •  Compute resources –  Virtual Machine –  Virtual Machine scale set •  Storage resources –  Storage Account •  Network Resource –  Gateway –  Router –  Network interface –  Network Security Group •  CDN Resource •  …
  37. 37. Example – Compute Resource
  38. 38. 那個…等一下…太多了~ 我記不住…
  39. 39. 降低學習門檻 -1 先 視 覺 化
  40. 40. 視覺化Template 視覺化網站:hUp://armviz.io/#
  41. 41. 選取你要的template
  42. 42. 嘗試修改Resource 內容
  43. 43. 歸納出常用Template的種類 •  Single Virtual Machine Service •  Cluster Virtual Machine Service –  Internal Load Balancer •  有內部LB需求 –  Load Balancer + Public IP/DNS + Availability Set •  對外服務, LB需求 Availability需求較高的服務
  44. 44. 降低學習門檻 -2 參 考 現 有 架 構
  45. 45. Azure Resource Explorer Resource View Resource Group
  46. 46. 從resource group匯出template (Portal)
  47. 47. 從resource group匯出template (CLI) $ azure group export ${resourceGroup} ${exporta_folder}
  48. 48. 終於可以開始Deploy了!
  49. 49. deploy template $ azure group deployment create --resource-group ${resourceGroup} --template-file ${templateFile} --parameters ${parameter} --subscription ${subscription} --name tenmax-sg-ssp-ap-prod_`date +%Y%m%d%H%M%S` --verbose --json deployment name
  50. 50. Example – Tenmax 的 infrastructure 目錄規劃 Azure Template scripts (Template參數寫在 script裡面) Azure Templates 根據resource group分資料夾 Ansible
  51. 51. 參數很多很煩 檔案切來切去
  52. 52. 把參數寫 在script 裡面 template template參數 deploy參數 驗證template
  53. 53. Deployment modes • Incremental (default) –  保留resource group中Template裡面沒有定義的resources –  新增 Template 中有但是resource group不存在的resource –  不會重新設定已經存在resource group中的resource (除非template異動) • Complete –  刪除resource group中Template裡面沒有定義的resources –  新增 Template 中有但是resource group不存在的resource –  不會重新設定已經存在resource group中的resource (除非template異動) –  CLI: $ azure group deployment create --mode Complete …
  54. 54. •  Incremental (default) -  從Template中新增resource group不存在的resource •  新增硬碟 -  不會重新設定已經存在resource group中的resource (除非template異動) •  改static IP •  Complete -  刪除resource group中Template裡面沒有定義的resources •  移除硬碟 •  移除多的網卡 Example - Deployment modes
  55. 55. 部署注意事項 •  不同resource group要共用一個storage account時,要注意 template裡面的resource id是否相同。 •  每個resource group都有自己的subnet。 •  當砍掉VM重建相同名稱VM時,常常會有VHD名稱衝突,導 致建立失敗。此時需要手動砍掉VHD。 •  Scale up時,整個template裡面的機器都會同時暫停升級 (會有downtime)
  56. 56. 問題排查
  57. 57. 部署問題排查 (CLI) $ azure group log show -l -v ${resourceGroup}
  58. 58. 部署問題排查 (Portal) resource group deployment deploy參數裡面的name
  59. 59. 部署問題排查 (Portal)
  60. 60. References •  Azure Quickstart Templates github •  Azure Quickstart Templates •  Deploy resources with Azure Resource Manager templates •  Authoring Azure Resource Manager templates •  Deploy with Azure CLI •  Template export
  61. 61. QA
  62. 62. 如果你覺得今天講的: 內容太淺 程度太低~ 觀念錯誤~

×