In this blog post
Using Configuration Management Data to Drive Automation
In today’s IT world, automation has been playing an enthusiastic role. It has number of advantages in helping organizations deliver value. The most obvious benefits are improved productivity, efficiency and thus, the ability to be more competitive. The more simplistic and structured the task, the easier it is to automate. So, something linear – like opening a door automatically – should always work if the environment is clear of obstacles. Therefore, self-driving cars, with many dynamic variables, have been a long-term goal for automation.
Conversely, when automation goes wrong, your organization’s service delivery is going to suffer. Ensure you know about a process end-to end before you decide on automating it. This way you can prevent many issues.
Role of Service Configuration Management in Automation
In the technology world, configuration management is an IT management process that tracks individual configuration items of an IT system. IT systems are composed of IT assets that vary in granularity. An IT asset may represent a piece of software, or a server, or a cluster of servers.
Some examples of software configuration metadata are:
- Specifications of computational hardware resource allocations for CPU, RAM, etc.
- Endpoints that specify external connections to other services, databases, or domains
- Confidential info like passwords and encryption keys
It’s easy for these configuration values to become an afterthought, leading to the configuration to become disorganized and scattered. Imagine numerous post-it notes with passwords and URLs scattered around an office. Configuration management solves this challenge by creating a “source of truth” with a central location for configuration.
And with the right service configuration information, you can automate new user licences, installations and accommodate needs with different nuances, such as user languages. The requirement for well-structured and maintained configuration data applies in the same way to everything you want to automate.
Let’s look at several automated service management examples that each rely on a bedrock of data, knowing stakeholders and gathering the right information:
Example 1: When a workload stops responding, the restoration steps involve restarting it on a different server that has available capacity to run it.
With the right service configuration information about the server capacity storage/disk space, it can automatically adopt different server.
Example 2: When an employee is onboarded to an organization, the IT team needs to create the O365 user accounts, system installation, group drive access, add them to projects based upon their skills, experience, and allotment.
With the right configuration information, you can easily automate new user account onboarding tasks including, granting access, creating credentials, installations, allotments, etc.
How Configuration Management aligns with DevOps, CI/CD and Agile
Configuration data has historically been hard to wrangle and can easily become an afterthought. It’s not really code, so it’s not immediately put in version control and it’s not first-class data, so it isn’t stored in a primary database.
The rise of cloud infrastructures has led to the development and adoption of new patterns of infrastructure management. Complex, cloud-based system architectures are managed and deployed using configuration data files. These new cloud platforms allow teams to specify the hardware resources and network connections they need provisioned through human and machine-readable data files like YAML. The data files are then read, and the infrastructure is provisioned in the cloud. This pattern is called Infrastructure as Code (IaC).
DevOps Configuration Management
DevOps configuration is the evolution and automation of the systems administration role, bringing automation to infrastructure management and deployment. Enterprises today utilize it to empower software engineers to request and provision needed resources on demand. This removes a potential organizational dependency bottleneck of a software development team waiting for resources from a separate system administration team.
CI/CD Configuration Management
CI/CD configuration management utilizes pull request-based code review workflows to automate deployment of code changes to a live software system. This same flow can be applied to configuration changes. CI/CD can be set up so that approved configuration change requests can immediately be deployed to a running system.
Agile Configuration Management
Configuration management enables agile teams to clearly triage and prioritize configuration work. Examples of configuration work are chores and tasks like:
- Update the production SSL certificates
- Add a new database endpoint
- Change the password for dev, staging, and production email services
- Add API keys for a new third-party integration
Once a configuration management platform is in place, teams have visibility into the work required for configuration tasks. Configuration management work can be identified as dependencies for other work and properly addressed as part of agile sprints.
Configuration management is a necessary tool for managing complex software systems. Lack of configuration management can cause serious problems with reliability, uptime, and the ability to scale a system.
Many current software development tools have configuration management features built in. But one of the key service configuration management challenges is data that is managed by more than one person or team. This needs governance and guidance to enable people to do it properly.
And clearly, automation offers major benefits in terms of consistency and reducing human error. But gathering and managing the data that exists behind the ability to automate will make all the difference. The more you can bring a benefit back to the people responsible for managing the data, the easier it is to get them to do it and do it well. Therefore, understanding their needs and promoting the benefits become important activities, which need attention.