예제 #1
0
        public async Task TestVMWithWindowsOSProfile()
        {
            EnsureClientsInitialized(DefaultLocation);

            string rgName       = Recording.GenerateAssetName(TestPrefix);
            string keyVaultName = Recording.GenerateAssetName(TestPrefix);

            string winRMCertificateBase64 = Convert.ToBase64String(
                Encoding.UTF8.GetBytes(
                    ReadFromEmbeddedResource(typeof(OSProfileTests), WinRMCertificateResourceName)));

            // The following variables are defined here to allow validation
            string autoLogonContent    = null;
            string winRMCertificateUrl = SecretVaultHelper.AddSecret(m_subId, rgName, keyVaultName, winRMCertificateBase64).Result;

            Action <VirtualMachine> enableWinRMCustomDataAndUnattendContent = inputVM =>
            {
                autoLogonContent = GetAutoLogonContent(5, inputVM.OsProfile.AdminUsername, inputVM.OsProfile.AdminPassword);
                EnableWinRMCustomDataAndUnattendContent(rgName, keyVaultName, winRMCertificateUrl, autoLogonContent, inputVM);
            };

            Action <VirtualMachine> validateWinRMCustomDataAndUnattendContent =
                outputVM => ValidateWinRMCustomDataAndUnattendContent(winRMCertificateUrl, autoLogonContent, outputVM);

            SecretVaultHelper.CreateKeyVault(m_subId, rgName, keyVaultName).Wait();

            await TestVMWithOSProfile(
                rgName : rgName,
                useWindowsProfile : true,
                vmCustomizer : enableWinRMCustomDataAndUnattendContent,
                vmValidator : validateWinRMCustomDataAndUnattendContent);

            SecretVaultHelper.DeleteKeyVault(m_subId, rgName, keyVaultName).Wait();
        }
예제 #2
0
        private void EnableWinRMCustomDataAndUnattendContent(string rgName, string keyVaultName, string winRMCertificateUrl, string autoLogonContent, VirtualMachine inputVM)
        {
            var osProfile = inputVM.OsProfile;

            osProfile.CustomData           = CustomData;
            osProfile.WindowsConfiguration = new WindowsConfiguration
            {
                ProvisionVMAgent       = true,
                EnableAutomaticUpdates = false,
                TimeZone = PacificStandardTime,
                AdditionalUnattendContent = new List <AdditionalUnattendContent>
                {
                    new AdditionalUnattendContent
                    {
                        PassName      = OOBESystem,
                        ComponentName = MicrosoftWindowsShellSetup,
                        SettingName   = AutoLogon,
                        Content       = autoLogonContent
                    }
                },
                WinRM = new WinRMConfiguration
                {
                    Listeners = new List <WinRMListener>
                    {
                        new WinRMListener
                        {
                            Protocol       = ProtocolTypes.Http,
                            CertificateUrl = null,
                        },
                        new WinRMListener
                        {
                            Protocol       = ProtocolTypes.Https,
                            CertificateUrl = winRMCertificateUrl,
                        }
                    }
                }
            };
            osProfile.Secrets = new List <VaultSecretGroup>
            {
                new VaultSecretGroup
                {
                    SourceVault       = SecretVaultHelper.GetVaultId(m_subId, rgName, keyVaultName).Result,
                    VaultCertificates = new List <VaultCertificate>
                    {
                        new VaultCertificate
                        {
                            CertificateStore = "My",
                            CertificateUrl   = winRMCertificateUrl
                        }
                    }
                }
            };
        }