Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Azure Infrastructure as Code 体験入隊

17,781 views

Published on

2017/12/12 Azure Antenna

Published in: Technology
  • Sex in your area is here: ♥♥♥ http://bit.ly/2F90ZZC ♥♥♥
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Dating direct: ❶❶❶ http://bit.ly/2F90ZZC ❶❶❶
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Azure Infrastructure as Code 体験入隊

  1. 1. { “名前” : “真壁 徹(まかべ とおる)”, “所属” : “日本マイクロソフト株式会社”, “役割” : “クラウド ソリューションアーキテクト”, “経歴” : “大和総研  HP Enterprise”, “特技” : “クラウド & オープンソース” }
  2. 2. リソースグループ Managed Disk 仮想マシン 仮想 ネットワーク (サブネット) NIC パブリック IPアドレス Web App SQL Database
  3. 3. クラシック リソースマネージャー 呼称 Azure Service Manager (ASM) Azure Resource Manager (ARM) バージョン V1 V2 リソースの表現や設定 XML JSON GUI クラシックポータルから Azureポータルへ移行中 Azureポータル 位置づけ 既存ユーザーの投資保護 推奨 小ネタ APIをRDFE(Red Dog Front End)と呼ぶことも ※Red DogはAzure初期の コードネーム 略が某CPUアーキテク チャーと混乱しないよう、 文脈に注意
  4. 4. サーバー ストレージ ネットワーク Web App etc Azure Resource Manager REST API Azure ポータル CLI (PowerShell, Azure CLI) SDK (C#, Node, Python, etc) or Direct ユーザー コード OSS / 3rd Party ツール ユーザー コード / スクリプト / 設定ファイル
  5. 5. リソースはJSONで表現 • https://management.azure.com/subscriptions/{s ubscriptionId}/resourceGroups/{resourceGroup} /providers/Microsoft.Compute/virtualMachines/ {vm}&api-version={apiVersion} • HTTPメソッドで操作 (REST) • 作成、更新はPUT • 情報取得はGET • 削除はDELETE
  6. 6. サーバー ストレージ ネットワーク Web App etc Azure Resource Manager REST API Azure ポータル CLI (PowerShell, Azure CLI) ユーザー コード OSS / 3rd Party ツール ユーザー コード / スクリプト / 設定ファイル SDK (C#, Node, Python, etc) or Direct ①Azure Resource Manager テンプレート デプロイメント ②Terraform ③Ansible
  7. 7. ARMテンプレート Terraform Ansible 開発リード Microsoft Hashicorp (OSS) Red Hat (OSS) 対応プラットフォーム Azure/Azure Stack マルチプラットフォーム マルチプラットフォーム リソース記述形式 JSON HCL/JSON YAML Azureリソース対応範囲 広 中 狭 依存ツール、SDK Azureポータル、もしくは Azure CLI/PowerShell Azure SDK for Go Azure SDK for Python ARMテンプレート対応 ー 有り 有り その他 新サービス、機能への追 従が早い 変数定義力が強い(出力結 果も容易に利用可) Roleの再利用性が高く、 サンプルも豊富(Galaxy) Azureの標準機能でワンス トップサポート HCLの可読性が高い PackerのProvisionerとし ても使える インフラ寄り アプリ・プラットフォームソフト寄り
  8. 8. ひとつのツールでやるべき? (できなくはないですが)
  9. 9. リソース 他CI/CDツールや リポジトリ ARMテンプレート デプロイメント Terraform + ARMテンプレート デプロイメント インフラのデプロイ アプリ&プラットフォームソフトの デプロイと更新 Ansible • アプリ&プラット フォームソフトの セットアップと更新 • VMカスタムイメージ 作成 Packer
  10. 10. ARMテンプレートで足元を固めて、他ツールも検討
  11. 11. ARMテンプレート Azure ポータル PowerShell / Azure CLI API Endpoint 1. テンプレートを 作る 2. テンプレートを 投入する 3. 楽しみに 待つ
  12. 12. テンプレートの構造 ←スキーマ定義URI。いまのところ固定。 ←任意。ユーザーが決められる。 (1.0.0など) ←テンプレート実行時に動的に指定したい値。 ←テンプレート内で使える変数。複数回参照される値など。 ←作成するリソースの定義。 ←実行終了時に出力したい値。
  13. 13. テンプレート例 (Azure Container Instances) ####続く####
  14. 14. テンプレート例 (Azure Container Instances) ####続き#### ####続く####
  15. 15. テンプレート例 (Azure Container Instances) ####続き - 途中省略#### ####途中省略####
  16. 16. https://docs.microsoft.com/ja-jp/azure/azure-resource-manager/resource-group-authoring-templates https://docs.microsoft.com/ja-jp/azure/azure-resource-manager/resource-group-template-functions
  17. 17. https://raw.githubusercontent.com/ToruMakabe/AA_IaC_Workshop/master/aci/template01.json
  18. 18. ARMテンプレート +パラメータ Azure ポータル PowerShell / Azure CLI API Endpoint 1. テンプレートと パラメータを作る 2. テンプレートと パラメータを投入 する 3. 楽しみに 待つ
  19. 19. テンプレート例 (Azure Container Instances) ####省略#### ####省略#### ####省略####
  20. 20. パラメータ例 (Azure Container Instances) { "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "containerImage": { "value": "httpd:alpine" } } }
  21. 21. https://raw.githubusercontent.com/ToruMakabe/AA_IaC_Workshop/master/aci/template02.json
  22. 22. https://code.visualstudio.com/download https://marketplace.visualstudio.com/items?itemName =msazurermtools.azurerm-vscode-tools
  23. 23. Azure CLI or PowerShell ランタイム/環境 導入形式 Windows Azure CLI Python MSI Windows Subsystem for Linux 各パッケージマネージャ / マニュアル Docker Docker PowerShell WMF PowerShellGet(推奨) macOS Azure CLI Python Homebrew / マニュアル Docker Docker PowerShell (ベータ) .NET Core PowerShellGet(推奨) Linux Azure CLI Python 各パッケージマネージャ / マニュアル PowerShell (ベータ) .NET Core PowerShellGet(推奨) Azure Cloud Shell Azure CLI ブラウザ インストール済み PowerShell (Preview) ブラウザ インストール済み
  24. 24. Windows macOS VS Code VS Code Azure系 拡張 その他拡張 (言語系など) Settings Sync 拡張 Azure系 拡張 その他拡張 (言語系など) Settings Sync 拡張
  25. 25. Windows macOS ブラウザ WSL PowerShell ブラウザ Azure CLI (メイン) Azure CLI (メイン) Cloud Shell Cloud Shell Azure CLI PowerS hell Azure CLI PowerShell
  26. 26. "terminal.integrated.shell.windows": "C:¥¥windows¥¥sysnative¥¥bash.exe“)
  27. 27. https://code.visualstudio.com/download https://docs.microsoft.com/ja-jp/cli/azure/install-azure-cli?view=azure-cli-latest https://docs.microsoft.com/ja-jp/powershell/azure/install-azurerm-ps?view=azurermps-5.0.0 https://docs.microsoft.com/ja-jp/azure/azure-resource- manager/resource-manager-vscode-extension "outputs": { "groupLocation": { "type": "string", "value": "[resourceGroup().location]" }, "storageUri": { "type": "string", "value": "[reference(concat('Microsoft.Storage/storageAccounts/',variables('stora geName'))).primaryEndpoints.blob]" } }
  28. 28. https://github.com/ToruMakabe/AA_IaC_Workshop
  29. 29. https://azure.microsoft.com/en-us/resources/templates/ https://github.com/ToruMakabe/ImpressAzureBook ざっと眺めてみて、楽しそうなものを試してください
  30. 30. https://github.com/Azure/azure-quickstart-templates
  31. 31. https://azure.microsoft.com/ja-jp/regions/services/
  32. 32. –n hoge01 … PowerShell: New-AzureRmResourceGroupDeployment –Name hoge01 … 例: デプロイ毎に違う名前でストレージアカウントを作りたい
  33. 33. https://docs.microsoft.com/ja-jp/azure/azure-resource-manager/resource-group-template-functions-string#concat https://docs.microsoft.com/ja-jp/azure/azure-resource-manager/resource-group-template-functions-string#uniquestring
  34. 34. https://docs.microsoft.com/ja-jp/azure/azure-resource-manager/resource-group-define-dependencies#dependson https://docs.microsoft.com/ja-jp/azure/azure-resource-manager/resource-group-template-functions-numeric#copyindex
  35. 35. https://docs.microsoft.com/ja- jp/azure/architecture/best- practices/naming-conventions
  36. 36. https://docs.microsoft.com/ja-jp/azure/azure-resource-manager/resource-group-linked-templates
  37. 37. https://docs.microsoft.com/ja- jp/azure/templates/microsoft.auto mation/automationaccounts
  38. 38. https://github.com/ToruMakabe/ImpressAzureBook/tree/master/NodeIaaS
  39. 39. https://github.com/ToruMakabe/ImpressAzureBook/tree/master/NodeIaaS
  40. 40. • リソースが既にリソース グループに存在しており、その設定が変更されていない場合、操作の結果に変わりは ありません。 • リソースの設定を変更した場合、リソースはそれらの新しい設定でプロビジョニングされます。 • 既存のリソースの場所または種類を更新しようとすると、デプロイがエラーで失敗します。 • 後から変更できない属性があります。(VMのimageReferenceなど) • ARMの管理範囲を外れるものは注意してください。 (VM拡張機能など。例: 拡張はインストールされたがその 設定中にエラーで終了。再実行したら拡張がすでに入っているので失敗) • 既存リソースの変更は、必ず別環境で検証しましょう。新規作成→並行運用→切り替えの方が楽かも。 https://docs.microsoft.com/ja-jp/azure/azure-resource-manager/resource-group-template-deploy-cli
  41. 41. https://docs.microsoft.com/ja-jp/azure/azure-resource-manager/resource-group-overview https://docs.microsoft.com/en-us/rest/api/ https://github.com/Azure/azure-resource-manager-schemas
  42. 42. © 2017 Microsoft Corporation. All rights reserved. 本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。

×