sigs.k8s.io/cluster-api-provider-azure@v1.17.0/config/crd/bases/infrastructure.cluster.x-k8s.io_azuremachinetemplates.yaml (about)

     1  ---
     2  apiVersion: apiextensions.k8s.io/v1
     3  kind: CustomResourceDefinition
     4  metadata:
     5    annotations:
     6      controller-gen.kubebuilder.io/version: v0.15.0
     7    name: azuremachinetemplates.infrastructure.cluster.x-k8s.io
     8  spec:
     9    group: infrastructure.cluster.x-k8s.io
    10    names:
    11      categories:
    12      - cluster-api
    13      kind: AzureMachineTemplate
    14      listKind: AzureMachineTemplateList
    15      plural: azuremachinetemplates
    16      singular: azuremachinetemplate
    17    scope: Namespaced
    18    versions:
    19    - name: v1beta1
    20      schema:
    21        openAPIV3Schema:
    22          description: AzureMachineTemplate is the Schema for the azuremachinetemplates
    23            API.
    24          properties:
    25            apiVersion:
    26              description: |-
    27                APIVersion defines the versioned schema of this representation of an object.
    28                Servers should convert recognized schemas to the latest internal value, and
    29                may reject unrecognized values.
    30                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
    31              type: string
    32            kind:
    33              description: |-
    34                Kind is a string value representing the REST resource this object represents.
    35                Servers may infer this from the endpoint the client submits requests to.
    36                Cannot be updated.
    37                In CamelCase.
    38                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
    39              type: string
    40            metadata:
    41              type: object
    42            spec:
    43              description: AzureMachineTemplateSpec defines the desired state of AzureMachineTemplate.
    44              properties:
    45                template:
    46                  description: AzureMachineTemplateResource describes the data needed
    47                    to create an AzureMachine from a template.
    48                  properties:
    49                    metadata:
    50                      description: |-
    51                        ObjectMeta is metadata that all persisted resources must have, which includes all objects
    52                        users must create. This is a copy of customizable fields from metav1.ObjectMeta.
    53  
    54  
    55                        ObjectMeta is embedded in `Machine.Spec`, `MachineDeployment.Template` and `MachineSet.Template`,
    56                        which are not top-level Kubernetes objects. Given that metav1.ObjectMeta has lots of special cases
    57                        and read-only fields which end up in the generated CRD validation, having it as a subset simplifies
    58                        the API and some issues that can impact user experience.
    59  
    60  
    61                        During the [upgrade to controller-tools@v2](https://github.com/kubernetes-sigs/cluster-api/pull/1054)
    62                        for v1alpha2, we noticed a failure would occur running Cluster API test suite against the new CRDs,
    63                        specifically `spec.metadata.creationTimestamp in body must be of type string: "null"`.
    64                        The investigation showed that `controller-tools@v2` behaves differently than its previous version
    65                        when handling types from [metav1](k8s.io/apimachinery/pkg/apis/meta/v1) package.
    66  
    67  
    68                        In more details, we found that embedded (non-top level) types that embedded `metav1.ObjectMeta`
    69                        had validation properties, including for `creationTimestamp` (metav1.Time).
    70                        The `metav1.Time` type specifies a custom json marshaller that, when IsZero() is true, returns `null`
    71                        which breaks validation because the field isn't marked as nullable.
    72  
    73  
    74                        In future versions, controller-tools@v2 might allow overriding the type and validation for embedded
    75                        types. When that happens, this hack should be revisited.
    76                      properties:
    77                        annotations:
    78                          additionalProperties:
    79                            type: string
    80                          description: |-
    81                            Annotations is an unstructured key value map stored with a resource that may be
    82                            set by external tools to store and retrieve arbitrary metadata. They are not
    83                            queryable and should be preserved when modifying objects.
    84                            More info: http://kubernetes.io/docs/user-guide/annotations
    85                          type: object
    86                        labels:
    87                          additionalProperties:
    88                            type: string
    89                          description: |-
    90                            Map of string keys and values that can be used to organize and categorize
    91                            (scope and select) objects. May match selectors of replication controllers
    92                            and services.
    93                            More info: http://kubernetes.io/docs/user-guide/labels
    94                          type: object
    95                      type: object
    96                    spec:
    97                      description: Spec is the specification of the desired behavior
    98                        of the machine.
    99                      properties:
   100                        acceleratedNetworking:
   101                          description: 'Deprecated: AcceleratedNetworking should be
   102                            set in the networkInterfaces field.'
   103                          type: boolean
   104                        additionalCapabilities:
   105                          description: AdditionalCapabilities specifies additional capabilities
   106                            enabled or disabled on the virtual machine.
   107                          properties:
   108                            ultraSSDEnabled:
   109                              description: |-
   110                                UltraSSDEnabled enables or disables Azure UltraSSD capability for the virtual machine.
   111                                Defaults to true if Ultra SSD data disks are specified,
   112                                otherwise it doesn't set the capability on the VM.
   113                              type: boolean
   114                          type: object
   115                        additionalTags:
   116                          additionalProperties:
   117                            type: string
   118                          description: |-
   119                            AdditionalTags is an optional set of tags to add to an instance, in addition to the ones added by default by the
   120                            Azure provider. If both the AzureCluster and the AzureMachine specify the same tag name with different values, the
   121                            AzureMachine's value takes precedence.
   122                          type: object
   123                        allocatePublicIP:
   124                          description: AllocatePublicIP allows the ability to create
   125                            dynamic public ips for machines where this value is true.
   126                          type: boolean
   127                        capacityReservationGroupID:
   128                          description: |-
   129                            CapacityReservationGroupID specifies the capacity reservation group resource id that should be
   130                            used for allocating the virtual machine.
   131                            The field size should be greater than 0 and the field input must start with '/'.
   132                            The input for capacityReservationGroupID must be similar to '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/capacityReservationGroups/{capacityReservationGroupName}'.
   133                            The keys which are used should be among 'subscriptions', 'providers' and 'resourcegroups' followed by valid ID or names respectively.
   134                            It is optional but may not be changed once set.
   135                          type: string
   136                        dataDisks:
   137                          description: DataDisk specifies the parameters that are used
   138                            to add one or more data disks to the machine
   139                          items:
   140                            description: DataDisk specifies the parameters that are
   141                              used to add one or more data disks to the machine.
   142                            properties:
   143                              cachingType:
   144                                description: CachingType specifies the caching requirements.
   145                                enum:
   146                                - None
   147                                - ReadOnly
   148                                - ReadWrite
   149                                type: string
   150                              diskSizeGB:
   151                                description: DiskSizeGB is the size in GB to assign
   152                                  to the data disk.
   153                                format: int32
   154                                type: integer
   155                              lun:
   156                                description: |-
   157                                  Lun Specifies the logical unit number of the data disk. This value is used to identify data disks within the VM and therefore must be unique for each data disk attached to a VM.
   158                                  The value must be between 0 and 63.
   159                                format: int32
   160                                type: integer
   161                              managedDisk:
   162                                description: ManagedDisk specifies the Managed Disk
   163                                  parameters for the data disk.
   164                                properties:
   165                                  diskEncryptionSet:
   166                                    description: DiskEncryptionSet specifies the customer-managed
   167                                      disk encryption set resource id for the managed
   168                                      disk.
   169                                    properties:
   170                                      id:
   171                                        description: ID defines resourceID for diskEncryptionSet
   172                                          resource. It must be in the same subscription
   173                                        type: string
   174                                    type: object
   175                                  securityProfile:
   176                                    description: SecurityProfile specifies the security
   177                                      profile for the managed disk.
   178                                    properties:
   179                                      diskEncryptionSet:
   180                                        description: |-
   181                                          DiskEncryptionSet specifies the customer-managed disk encryption set resource id for the
   182                                          managed disk that is used for Customer Managed Key encrypted ConfidentialVM OS Disk and
   183                                          VMGuest blob.
   184                                        properties:
   185                                          id:
   186                                            description: ID defines resourceID for diskEncryptionSet
   187                                              resource. It must be in the same subscription
   188                                            type: string
   189                                        type: object
   190                                      securityEncryptionType:
   191                                        description: |-
   192                                          SecurityEncryptionType specifies the encryption type of the managed disk.
   193                                          It is set to DiskWithVMGuestState to encrypt the managed disk along with the VMGuestState
   194                                          blob, and to VMGuestStateOnly to encrypt the VMGuestState blob only.
   195                                          When set to VMGuestStateOnly, VirtualizedTrustedPlatformModule should be set to Enabled.
   196                                          When set to DiskWithVMGuestState, EncryptionAtHost should be disabled, SecureBoot and
   197                                          VirtualizedTrustedPlatformModule should be set to Enabled.
   198                                          It can be set only for Confidential VMs.
   199                                        enum:
   200                                        - VMGuestStateOnly
   201                                        - DiskWithVMGuestState
   202                                        type: string
   203                                    type: object
   204                                  storageAccountType:
   205                                    type: string
   206                                type: object
   207                              nameSuffix:
   208                                description: |-
   209                                  NameSuffix is the suffix to be appended to the machine name to generate the disk name.
   210                                  Each disk name will be in format <machineName>_<nameSuffix>.
   211                                type: string
   212                            required:
   213                            - diskSizeGB
   214                            - nameSuffix
   215                            type: object
   216                          type: array
   217                        diagnostics:
   218                          description: |-
   219                            Diagnostics specifies the diagnostics settings for a virtual machine.
   220                            If not specified then Boot diagnostics (Managed) will be enabled.
   221                          properties:
   222                            boot:
   223                              description: |-
   224                                Boot configures the boot diagnostics settings for the virtual machine.
   225                                This allows to configure capturing serial output from the virtual machine on boot.
   226                                This is useful for debugging software based launch issues.
   227                                If not specified then Boot diagnostics (Managed) will be enabled.
   228                              properties:
   229                                storageAccountType:
   230                                  description: |-
   231                                    StorageAccountType determines if the storage account for storing the diagnostics data
   232                                    should be disabled (Disabled), provisioned by Azure (Managed) or by the user (UserManaged).
   233                                  enum:
   234                                  - Managed
   235                                  - UserManaged
   236                                  - Disabled
   237                                  type: string
   238                                userManaged:
   239                                  description: UserManaged provides a reference to the
   240                                    user-managed storage account.
   241                                  properties:
   242                                    storageAccountURI:
   243                                      description: |-
   244                                        StorageAccountURI is the URI of the user-managed storage account.
   245                                        The URI typically will be `https://<mystorageaccountname>.blob.core.windows.net/`
   246                                        but may differ if you are using Azure DNS zone endpoints.
   247                                        You can find the correct endpoint by looking for the Blob Primary Endpoint in the
   248                                        endpoints tab in the Azure console or with the CLI by issuing
   249                                        `az storage account list --query='[].{name: name, "resource group": resourceGroup, "blob endpoint": primaryEndpoints.blob}'`.
   250                                      maxLength: 1024
   251                                      pattern: ^https://
   252                                      type: string
   253                                  required:
   254                                  - storageAccountURI
   255                                  type: object
   256                              required:
   257                              - storageAccountType
   258                              type: object
   259                          type: object
   260                        disableExtensionOperations:
   261                          description: |-
   262                            DisableExtensionOperations specifies whether extension operations should be disabled on the virtual machine.
   263                            Use this setting only if VMExtensions are not supported by your image, as it disables CAPZ bootstrapping extension used for detecting Kubernetes bootstrap failure.
   264                            This may only be set to True when no extensions are configured on the virtual machine.
   265                          type: boolean
   266                        dnsServers:
   267                          description: DNSServers adds a list of DNS Server IP addresses
   268                            to the VM NICs.
   269                          items:
   270                            type: string
   271                          type: array
   272                        enableIPForwarding:
   273                          description: |-
   274                            EnableIPForwarding enables IP Forwarding in Azure which is required for some CNI's to send traffic from a pods on one machine
   275                            to another. This is required for IpV6 with Calico in combination with User Defined Routes (set by the Azure Cloud Controller
   276                            manager). Default is false for disabled.
   277                          type: boolean
   278                        failureDomain:
   279                          description: |-
   280                            FailureDomain is the failure domain unique identifier this Machine should be attached to,
   281                            as defined in Cluster API. This relates to an Azure Availability Zone
   282                          type: string
   283                        identity:
   284                          default: None
   285                          description: |-
   286                            Identity is the type of identity used for the virtual machine.
   287                            The type 'SystemAssigned' is an implicitly created identity.
   288                            The generated identity will be assigned a Subscription contributor role.
   289                            The type 'UserAssigned' is a standalone Azure resource provided by the user
   290                            and assigned to the VM
   291                          enum:
   292                          - None
   293                          - SystemAssigned
   294                          - UserAssigned
   295                          type: string
   296                        image:
   297                          description: |-
   298                            Image is used to provide details of an image to use during VM creation.
   299                            If image details are omitted the image will default the Azure Marketplace "capi" offer,
   300                            which is based on Ubuntu.
   301                          properties:
   302                            computeGallery:
   303                              description: ComputeGallery specifies an image to use
   304                                from the Azure Compute Gallery
   305                              properties:
   306                                gallery:
   307                                  description: Gallery specifies the name of the compute
   308                                    image gallery that contains the image
   309                                  minLength: 1
   310                                  type: string
   311                                name:
   312                                  description: Name is the name of the image
   313                                  minLength: 1
   314                                  type: string
   315                                plan:
   316                                  description: Plan contains plan information.
   317                                  properties:
   318                                    offer:
   319                                      description: |-
   320                                        Offer specifies the name of a group of related images created by the publisher.
   321                                        For example, UbuntuServer, WindowsServer
   322                                      minLength: 1
   323                                      type: string
   324                                    publisher:
   325                                      description: Publisher is the name of the organization
   326                                        that created the image
   327                                      minLength: 1
   328                                      type: string
   329                                    sku:
   330                                      description: |-
   331                                        SKU specifies an instance of an offer, such as a major release of a distribution.
   332                                        For example, 18.04-LTS, 2019-Datacenter
   333                                      minLength: 1
   334                                      type: string
   335                                  required:
   336                                  - offer
   337                                  - publisher
   338                                  - sku
   339                                  type: object
   340                                resourceGroup:
   341                                  description: ResourceGroup specifies the resource
   342                                    group containing the private compute gallery.
   343                                  type: string
   344                                subscriptionID:
   345                                  description: SubscriptionID is the identifier of the
   346                                    subscription that contains the private compute gallery.
   347                                  type: string
   348                                version:
   349                                  description: |-
   350                                    Version specifies the version of the marketplace image. The allowed formats
   351                                    are Major.Minor.Build or 'latest'. Major, Minor, and Build are decimal numbers.
   352                                    Specify 'latest' to use the latest version of an image available at deploy time.
   353                                    Even if you use 'latest', the VM image will not automatically update after deploy
   354                                    time even if a new version becomes available.
   355                                  minLength: 1
   356                                  type: string
   357                              required:
   358                              - gallery
   359                              - name
   360                              - version
   361                              type: object
   362                            id:
   363                              description: ID specifies an image to use by ID
   364                              type: string
   365                            marketplace:
   366                              description: Marketplace specifies an image to use from
   367                                the Azure Marketplace
   368                              properties:
   369                                offer:
   370                                  description: |-
   371                                    Offer specifies the name of a group of related images created by the publisher.
   372                                    For example, UbuntuServer, WindowsServer
   373                                  minLength: 1
   374                                  type: string
   375                                publisher:
   376                                  description: Publisher is the name of the organization
   377                                    that created the image
   378                                  minLength: 1
   379                                  type: string
   380                                sku:
   381                                  description: |-
   382                                    SKU specifies an instance of an offer, such as a major release of a distribution.
   383                                    For example, 18.04-LTS, 2019-Datacenter
   384                                  minLength: 1
   385                                  type: string
   386                                thirdPartyImage:
   387                                  default: false
   388                                  description: |-
   389                                    ThirdPartyImage indicates the image is published by a third party publisher and a Plan
   390                                    will be generated for it.
   391                                  type: boolean
   392                                version:
   393                                  description: |-
   394                                    Version specifies the version of an image sku. The allowed formats
   395                                    are Major.Minor.Build or 'latest'. Major, Minor, and Build are decimal numbers.
   396                                    Specify 'latest' to use the latest version of an image available at deploy time.
   397                                    Even if you use 'latest', the VM image will not automatically update after deploy
   398                                    time even if a new version becomes available.
   399                                  minLength: 1
   400                                  type: string
   401                              required:
   402                              - offer
   403                              - publisher
   404                              - sku
   405                              - version
   406                              type: object
   407                            sharedGallery:
   408                              description: |-
   409                                SharedGallery specifies an image to use from an Azure Shared Image Gallery
   410                                Deprecated: use ComputeGallery instead.
   411                              properties:
   412                                gallery:
   413                                  description: Gallery specifies the name of the shared
   414                                    image gallery that contains the image
   415                                  minLength: 1
   416                                  type: string
   417                                name:
   418                                  description: Name is the name of the image
   419                                  minLength: 1
   420                                  type: string
   421                                offer:
   422                                  description: |-
   423                                    Offer specifies the name of a group of related images created by the publisher.
   424                                    For example, UbuntuServer, WindowsServer
   425                                    This value will be used to add a `Plan` in the API request when creating the VM/VMSS resource.
   426                                    This is needed when the source image from which this SIG image was built requires the `Plan` to be used.
   427                                  type: string
   428                                publisher:
   429                                  description: |-
   430                                    Publisher is the name of the organization that created the image.
   431                                    This value will be used to add a `Plan` in the API request when creating the VM/VMSS resource.
   432                                    This is needed when the source image from which this SIG image was built requires the `Plan` to be used.
   433                                  type: string
   434                                resourceGroup:
   435                                  description: ResourceGroup specifies the resource
   436                                    group containing the shared image gallery
   437                                  minLength: 1
   438                                  type: string
   439                                sku:
   440                                  description: |-
   441                                    SKU specifies an instance of an offer, such as a major release of a distribution.
   442                                    For example, 18.04-LTS, 2019-Datacenter
   443                                    This value will be used to add a `Plan` in the API request when creating the VM/VMSS resource.
   444                                    This is needed when the source image from which this SIG image was built requires the `Plan` to be used.
   445                                  type: string
   446                                subscriptionID:
   447                                  description: SubscriptionID is the identifier of the
   448                                    subscription that contains the shared image gallery
   449                                  minLength: 1
   450                                  type: string
   451                                version:
   452                                  description: |-
   453                                    Version specifies the version of the marketplace image. The allowed formats
   454                                    are Major.Minor.Build or 'latest'. Major, Minor, and Build are decimal numbers.
   455                                    Specify 'latest' to use the latest version of an image available at deploy time.
   456                                    Even if you use 'latest', the VM image will not automatically update after deploy
   457                                    time even if a new version becomes available.
   458                                  minLength: 1
   459                                  type: string
   460                              required:
   461                              - gallery
   462                              - name
   463                              - resourceGroup
   464                              - subscriptionID
   465                              - version
   466                              type: object
   467                          type: object
   468                        networkInterfaces:
   469                          description: |-
   470                            NetworkInterfaces specifies a list of network interface configurations.
   471                            If left unspecified, the VM will get a single network interface with a
   472                            single IPConfig in the subnet specified in the cluster's node subnet field.
   473                            The primary interface will be the first networkInterface specified (index 0) in the list.
   474                          items:
   475                            description: NetworkInterface defines a network interface.
   476                            properties:
   477                              acceleratedNetworking:
   478                                description: |-
   479                                  AcceleratedNetworking enables or disables Azure accelerated networking. If omitted, it will be set based on
   480                                  whether the requested VMSize supports accelerated networking.
   481                                  If AcceleratedNetworking is set to true with a VMSize that does not support it, Azure will return an error.
   482                                type: boolean
   483                              privateIPConfigs:
   484                                description: |-
   485                                  PrivateIPConfigs specifies the number of private IP addresses to attach to the interface.
   486                                  Defaults to 1 if not specified.
   487                                type: integer
   488                              subnetName:
   489                                description: SubnetName specifies the subnet in which
   490                                  the new network interface will be placed.
   491                                type: string
   492                            type: object
   493                          type: array
   494                        osDisk:
   495                          description: OSDisk specifies the parameters for the operating
   496                            system disk of the machine
   497                          properties:
   498                            cachingType:
   499                              description: CachingType specifies the caching requirements.
   500                              enum:
   501                              - None
   502                              - ReadOnly
   503                              - ReadWrite
   504                              type: string
   505                            diffDiskSettings:
   506                              description: DiffDiskSettings describe ephemeral disk
   507                                settings for the os disk.
   508                              properties:
   509                                option:
   510                                  description: |-
   511                                    Option enables ephemeral OS when set to "Local"
   512                                    See https://learn.microsoft.com/azure/virtual-machines/ephemeral-os-disks for full details
   513                                  enum:
   514                                  - Local
   515                                  type: string
   516                                placement:
   517                                  description: Placement specifies the ephemeral disk
   518                                    placement for operating system disk. If placement
   519                                    is specified, Option must be set to "Local".
   520                                  enum:
   521                                  - CacheDisk
   522                                  - NvmeDisk
   523                                  - ResourceDisk
   524                                  type: string
   525                              required:
   526                              - option
   527                              type: object
   528                            diskSizeGB:
   529                              description: |-
   530                                DiskSizeGB is the size in GB to assign to the OS disk.
   531                                Will have a default of 30GB if not provided
   532                              format: int32
   533                              type: integer
   534                            managedDisk:
   535                              description: ManagedDisk specifies the Managed Disk parameters
   536                                for the OS disk.
   537                              properties:
   538                                diskEncryptionSet:
   539                                  description: DiskEncryptionSet specifies the customer-managed
   540                                    disk encryption set resource id for the managed
   541                                    disk.
   542                                  properties:
   543                                    id:
   544                                      description: ID defines resourceID for diskEncryptionSet
   545                                        resource. It must be in the same subscription
   546                                      type: string
   547                                  type: object
   548                                securityProfile:
   549                                  description: SecurityProfile specifies the security
   550                                    profile for the managed disk.
   551                                  properties:
   552                                    diskEncryptionSet:
   553                                      description: |-
   554                                        DiskEncryptionSet specifies the customer-managed disk encryption set resource id for the
   555                                        managed disk that is used for Customer Managed Key encrypted ConfidentialVM OS Disk and
   556                                        VMGuest blob.
   557                                      properties:
   558                                        id:
   559                                          description: ID defines resourceID for diskEncryptionSet
   560                                            resource. It must be in the same subscription
   561                                          type: string
   562                                      type: object
   563                                    securityEncryptionType:
   564                                      description: |-
   565                                        SecurityEncryptionType specifies the encryption type of the managed disk.
   566                                        It is set to DiskWithVMGuestState to encrypt the managed disk along with the VMGuestState
   567                                        blob, and to VMGuestStateOnly to encrypt the VMGuestState blob only.
   568                                        When set to VMGuestStateOnly, VirtualizedTrustedPlatformModule should be set to Enabled.
   569                                        When set to DiskWithVMGuestState, EncryptionAtHost should be disabled, SecureBoot and
   570                                        VirtualizedTrustedPlatformModule should be set to Enabled.
   571                                        It can be set only for Confidential VMs.
   572                                      enum:
   573                                      - VMGuestStateOnly
   574                                      - DiskWithVMGuestState
   575                                      type: string
   576                                  type: object
   577                                storageAccountType:
   578                                  type: string
   579                              type: object
   580                            osType:
   581                              type: string
   582                          required:
   583                          - osType
   584                          type: object
   585                        providerID:
   586                          description: ProviderID is the unique identifier as specified
   587                            by the cloud provider.
   588                          type: string
   589                        roleAssignmentName:
   590                          description: 'Deprecated: RoleAssignmentName should be set
   591                            in the systemAssignedIdentityRole field.'
   592                          type: string
   593                        securityProfile:
   594                          description: SecurityProfile specifies the Security profile
   595                            settings for a virtual machine.
   596                          properties:
   597                            encryptionAtHost:
   598                              description: |-
   599                                This field indicates whether Host Encryption should be enabled
   600                                or disabled for a virtual machine or virtual machine scale set.
   601                                This should be disabled when SecurityEncryptionType is set to DiskWithVMGuestState.
   602                                Default is disabled.
   603                              type: boolean
   604                            securityType:
   605                              description: |-
   606                                SecurityType specifies the SecurityType of the virtual machine. It has to be set to any specified value to
   607                                enable UefiSettings. The default behavior is: UefiSettings will not be enabled unless this property is set.
   608                              enum:
   609                              - ConfidentialVM
   610                              - TrustedLaunch
   611                              type: string
   612                            uefiSettings:
   613                              description: UefiSettings specifies the security settings
   614                                like secure boot and vTPM used while creating the virtual
   615                                machine.
   616                              properties:
   617                                secureBootEnabled:
   618                                  description: |-
   619                                    SecureBootEnabled specifies whether secure boot should be enabled on the virtual machine.
   620                                    Secure Boot verifies the digital signature of all boot components and halts the boot process if signature verification fails.
   621                                    If omitted, the platform chooses a default, which is subject to change over time, currently that default is false.
   622                                  type: boolean
   623                                vTpmEnabled:
   624                                  description: |-
   625                                    VTpmEnabled specifies whether vTPM should be enabled on the virtual machine.
   626                                    When true it enables the virtualized trusted platform module measurements to create a known good boot integrity policy baseline.
   627                                    The integrity policy baseline is used for comparison with measurements from subsequent VM boots to determine if anything has changed.
   628                                    This is required to be set to Enabled if SecurityEncryptionType is defined.
   629                                    If omitted, the platform chooses a default, which is subject to change over time, currently that default is false.
   630                                  type: boolean
   631                              type: object
   632                          type: object
   633                        spotVMOptions:
   634                          description: SpotVMOptions allows the ability to specify the
   635                            Machine should use a Spot VM
   636                          properties:
   637                            evictionPolicy:
   638                              description: EvictionPolicy defines the behavior of the
   639                                virtual machine when it is evicted. It can be either
   640                                Delete or Deallocate.
   641                              enum:
   642                              - Deallocate
   643                              - Delete
   644                              type: string
   645                            maxPrice:
   646                              anyOf:
   647                              - type: integer
   648                              - type: string
   649                              description: MaxPrice defines the maximum price the user
   650                                is willing to pay for Spot VM instances
   651                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
   652                              x-kubernetes-int-or-string: true
   653                          type: object
   654                        sshPublicKey:
   655                          description: |-
   656                            SSHPublicKey is the SSH public key string, base64-encoded to add to a Virtual Machine. Linux only.
   657                            Refer to documentation on how to set up SSH access on Windows instances.
   658                          type: string
   659                        subnetName:
   660                          description: 'Deprecated: SubnetName should be set in the
   661                            networkInterfaces field.'
   662                          type: string
   663                        systemAssignedIdentityRole:
   664                          description: SystemAssignedIdentityRole defines the role and
   665                            scope to assign to the system-assigned identity.
   666                          properties:
   667                            definitionID:
   668                              description: |-
   669                                DefinitionID is the ID of the role definition to create for a system assigned identity. It can be an Azure built-in role or a custom role.
   670                                Refer to built-in roles: https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles
   671                              type: string
   672                            name:
   673                              description: |-
   674                                Name is the name of the role assignment to create for a system assigned identity. It can be any valid UUID.
   675                                If not specified, a random UUID will be generated.
   676                              type: string
   677                            scope:
   678                              description: |-
   679                                Scope is the scope that the role assignment or definition applies to. The scope can be any REST resource instance.
   680                                If not specified, the scope will be the subscription.
   681                              type: string
   682                          type: object
   683                        userAssignedIdentities:
   684                          description: |-
   685                            UserAssignedIdentities is a list of standalone Azure identities provided by the user
   686                            The lifecycle of a user-assigned identity is managed separately from the lifecycle of
   687                            the AzureMachine.
   688                            See https://learn.microsoft.com/azure/active-directory/managed-identities-azure-resources/how-to-manage-ua-identity-cli
   689                          items:
   690                            description: |-
   691                              UserAssignedIdentity defines the user-assigned identities provided
   692                              by the user to be assigned to Azure resources.
   693                            properties:
   694                              providerID:
   695                                description: |-
   696                                  ProviderID is the identification ID of the user-assigned Identity, the format of an identity is:
   697                                  'azure:///subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'
   698                                type: string
   699                            required:
   700                            - providerID
   701                            type: object
   702                          type: array
   703                        vmExtensions:
   704                          description: VMExtensions specifies a list of extensions to
   705                            be added to the virtual machine.
   706                          items:
   707                            description: VMExtension specifies the parameters for a
   708                              custom VM extension.
   709                            properties:
   710                              name:
   711                                description: Name is the name of the extension.
   712                                type: string
   713                              protectedSettings:
   714                                additionalProperties:
   715                                  type: string
   716                                description: ProtectedSettings is a JSON formatted protected
   717                                  settings for the extension.
   718                                type: object
   719                              publisher:
   720                                description: Publisher is the name of the extension
   721                                  handler publisher.
   722                                type: string
   723                              settings:
   724                                additionalProperties:
   725                                  type: string
   726                                description: Settings is a JSON formatted public settings
   727                                  for the extension.
   728                                type: object
   729                              version:
   730                                description: Version specifies the version of the script
   731                                  handler.
   732                                type: string
   733                            required:
   734                            - name
   735                            - publisher
   736                            - version
   737                            type: object
   738                          type: array
   739                        vmSize:
   740                          type: string
   741                      required:
   742                      - osDisk
   743                      - vmSize
   744                      type: object
   745                  required:
   746                  - spec
   747                  type: object
   748              required:
   749              - template
   750              type: object
   751          type: object
   752      served: true
   753      storage: true