Ejemplo n.º 1
0
        public override void ExecuteCmdlet()
        {
            base.ExecuteCmdlet();

            ExecuteClientAction(() =>
            {
                WriteWarning("Set-AzureRmVmssDiskEncrpytionExtension: A property of the output of this cmdlet will change in an upcoming breaking change release. " +
                             "The StorageAccountType property for a DataDisk will return Standard_LRS and Premium_LRS");

                if (this.ShouldProcess(VMScaleSetName, Properties.Resources.EnableDiskEncryptionAction) &&
                    (this.Force.IsPresent ||
                     this.ShouldContinue(Properties.Resources.EnableAzureDiskEncryptionConfirmation, Properties.Resources.EnableAzureDiskEncryptionCaption))) // Change this.
                {
                    VerifyParameters();

                    VirtualMachineScaleSet vmssResponse = this.VirtualMachineScaleSetClient.Get(
                        this.ResourceGroupName, VMScaleSetName);

                    if (vmssResponse == null || vmssResponse.VirtualMachineProfile == null)
                    {
                        ThrowInvalidArgumentError("The given VM Scale Set, {0}, does not exist.", this.VMScaleSetName);
                    }

                    SetOSType(vmssResponse.VirtualMachineProfile);

                    this.VolumeType = GetVolumeType(this.VolumeType, vmssResponse.VirtualMachineProfile.StorageProfile);
                    VerifyVolumeType();

                    VirtualMachineScaleSetExtension parameters = GetVmssExtensionParameters();

                    if (vmssResponse.VirtualMachineProfile.ExtensionProfile == null)
                    {
                        vmssResponse.VirtualMachineProfile.ExtensionProfile = new VirtualMachineScaleSetExtensionProfile();
                    }

                    if (vmssResponse.VirtualMachineProfile.ExtensionProfile.Extensions == null)
                    {
                        vmssResponse.VirtualMachineProfile.ExtensionProfile.Extensions = new List <VirtualMachineScaleSetExtension>();
                    }

                    vmssResponse.VirtualMachineProfile.ExtensionProfile.Extensions.Add(parameters);

                    VirtualMachineScaleSetExtension result = this.VirtualMachineScaleSetExtensionsClient.CreateOrUpdate(
                        this.ResourceGroupName,
                        this.VMScaleSetName,
                        this.ExtensionName,
                        parameters);

                    var psResult = result.ToPSVirtualMachineScaleSetExtension(this.ResourceGroupName, this.VMScaleSetName);
                    WriteObject(psResult);
                }
            });
        }
        public override void ExecuteCmdlet()
        {
            base.ExecuteCmdlet();

            ExecuteClientAction(() =>
            {
                if (this.ShouldProcess(VMScaleSetName, Properties.Resources.EnableDiskEncryptionAction) &&
                    (this.Force.IsPresent ||
                     this.ShouldContinue(Properties.Resources.EnableAzureDiskEncryptionConfirmation, Properties.Resources.EnableAzureDiskEncryptionCaption))) // Change this.
                {
                    VerifyParameters();

                    VirtualMachineScaleSet vmssResponse = this.VirtualMachineScaleSetClient.Get(
                        this.ResourceGroupName, VMScaleSetName);

                    if (vmssResponse == null || vmssResponse.VirtualMachineProfile == null)
                    {
                        ThrowInvalidArgumentError("The given VM Scale Set, {0}, does not exist.", this.VMScaleSetName);
                    }

                    SetOSType(vmssResponse.VirtualMachineProfile);

                    this.VolumeType = GetVolumeType(this.VolumeType, vmssResponse.VirtualMachineProfile.StorageProfile);
                    VerifyVolumeType();

                    VirtualMachineScaleSetExtension parameters = GetVmssExtensionParameters();

                    if (vmssResponse.VirtualMachineProfile.ExtensionProfile == null)
                    {
                        vmssResponse.VirtualMachineProfile.ExtensionProfile = new VirtualMachineScaleSetExtensionProfile();
                    }

                    if (vmssResponse.VirtualMachineProfile.ExtensionProfile.Extensions == null)
                    {
                        vmssResponse.VirtualMachineProfile.ExtensionProfile.Extensions = new List <VirtualMachineScaleSetExtension>();
                    }

                    vmssResponse.VirtualMachineProfile.ExtensionProfile.Extensions.Add(parameters);

                    VirtualMachineScaleSetExtension result = this.VirtualMachineScaleSetExtensionsClient.CreateOrUpdate(
                        this.ResourceGroupName,
                        this.VMScaleSetName,
                        this.ExtensionName,
                        parameters);

                    var psResult = result.ToPSVirtualMachineScaleSetExtension(this.ResourceGroupName, this.VMScaleSetName);
                    WriteObject(psResult);
                }
            });
        }
        public override void ExecuteCmdlet()
        {
            base.ExecuteCmdlet();

            ExecuteClientAction(() =>
            {
                if (this.ShouldProcess(VMScaleSetName, Properties.Resources.RemoveDiskEncryptionAction) &&
                    (this.Force.IsPresent ||
                     this.ShouldContinue(Properties.Resources.VirtualMachineExtensionRemovalConfirmation, Properties.Resources.VirtualMachineExtensionRemovalCaption)))
                {
                    VirtualMachineScaleSet vmss = this.VirtualMachineScaleSetClient.Get(this.ResourceGroupName, this.VMScaleSetName);

                    if (vmss == null || vmss.VirtualMachineProfile == null)
                    {
                        ThrowTerminatingError(new ErrorRecord(
                                                  new ArgumentException("The given VM Scale Set does not exist."),
                                                  "InvalidArgument",
                                                  ErrorCategory.InvalidArgument,
                                                  null));
                    }

                    SetOSType(vmss.VirtualMachineProfile);

                    if (OperatingSystemTypes.Windows.Equals(this.CurrentOSType))
                    {
                        this.ExtensionName = this.ExtensionName ?? AzureVmssDiskEncryptionExtensionContext.ExtensionDefaultName;
                    }
                    else if (OperatingSystemTypes.Linux.Equals(this.CurrentOSType))
                    {
                        this.ExtensionName = this.ExtensionName ?? AzureVmssDiskEncryptionExtensionContext.LinuxExtensionDefaultName;
                    }

                    this.VolumeType = GetVolumeType(this.VolumeType, vmss.VirtualMachineProfile.StorageProfile);

                    if (vmss.VirtualMachineProfile.ExtensionProfile == null ||
                        vmss.VirtualMachineProfile.ExtensionProfile.Extensions == null ||
                        vmss.VirtualMachineProfile.ExtensionProfile.Extensions.Count == 0)
                    {
                        ThrowTerminatingError(new ErrorRecord(
                                                  new ArgumentException("Disk Encryption extension is not installed in the VM Scale Set."),
                                                  "InvalidArgument",
                                                  ErrorCategory.InvalidArgument,
                                                  null));
                    }

                    bool extensionFound = false;
                    foreach (var ext in vmss.VirtualMachineProfile.ExtensionProfile.Extensions)
                    {
                        if (ext.Type1.Equals(this.ExtensionName))
                        {
                            ext.Settings          = GetDisalbeEncryptionSetting();
                            ext.ProtectedSettings = null;
                            ext.ForceUpdateTag    = this.ForceUpdate.IsPresent ? Guid.NewGuid().ToString() : null;

                            if (OperatingSystemTypes.Windows.Equals(this.CurrentOSType))
                            {
                                this.ExtensionName = AzureVmssDiskEncryptionExtensionContext.ExtensionDefaultName;
                            }
                            else if (OperatingSystemTypes.Linux.Equals(this.CurrentOSType))
                            {
                                this.ExtensionName = AzureVmssDiskEncryptionExtensionContext.LinuxExtensionDefaultName;
                            }

                            VirtualMachineScaleSetExtension result = this.VirtualMachineScaleSetExtensionsClient.CreateOrUpdate(
                                this.ResourceGroupName,
                                this.VMScaleSetName,
                                this.ExtensionName,
                                ext);
                            var psResult   = result.ToPSVirtualMachineScaleSetExtension(this.ResourceGroupName, this.VMScaleSetName);
                            extensionFound = true;
                            WriteObject(psResult);
                            break;
                        }
                    }

                    if (!extensionFound)
                    {
                        ThrowTerminatingError(new ErrorRecord(
                                                  new ArgumentException(string.Format("Extension, {0},  is not installed in the VM Scale Set.", this.ExtensionName)),
                                                  "InvalidArgument",
                                                  ErrorCategory.InvalidArgument,
                                                  null));
                    }
                }
            });
        }