Updates an Azure Load Balancer to use a rotating list of backend pools. Our maintenance process involve rotating between different backend pools for testing purposes. Additionally, a single pool can be specified to target a specific pool.
For instance, we have 3 pools - Primary, Secondary, Tertiary. Each month we switch to the next pool so that the servers in the other pools can have maintenace executed on them. Assuming the Primary pool is current, after this step is run, the rules will be updated to point to the Secondary pool. The next run will update them to point to the Tertiary pool.
Alternatively, consider three pools - Canary, NonCanary, All - during our deployment process, we can specify NonCanary as the only pool in a list. This will target all traffic to those servers while the Canary servers are updated. When ready, we specify Canary as the active pool and all traffic is directed there. We test and can roll back to NonCanary as needed. Assuming all is well, we'll run the step a third time and specify All which includes all servers.
Results
This step template can be included in a project to upgrade tentacles.
Before
After
Pre-requisites
[X] Id should be a GUID that is not 00000000-0000-0000-0000-000000000000
NOTE If you are modifying an existing step template, please make sure that you do not modify the Id property (updating the Id will break the Library sync functionality in Octopus).
[X] Version should be incremented, otherwise the integration with Octopus won't update the step template correctly
[X] Parameter names should not start with $
[X] Step template parameter names (the ones declared in the JSON, not the script body) should be prefixed with a namespace so that they are less likely to clash with other user-defined variables in Octopus (see this issue). For example, use an abbreviated name of the step template or the category of the step template).
[X] LastModifiedBy field must be present, and (optionally) updated with the correct author
[X] If a new Category has been created:
[ ] An image with the name {categoryname}.png must be present under the step-templates/logos folder
[ ] The switch in the humanize function in gulpfile.babel.js must have a case statement corresponding to it
Background
Updates an Azure Load Balancer to use a rotating list of backend pools. Our maintenance process involve rotating between different backend pools for testing purposes. Additionally, a single pool can be specified to target a specific pool.
For instance, we have 3 pools - Primary, Secondary, Tertiary. Each month we switch to the next pool so that the servers in the other pools can have maintenace executed on them. Assuming the Primary pool is current, after this step is run, the rules will be updated to point to the Secondary pool. The next run will update them to point to the Tertiary pool.
Alternatively, consider three pools - Canary, NonCanary, All - during our deployment process, we can specify NonCanary as the only pool in a list. This will target all traffic to those servers while the Canary servers are updated. When ready, we specify Canary as the active pool and all traffic is directed there. We test and can roll back to NonCanary as needed. Assuming all is well, we'll run the step a third time and specify All which includes all servers.
Results
This step template can be included in a project to upgrade tentacles.
Before
After
Pre-requisites
Id
should be a GUID that is not00000000-0000-0000-0000-000000000000
Id
property (updating theId
will break the Library sync functionality in Octopus).Version
should be incremented, otherwise the integration with Octopus won't update the step template correctly$
LastModifiedBy
field must be present, and (optionally) updated with the correct authorCategory
has been created:{categoryname}.png
must be present under thestep-templates/logos
folderswitch
in thehumanize
function ingulpfile.babel.js
must have acase
statement corresponding to it