Развертывание виртуальной машины Azure и пользователей с шаблоном ARM и DSC - PullRequest
0 голосов
/ 27 февраля 2020

Я впервые рассматриваю создание DS C (требуемая конфигурация состояния) для go с шаблоном ARM (Azure Resource Manager) для развертывания Windows Server 2016 и дополнительных учетных записей локальных пользователей. Пока что шаблон ARM работает нормально, и для файла DS C я использую простой пример для проверки функциональности. Развертывание работает нормально, пока я не попытаюсь передать имя пользователя / пароль, чтобы я мог создать локальную учетную запись пользователя Windows. Кажется, я не могу заставить эту функцию работать вообще (см. Сообщение об ошибке ниже).

Мой вопрос: как мне использовать шаблон ARM для передачи учетных данных (пароля) в DS C (mof) файл, позволяющий создать пользователя без явного разрешения простых текстовых паролей (что не очень хорошо)?

Вот что я пробовал:

DS C file

Configuration xUser_CreateUserConfig {
[CmdletBinding()]

Param (

    [Parameter(Mandatory = $true)]
    [string]
    $nodeName,

    [Parameter(Mandatory = $true)]
    [System.Management.Automation.PSCredential]
    [System.Management.Automation.Credential()]
    $Credential
)

Import-DscResource -ModuleName xPSDesiredStateConfiguration

Node $nodeName {
    xUser 'CreateUserAccount' {
        Ensure = 'Present'
        UserName = Split-Path -Path $Credential.UserName -Leaf
        Password = $Credential
    }
}

}

Azure Фрагмент шаблона ARM 1-й метод

"resources": [
      {
          "apiVersion": "2016-03-30",
          "type": "extensions",
          "name": "Microsoft.Powershell.DSC",
          "location": "[parameters('location')]",
          "tags": {
            "DisplayName": "DSC",
            "Dept": "[resourceGroup().tags['Dept']]",
            "Created By": "[parameters('createdBy')]"
          },
          "dependsOn": [
            "[resourceId('Microsoft.Compute/virtualMachines', concat(variables('vmNamePrefix'), copyIndex(1)))]"
          ],
          "properties": {
            "publisher": "Microsoft.Powershell",
            "type": "DSC",
            "typeHandlerVersion": "2.19",
            "autoUpgradeMinorVersion": true,
            "settings": {
              "wmfVersion": "latest",
              "modulesUrl": "[concat(variables('_artifactslocation'), '/', variables('dscArchiveFolder'), '/', variables('dscArchiveFileName'))]",
              "configurationFunction": "xCreateUserDsc.ps1\\xUser_CreateUserConfig",
              "properties": {
                  "nodeName": "[concat(variables('vmNamePrefix'), copyIndex(1))]",
                    "Credential": {
                        "UserName": "[parameters('noneAdminUsername')]",
                        "Password": "PrivateSettingsRef:UserPassword"
                    }
              }
            },
            "protectedSettings": {
              "Items": {
                  "UserPassword": "[parameters('noneAdminUserPassword')]"
              }
            }
          }
        }
    ]

Сообщение об ошибке Операция ресурса завершена с состоянием инициализации терминала «Сбой». VM сообщила об ошибке при обработке расширения «Microsoft.Powershell.DS C». Сообщение об ошибке: \\ "Расширение DS C получило неверный ввод: во время обработки конфигурации 'xUser_CreateUserConfig' произошли ошибки компиляции. Пожалуйста, просмотрите ошибки, указанные в потоке ошибок, и соответствующим образом измените код конфигурации. System.InvalidOperationException свойство обработки ошибок 'Пароль 'OF TYPE' xUser ': преобразование и хранение зашифрованных паролей в виде простого текста не рекомендуется. Для получения дополнительной информации о защите учетных данных в файле MOF см. Блог MSDN: http://go.microsoft.com/fwlink/?LinkId=393729

Это сообщение об ошибке не помогает

Azure Фрагмент шаблона ARM 2-й метод

"resources": [
    {
        "apiVersion": "2018-10-01",
        "type": "extensions",
        "name": "Microsoft.Powershell.DSC",
        "location": "[parameters('location')]",
        "tags": {
          "DisplayName": "DSC",
          "Dept": "[resourceGroup().tags['Dept']]",
          "Created By": "[parameters('createdBy')]"
        },
        "dependsOn": [
          "[resourceId('Microsoft.Compute/virtualMachines', concat(variables('vmNamePrefix'), copyIndex(1)))]"
        ],
        "properties": {
          "publisher": "Microsoft.Powershell",
          "type": "DSC",
          "typeHandlerVersion": "2.9",
          "autoUpgradeMinorVersion": true,
          "settings": {
            "wmfVersion": "latest",
            "configuration": {
              "url": "[concat(variables('_artifactslocation'), '/', variables('dscArchiveFolder'), '/', variables('dscArchiveFileName'))]",
              "script": "xCreateUserDsc.ps1",
              "function": "xUser_CreateUserConfig"
            },
            "configurationArguments": {
              "nodeName": "[concat(variables('vmNamePrefix'), copyIndex(1))]"
            },
            "privacy": {
              "dataCollection": "Disable"
            }
          },
          "protectedSettings": {
            "configurationArguments": {
              "Credential": {
                "UserName": "[parameters('noneAdminUsername')]",
                "Password": "[parameters('noneAdminUserPassword')]"
              }
            }
          }
        }
      }
  ]

Сообщение об ошибке

VM сообщил об ошибке при обработке расширения «Microsoft.Powershell.DS C». Сообщение об ошибке: «Расширение DS C получило неверный ввод: не найден параметр, соответствующий имени параметра« $ credential.Password ». Другая распространенная ошибка - указать параметры типа PSCredential без явного типа. Обязательно используйте типизированный параметр в DS C Configuration, например: config Пример конфигурации param ([PSCredential] $ UserAccount). Пожалуйста, исправьте ввод и попробуйте выполнить расширение. Более подробную информацию об устранении неполадок можно получить по адресу https://aka.ms/VMExtensionDSCWindowsTroubleshoot

Это не помогает!

Я пытался устранить эту ошибку в течение нескольких дней. Я использовал Google для другого примера, но могу найти только пример людей, развертывающих веб-сервер, и документация Microsoft не поможет, поскольку в ней говорится, что вы должны использовать оба вышеуказанных метода. Когда метод 1 старый (по мнению Microsoft). Таким образом, любая помощь будет высоко ценится.

1 Ответ

0 голосов
/ 27 февраля 2020

Вот как я настраивал параметр в конфигурации:

# Credentials
[Parameter(Mandatory)]
[System.Management.Automation.PSCredential]$Admincreds,

, а затем в шаблоне:

"properties": {
    "publisher": "Microsoft.Powershell",
    "type": "DSC",
    "typeHandlerVersion": "2.19",
    "autoUpgradeMinorVersion": true,
    "settings": {
        "configuration": xxx // doesn't matter for this question
        "configurationArguments": yyy // doesn't matter for this question
    },
    "protectedSettings": {
        "configurationArguments": {
            "adminCreds": {
                "userName": "someValue",
                "password": "someOtherValue"
            }
        }
    }
}

Ссылки на рабочие материалы:
https://github.com/Cloudneeti/PCI_Reference_Architecture/blob/master/templates/resources/AD/azuredeploy.json#L261
https://github.com/Cloudneeti/PCI_Reference_Architecture/blob/master/artifacts/configurationscripts/ad-domain.ps1#L11

пс. Вам также может понадобиться this . Честно говоря, я не помню;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...