Skip to content

Releases: cloudfoundry/bosh-azure-cpi-release

v23

01 Apr 08:42
Compare
Choose a tag to compare
v23

New Features:

  • Support Windows heavy and light stemcells for both managed disks and unmanaged disks.
    • Do not need to set windows.username and windows.password in bosh.yml. username and password are required when creating Windows VMs but BOSH never use it, so CPI automatically generates 15 secure random characters as username and 72 secure random characters as password.
    • Disable Windows AutoUpdate. Users always use new stemcells for update.
  • Support AzureStack TP3.

Fixes:

  • Fix #259: Use Json format to store light stemcell information.
  • Redact credentials in logs
    • Credentials only can be logged when debug_mode is set to true.

v22

17 Mar 15:57
Compare
Choose a tag to compare
v22

New Features:

  • Support GermanCloud.

  • Support light stemcells.

  • Support to create Windows VM with managed disks.
    Need to add below configs in global azure properties in bosh.yml.

    azure:
      windows:
        username: xxxx # Admin user to use when spinning up new Windows VMs. Only available for Windows
        password: xxxx # Password to use when spinning up new Windows VMs. Only available for Windows
    

Fixes:

  • Fix an issue in v21 that old compute API version does not support sku property in AzureChinaCloud
  • Fix an issue in v21 that it wrongly sets permission of the container stemcell when storage accounts are premium.

Development:

v21

03 Mar 03:12
Compare
Choose a tag to compare
v21

NOTES: This version does NOT work in Mooncake now

New Features:

Improvements:

  • Upgrade azure-storage-ruby to v0.11.5.

    Please see release notes of azure-storage-ruby v0.11.5

  • Auto retry when the connection to Azure AD or ARM is reset because of OpenSSL::SSL::SSLError or OpenSSL::X509::StoreError.

v20

28 Nov 02:10
Compare
Choose a tag to compare
v20

Fixes:

  • Delete the possible unexpected node resources before updating VMs.
    • When Azure Security Center is enabled in a subscription, Azure Security Monitoring extension will be installed in all VMs under this subscription. All VMs' information will contain a node resources. This node must be deleted before updating VMs. Otherwise, you will hit an error InvalidRequestContent.
    • About Azure Security Center, you can get more information here.
  • Other minor fixes

v19

03 Nov 01:24
Compare
Choose a tag to compare
v19

Improvements:

  • Upgrade azure-storage-ruby to v0.11.3.
  • Support Azure US government.
    • You can set environment to AzureUSGovernment to deploy BOSH/CF on Azure US government.

v18

25 Oct 02:33
Compare
Choose a tag to compare
v18

New Features:

  • Support to assign dynamic public IPs to VMs in one resource pool automatically.

    • You can use below config to enable it.
    • You can see the background in the issue #217.
    resource_pools:
    - name: default
      cloud_properties:
        assign_dynamic_public_ip: true   # defaults to false
    

v17

10 Oct 05:27
Compare
Choose a tag to compare
v17

Improvements:

  • Upgrade azure-storage-ruby to v0.11.1.
  • Add and log x-ms-client-request-id for all storage requests.
    • You can find logs for every call to azure-storage-ruby by the keyword Calling.
    • You can find request-id(It is x-ms-client-request-id in every HTTP request) in the log with Calling and ask Azure support team to investigate Azure logs for every storage request.

v16

27 Sep 16:19
Compare
Choose a tag to compare
v16

Improvements:

  • BOSH group name is often too long to generate an availability set name automatically. #209
    • On Azure the length of the availability set name must be between 1 and 80 characters. env.bosh.group which is generated by BOSH director may be too long. CPI will truncate the name to the following format az-MD5-[LAST-40-CHARACTERS-OF-GROUP] if the length of env.bosh.group is greater than 80.

v15

20 Sep 16:58
Compare
Choose a tag to compare
v15

New Features:

  • Support multiple NICs.
  • Create containers in new storage accounts (NOT default storage account) if they do not exist #195
    • DO NOT check/create containers in the default storage account for performance
    • Check/create containers in the new storage account only before one stemcell needs to be copied from the default storage account
  • Use env.bosh.group instead of env.bosh.group_name #205
    • This is a new request. You can reference the feature request #171

Improvements:

  • Set x-ms-client-request-id for all xRP requests for troubleshooting
    • CPI generates a GUID as the value of x-ms-client-request-id in every xRP request header
    • CPI logs this id before sending the request to Azure resource provider
    • We can use this id to check Azure logs when CPI cannot get Azure response

Fixes:

  • Update azure-storage-ruby to 0.11.0.preview. #208
    • This also fixes the issue that azure-storage-ruby does not retry automatically when OpenTimeout
  • Auto retry when ReadTimeout and ECONNRESET #203
    • CPI will retry automatically when ReadTimeout or ECONNRESET

v14

12 Aug 11:53
Compare
Choose a tag to compare
v14

Breaking Changes:

  • Change the Azure CPI job name from cpi to azure_cpi. You should update your bosh.yml.
    From

    jobs:
    - name: bosh
      templates:
      - {name: cpi, release: bosh-azure-cpi}
    
      properties:
        director:
          cpi_job: cpi
    
    cloud_provider:
      template: {name: cpi, release: bosh-azure-cpi}
    

    to

    jobs:
    - name: bosh
      templates:
      - {name: azure_cpi, release: bosh-azure-cpi}
    
      properties:
        director:
          cpi_job: azure_cpi
    
    cloud_provider:
      template: {name: azure_cpi, release: bosh-azure-cpi}
    

