Comprehensive configuration verification before the release deployment
Frequent deployments of application releases in multiple, complex environments are always a challenge. If there is a chance that someone did some local change as an emergency fix and this change was not reflected in the source repositories used by automated deployment tools, then this change may be overwritten by the next release deployment.
One of the techniques that may be used as a verification and quality check step before the release deployment is automatic generation of configuration delta report, that would compare current configuration settings (config files, queues list, database settings, application parameters, etc.) with the same set of settings in the new application release.
If a release deployment process is designed in a way that clearly separates configuration artifacts generation from actual application deployment, then the delta automation may leverage the config generation part of the release deployment automation. The next steps are related to collection of current configuration settings from the target systems and generation of an aggregated configuration delta report.
The delta report needs to be reviewed by appropriate teams as part of the deployment process before the planned release deployment.
Ansible may be a good candidate for the delta automation tool, especially if it is already used for application release deployment.
- The sample sequence of steps executed by the Ansible playbook on each application server:
- collect deployment package from the Artifactory
- generate local configuration settings based on the new release
- collect existing configuration settings (config files, queues list, database settings, application parameters, etc.)
- compare current config settings with settings generated from the deployment package and generate local delta
- collect delta reports from all application servers
- share aggregated delta report with respective teams
We designed and implemented a similar solution at one of our customers and it greatly decreased the number of issues during application release deployments.