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