Releases: cloudfoundry/bosh-azure-cpi-release
Releases · cloudfoundry/bosh-azure-cpi-release
v14
Breaking Changes:
-
Change the Azure CPI job name from
cpi
toazure_cpi
. You should update yourbosh.yml
.
Fromjobs: - 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 setroot_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 searchenv.bosh.group_name
as the name of availability set. If neitheravailability_set
norenv.bosh.group_name
exists, VMs in this resource_pool won't be in any availability set.
- You still can use
- 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*
asstorage_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.- 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.
- 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.
- 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.
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.- Please see more information about azure-subscription-service-limits.
- You can use a pattern
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 to2015-06-15
. - Using
azure-storage
instead ofazure-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 is30*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 is1023*1024
MiB because max data disk size is1023*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.
- If the Azure temporary disk size for the instance type is less than
- 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
andstorage_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 eitherStandard_LRS
,Standard_ZRS
,Standard_GRS
,Standard_RAGRS
orPremium_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 commandazure 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
- Upgrade ruby version to
v13
New Features:
- Support multiple resource groups. Please reference this doc PR
Improvements:
- Improve the performance of uploading stemcells
- Filter credential in logs
- Catch BAD_REQUEST in get_token
Dev:
- Add debug_mode to log all raw HTTP requests/responses. Please reference this doc PR
Known Issues:
- bosh-init v0.0.92 has issue with connection timeouts; use bosh-init v0.0.94.
v12
- Change the default ephemeral size from 15GB to 30GB
- Fix
invalid disk name
error when failing to create VM
Dev:
- Avoid extra bash process by passing CPI input directly to exec'ed process
v11
Improvements:
- Reduce storage account queries
- Fix retry issue in asynchronous operations.
Fixes:
- Use LUN and host device id as the disk identifier
- Compatible Stemcell Versions: v3181 or later
- Stemcell v3232.5 or later is recommended with CPI v11. You may hit the issue #135 if you still use an older stemcell than v3232.5
- Use a data disk as the persistent ephemeral disk
- The VM size should not be Standard_A0 if you want to use persistent data disks
- The CPU cores of VM should be more than 1 if you plan to resize the persistent data disks in future
- The premium storage is recommended for better performance
- You can see more information about the 'Max data disks' and 'Max disk IOPS & bandwidth' of Azure Linux VMs here
- Fix an issue in calculating the sleep interval when copying blobs
Dev:
- Updated Ruby to 2.2.4
- Removed several unnecessary gem dependencies
v10
v9
New Features:
- Allow specifying
security_groups
for a VM via resource pool'scloud_properties
- Strongly recommded to be specified when using public IPs
- Allow specifying
default_security_group
as a global configuration
v8
Improvements:
- Assign public IPs directly to VMs
- Previously public IPs were assigned by adding a LB to the VM
- Retry around DNS resolution errors
- Typically shown as
SocketError: Hostname not known
- Typically shown as
Dev:
- Set
open_timeout
explicitly for HTTP requests