New Features:

  • Allow to specify OS disk size by setting root_disk.size in cloud_properties of resource_pools.
    • Default OS disk size depends on the size of VHD in the stemcell. It is 3 GiB for now.
    • The size must be in the range [3 * 1024, 1023 * 1024]. Please always use N * 1024 as the size because Azure always uses GiB but not MiB.
  • Allow to use OS disk to store ephemeral data by setting ephemeral_disk.use_root_disk to true in cloud_properties of resource_pools.
    • Compatible Stemcell Versions: v3262.7 or later
    • The OS disk will be atuomatically resized to 30 * 1024 MiB if you do not set root_disk.size.
    • No data disk will be created as the ephemeral disk.
  • Allow to use env.bosh.group_name as the name of avaliability set.
    • You still can use availability_set in cloud_properties of resource_pools as the name of avaliability set.
    • If availability_set is not specified, Azure CPI will search env.bosh.group_name as the name of availability set. If neither availability_set nor env.bosh.group_name exists, VMs in this resource_pool won't be in any availability set.
  • Support to pick an available storage account under the default resource group to create VMs by a pattern automatically.
    • You can use a pattern *keyword* as storage_account_name in cloud_properties of resource_pools.
    • The pattern must start with * and end with *.
    • The keyword must only contain numbers and lower-case letters because of the naming rule of storage account name.
    • The rule to select an available storage account is to check the number of disks under the container bosh does not exceed the limitation.
    • The default number of disks limitation is 30 but you can specify it in storage_account_max_disk_number.
    • storage_account_max_disk_number is the number of disks limitation in a storage account.
      1. Every storage account has a limitation to host disks. You may hit the performance issue if you create too many disks in one storage account.
      2. The maximum number of disks of a standard storage account is 40 because the maximum IOPS of a standard storage account is 20,000 and the maximum IOPS of a standard disk is 500.
      3. If you are using premium storage account, Azure maps the disk size (rounded up) to the nearest Premium Storage Disk option (P10, P20 and P30). For example, a disk of size 100 GiB is classified as a P10 option.
        • The maximum number of disks of a premium storage account is 280 if you are using P10 (128 GiB) as your disk type.
        • The maximum number of disks of a premium storage account is 70 if you are using P20 (512 GiB) as your disk type.
        • The maximum number of disks of a premium storage account is 35 if you are using P30 (1024 GiB) as your disk type.
      4. storage_account_max_disk_number should be less than the maximum number. Suggest you to use (MAX - 10) as the value because CPI always creates VMs in parallel.
      5. Please see more information about azure-subscription-service-limits.

Improvements:

  • Log x-ms-request-id, x-ms-correlation-request-id and x-ms-routing-request-id in xRP responses and get_token response for trouble shooting.
  • Use 2016-06-01 as RP API version for AzureChinaCloud.
  • Update Azure API version for resource provider to 2016-06-01 and others to 2015-06-15.
  • Using azure-storage instead of azure-sdk-for-ruby to access Azure storage.
  • Check whether a property is nil but not only exist if it is required.
  • Pick default ephemeral disk size based on instance type if ephemeral_disk.size in cloud_properties of resource_pools is not set.
    • If the Azure temporary disk size for the instance type is less than 30*1024 MiB, the default size is 30*1024 MiB because the space may not be enough.
    • If the Azure temporary disk size for the instance type is larger than 1023*1024 MiB, the default size is 1023*1024 MiB because max data disk size is 1023*1024 MiB on Azure.
    • Otherwise, the Azure temporary disk size will be used as the default size. See more information about Azure temporary disk size.
  • CPI does not delete availability sets because it is difficult to know whether an availability set will be used or not.
  • Allow to specify storage_account_type and storage_account_location in cloud_properties of resource_pools to use a non-exist storage account. CPI will create the storage account automatically.
    • storage_account_type is required if the storage account does not exist. It can be either Standard_LRS, Standard_ZRS, Standard_GRS, Standard_RAGRS or Premium_LRS. You can click HERE to learn more about the type of Azure storage account.
    • storage_account_location is needed if the storage account does not exist. If it is not set, the location of the default resource group will be used. You can use azure cli command azure location list to list all locations. For more information, see List all of the available geo-locations.
  • Append error details in exceptions so that users can see the error details in the console when executing bosh-init/bosh command.

Fixes:

  • Handle the race when multiple processes are creating a same storage account in parallel. Please see more details about the issue #176.
  • CPI packaging should not fail on OS X with Homebrew-installed OpenSSL. Please see more details about the issue #184.
  • RetryableError often happens when deleting a deployment. Please see more details about the issue #179.
  • CPI should make sure to log ruby stacktrace to stderr when exception occurs. Please see more details about the issue #177.

Dev:

  • Update CI pipeline after upgrading concourse to v1.6.0.
  • Update docker image for CI pipeline.
    • Upgrade ruby version to v2.2.4
    • Use Ubuntu 15.04
    • Install nodejs 4.x and npm
    • Install Azure CLI 0.10.1