Рубрики
Uncategorized

Infra как код в Azure, что нового для 2020 в развертывании шаблонов ARM

Во время MS Ognite 2019 в ноябре было несколько больших объявлений о новых функциях в ARM TE … Помечено облаком, рукой, лазурным, дежоптом.

Шаблоны менеджера Azure Resource Manager (5 серий части)

Во время MS Ognite 2019 в ноябре в ноябре было несколько больших объявлений о новых функциях в развертывании шаблонов ARM. Как я в основном работаю с шаблоном руки при выполнении инфраструктуры в качестве кода, я решил говорить о нескольких из них.

Комментарии

Для журнала я думал, что единственный способ прокомментировать на что-то было использовать свойства комментариев в ресурсе.

"comments": "This storage account used by the function App",

Но на самом деле я ошибался. Поддержка шаблонов руки/* */и//Комментарии надолго.

  "variables": {
   // "storageAccount": "[concat('st', uniquestring(resourceGroup().id))]"
  },
  "resources": [
    /*
    {
      "type": "Microsoft.Storage/storageAccounts",
      "name": "[variables('storageAccount')]",
      "location": "[parameters('location')]",
      "comments": "",
      "apiVersion": "2019-04-01",
      "sku": {
        "name": "[parameters('storageAccountType')]"
      },
      "kind": "StorageV2",
      "properties": {}
    }
    */  
  ],

У вас могут быть некоторые ошибки в VSCode или других инструментах ранее. Но если вы используете VSCode с последней версией инструментов Microsoft Azure ARM, это не должно быть проблемой сейчас, и вы можете начать комментировать одну строку или весь ресурс (просто позаботьтесь о запятой)

Существует 3 действительная схема для развертываний ARM.

  • 2014-04-01-превью
  • 2015-05-01
  • 2019-04-01

Только последние 2019-04-01 получит обновление схемы для новых ресурсов Azure Resources и API.

С обновленной версией инструментов ARM для VSCode существовала 3 других основных объявления в MS IGNITE 2019. Что-если, развертываемые контролирует ресурс и инструментарий ARM. Эти новости все еще находятся в превью, и вам придется запросить доступ через этот ссылка Отказ

Что, если

Когда я думаю о том, что — если, я думаю о том, что — если выключатель вы можете использовать с командлетом PowerShell. Опция дает вам выбор запуска команды и увидеть действие, которое будет выполняться, если вы запустите ее. Целью функции того, что — если в Azure — это рассказать, что будет развернуто, обновляется или удалена файлом шаблона. Эта функция похожа на то, что вы получаете, когда вы используете команду Terraform Plan. Это дает вам намеки о том, что шаблон будет к вашей среде в Azure.

Инструмент основан на Cmdlet PowerShell, New-AzdeploymentwhenteWhatif. Командлет должен знать область охвата, либо группу ресурсов, либо подписку, имя группы ресурсов (или имя подписки) и путь к файлу шаблона, которому вам нужно проверить. Он перечисляет все ресурсы в шаблоне, сравнивают список результатов с текущим состоянием ресурсов в пределах объема, либо подписки, либо группу ресурсов.

New-AzDeploymentWhatIf -ScopeType ResourceGroup -ResourceGroupName MyRg -TemplateFile .\mytemplate.json

Если в текущей группе ресурсов нет ничего, желаемое состояние будет простым созданием ресурсов, а командлет будет создан цветовой ресурс для создания зеленого цвета с разрешением свойств. Но если ресурс должен быть удален, он будет отображаться красным, и если свойство в ресурсе должно быть изменено, он будет отображаться в фиолетовом режиме. Эта функция все еще находится в частном предварительном просмотре, и вам нужно запросить доступ через этот ссылка И вы можете столкнуться с некоторыми ложными позитивами. Вы можете сообщить об этом на Гадость Это поможет уменьшить шум для конечного продукта.

Развертывание поставщика ресурсов

Это новый ресурс, который поможет вам выйти за рамки развертывания ARM, Microsoft. Ресурсы/развертываниеКрипеты. Это превью, API — 2019-10-01-превью.

Поставщик ресурсов сценариев развертывания примет скрипт и параметры и построит контейнер (с Core PowerShell Core и Azure PowerShell) в текущей подписке. Управляемая идентичность может быть связана с контейнером для выполнения действий в подписке. Этот ресурс можно рассматривать как расширение скрипта для VM на уровне подписки. Расширение VM Script VM позволяет настроить что-то в VM после развертывания VM.

РазвертываниеПрипты должны использоваться таким образом. Расширение развертываний ARM с действиями, которые вы не можете сделать с развертыванием ARM. Если шаблон всплывает учетную запись на хранилище, вы можете захотеть скачать файлы внутри, вам может потребоваться выполнить регистрацию приложений, настройку Adure AD или просто выполнить некоторые тесты.

Но развертывание сценариев ресурса не следует использовать для развертывания других ресурсов Azure. Это будет странно использовать его для развертывания виртуальной машины. Это сделает ваше развертывание императивным (по сравнению с декларативным) и недействительным. Он нарушит правила инфраструктуры в качестве кода, способный развернуть ресурсы много раз одни и те же шаблон и только модифицировать, создавать или удалить, когда между документом JSON и развернутыми ресурсами есть дрейф.

