Automating Configuration Management for DevOps Test Environments
The transformation of business to a customer-centric digital ecosystem, coupled with the advent of agile- and DevOps-based IT processes, has accelerated the adoption of cloud technology solutions.
Migrating these legacy IT systems to the cloud has certain, obvious advantages. By supporting global development and decreasing product deployment time, organizations worldwide have been able to rollout product features faster and accelerate the time to market.
From a QA perspective, testers be able to quickly verify the testing deliverables. It is important that the setup time for test environments is significantly reduced for cloud-based IT systems. Therefore, both automated test environment setup and on-demand provisioning or removal of test environments are becoming an important element of modern-day software projects. In traditional software development projects, configuration management (CM) is a manual process for establishing and maintaining the consistency of a platform’s functional and physical attributes. In modern day projects, it is essential to have an automated process in which the environment provisioning is done instantly and new environments remain consistent with previous ones. Configuration management represents a key challenge when implementing a robust test environment management framework on cloud.
2. Types of Test Environments
In this blog, we first discuss the various test environment management challenges one may face when migrating IT systems to the cloud. The WQR 2016 suggests that testing happens in permanent, cloud-based, temporary environments; virtualized test environments; and temporary test environments that are not cloud based.
3. Configuration and Environment Management Services on Cloud and Related Challenges
A well-defined configuration management policy plays a very important role in determining the readiness of test environments to move to cloud. The scope of configuration and environment management services comprises three main actions: defining and implementing configuration management policies, establishing the reference configurations for each environment, and developing a configuration management plan.
The following activities are also considered to be within the scope of test environment configuration management:
- Administering the configuration management toolset
- Monitoring and improving configuration management processes and assets
- Validating and deploying releases
- Promoting configuration from development, to testing, and to staging environments from production to production copies
- Automating the configuration deployment and reporting tasks
- Validating and publishing the release notes
As previously stated, the need for both quick setup time and an on-demand availability of environments is the primary objective of test environment management discipline. This requires teams to speed up the deployment process and to stabilize the concerned environments. The delay in code promotion from development, to testing, to staging environments needs to be reduced through the implementation of automation for code promotion tasks.
According to the World Quality Report 2016, managing multiple versions of ERP test environments remains a major challenge faced by project teams as a result of the consistent lack of automated configuration management of test environments on cloud.
4. Potential Solutions for Automated Configuration Management
Start by building a configuration management toolset that will discover, report, and enable actions on operating systems and applications. This toolset will automate environment deployment tasks. Said automation will ensure the repeatability and consistency of future environment builds. Implement this toolset by following the steps outlined below:
- Determine the list of OS (firewalls, hostnames, etc) and application configuration items to manage
- Install and configure a configuration management tool such as Puppet, Chef, Salt, or Ansible for overall configuration management
- Install and configure the supporting tool set with Git, Jenkins, and Maven
- Generate “as-is” configuration management reports
- Build configuration management deployment scripts
- Establish a workflow for automated deployments
- Document test deployments and procedures
- Release deployments and procedures for operational use.
The following diagram provides insight into the common toolsets used for configuration management automation
Conclusion: The Benefits of Automating Configuration Management
The automation of configuration management activities is required to implement the test environment processes that are compatible with the demands of cloud-based environment provisioning projects. The benefits include:
- Better pipeline management and control, which allows for better asset utilization while lowering TCO, management, and support costs
- Increased automation of build and deployment activities, including the use of monitoring (health checks and shakedowns) to improve productivity
In conclusion, an automated configuration management system enables focused development and testing.