We are migrating our deployment process from Octopus Deploy to Azure DevOps. We have been able to configure DevOps self-hosted Windows agent to deploy our application to single target machines without issues.
However, the clustered environments we use have 1 active and 1 passive node. Ideally we have the DevOps Agent Service installed on both nodes (but running only on active node). If there is a failover, we want to be able to deploy the application to whichever node is active at the time.
Our deployment scripts can update the code on the passive node as well, while they are being run on the active node
- Create a build package of our application using a Azure Build pipeline
- Publish package to Azure
- Use a release pipeline to deploy package to one or more target machines
- Release pipeline is configured to run some powershell scripts that completes the configuration (e.g. registering web app in IIS, updating SQL database version and running migration scripts etc.)
- Our powershell scripts also updates the code on the passive node, when deploying to the active cluster node
- We are unable to configure an Agent Service using the same name (cluster host name) on both cluster nodes. DevOps only allows Targets to be registered with unique names, under Deployment Groups.
- We were able to register 2 agent services (1 on each node of Windows Cluster) with unique names, however since both agent services are on different nodes and have different names, we cannot add a single Agent service to our Windows Cluster role. If we add both agent services to the cluster role (from active and passive nodes)
Is there a better way of managing Windows cluster nodes as deployment targets, using Azure DevOps ?