Ресурс развертывания Cripts — это прогон и забывает процесс. Это будет ваша обязанность сделать сценарий IdEmpotent (проверьте желаемое состояние, прежде чем делать какие-либо модификации) и оказывать реализацию.

Как это работает? Ресурс появится контейнер в Azure, используя экземпляр Azure Container и учетную запись с помощью Azuredeploymentscripts-PowerShell Docker Docker. Ресурс принимает несколько параметров. Среди них вам нужно обеспечить личность с

"identity": {
                "type": "UserAssigned",
                "userAssignedIdentities": {
                    "[variables('Identity')]": {
                    }
                }
            }

Эта идентичность должна быть настроена в Azure, чтобы гарантировать доступ к нужным компонентам. Одной из наиболее важных свойств является ForceUpDatetag. При развертывании ресурса с ARM процесс смотрит на текущее состояние, но ресурс развертывания CRIPTS всегда будут выглядеть одинаковыми (одинаковые сценарии, такие же параметры …) Так что это не будет перенаправлено. Чтобы избежать этой ситуации, нам нужно менять тег ресурса для каждого развертывания.

"forceUpdateTag": "[newGuid()]", 

Вы можете пройти аргументы скрипту в контейнере, используя свойство аргументов.

"arguments": "[format(' -testname {0} ', variables('TestName'))]", 

Вам также может потребоваться создание переменных среды в контейнере для хранения конфиденциальной информации.

"environmentVariables": [
                    {
                        "name": "myenv",
                        "secureValue": "My Environment variable"
                    }
                ]

Вы можете контролировать время ожидания сценария с свойством TimeOut, поэтому контейнер отключится независимо от исхода сценария после количества времени. Вот десять минут тайм-аут.

"timeout": "PT10M",

Для скрипта PowerShell его можно установить с файлом шаблона.

 "scriptContent": " write-host $testname
                $DeploymentScriptOutputs = $testname
                "

Или скрипт может быть на публичном URL.

"PrimaryScriptUri": "http://myhost.com/myscript.ps1"

В этом случае URL-адрес должен быть публичным, или вам необходимо предоставить учетные данные доступа или токен для Azure Resource Manager. Чтобы получить выходные данные после развертывания, чтобы вернуть значение из сценария на шаблон, вам необходимо использовать переменную $ deployctionsUsputs.

Вы можете получить выходные данные из ресурса сценария в разделе «Выходной раздел», ссылаясь на ресурс развертывания CRPTS с выходами. Вы также можете получить статус выполнения со статусом.

"outputs": {
        "testname": {
        "type": "string",
        "value": "[reference(variables('script').outputs)]"
        },
        "scriptOutput": {
            "type":"object",
            "value":"[reference(variables('script')).status]"
        }
    }

Набор инструментов шаблона руки

Тестирование в инфраструктуре в качестве кода, как для любого кода, имеет важное значение. Это помогает обнаруживать и исправлять ошибки перед этапом развертывания. В Github есть некоторые инициативы Opensource (от Chris Gardner или Барбара 4bes ) выполнять тесты или анализы по коду.

Microsoft запустила модуль, чтобы обрабатывать тесты шаблонов руки, Arm-TTK или Manager Manager Resource Manager. Модуль все еще находится в превью, и вы не сможете установить его с помощью установки-модуля. Вы должны сделать это вручную через Github Отказ

Это статический анализатор кода, и он не полагается на Azure API. Модуль основан на тестовых случаях, и он сравнивает шаблон или группу шаблонов для тестовых тестовых случаев для обеспечения применения лучших практик и правильных ошибок. Существует несколько тестовых случаев, таких как местоположение не должно быть жесткокодировать, размер VM должен находиться в параметрах или безопасных строковых параметрах не должен иметь значение по умолчанию. Поскольку модуль еще не в галерее PowerShell, вам нужно загрузить его из репозитория GitHUB и импортировать модуль.

Import-module c:\xxx\azure-quickstart-templates\test\arm-ttk\arm-ttk.psd1

Чтобы проверить шаблон

Test-AzTemplate -TemplatePath x\template.json

Чтобы проверить всю папку

Test-AzTemplate -TemplatePath x\arm

Модуль использует Poster для выполнения тестов. Выход будет знаком, если вы тоже его используете. Но если вы хотите реальный результат PEST, вы должны использовать переключатель

Test-AzTemplate -TemplatePath x\template.json -Pester

Этот последний вариант лучше для сценариев трубопроводов.

Несколько других улучшений придут в ближайшие недели. Как функция новой среды () ([среда (). Имя]), чтобы увидеть, есть ли вы в Azurestack, Azure или Azure правительство.

Благодарить Satya vel. Для поощрения мне написать этот пост.

Шаблоны менеджера Azure Resource Manager (5 серий части)

Оригинал: «https://dev.to/omiossec/arm-template-what-s-new-for-2020-4kli»