CM, in the realm of technology and systems administration, can be compared to the role of a conductor leading an orchestra. Imagine yourself guiding a group of musicians, each playing a unique instrument. Your responsibility is to ensure that everyone is harmoniously in sync, adhering to the correct musical score, and executing their parts at precisely the right moments.
In the context of technology and systems administration, CM is the practice of skilfully orchestrating and overseeing the creation, updates, and maintenance of computer systems and software, much akin to how a conductor directs musicians to produce splendid music.
Here’s a breakdown of how it functions:
- Standardization: As with musicians employing the same musical notes and scales, CM guarantees that all computers and software within an organization adhere to standardized configurations. This uniformity mitigates errors and bolsters system reliability.
- Automation: In an orchestra, musicians don’t manually fine-tune their instruments during a performance. Likewise, CM tools automate the configuration and upkeep of computer systems, consistently applying configurations without the need for manual intervention.
- Version control: Musicians follow specific sheet music, and if alterations occur, everyone receives updated sheet music. CM maintains a version history of system configurations, simplifying the tracking of changes, reverting to previous versions, and ensuring alignment across the board.
- Efficiency: Just as a conductor synchronizes the timing of each instrument, CM optimizes system performance and resource allocation. It guarantees that software and systems operate efficiently and can scale as required.
- Compliance and security: Analogous to a conductor enforcing performance guidelines, CM enforces adherence to security policies and best practices. It plays a crucial role in upholding a secure and compliant IT environment.
- Troubleshooting: When issues arise during a performance, the conductor swiftly identifies and addresses them. CM tools assist in troubleshooting and rectifying configuration-related problems in IT systems.
To understand CM better, let’s first look at the traditional way of hosting and managing applications. We first create a virtual machine (VM ) from physical infrastructure and then log in manually to VMs. We can then run a set of scripts or do the setup manually. At least, that’s what we’ve been doing till now, even in this book.
There are several problems with this approach. Let’s look at some of them:
- If we set up the server manually, the process is not repeatable. For example, if we need to build another server with a similar configuration, we must repeat the entire process to build another server.
- Even if we use scripts, the scripts themselves are not idempotent. This means they cannot identify and apply only the delta configuration if needed.
- Typical production environments consist of many servers; therefore, setting everything up manually is a labor-intensive task and adds to the toil. Software engineers should focus on novel ways of automating processes that cause toil.
- While you can store scripts within source control, they are imperative. We always encourage a declarative way of managing things.
Modern CM tools such as Ansible solve all these problems by providing the following benefits:
- They manage configuration through a set of declarative code pieces
- You can store code in version control
- You can apply code to multiple servers from a single control node
- As they are idempotent, they only apply the delta configuration
- It is a repeatable process; you can use variables and templates to apply the same configuration to multiple environments
- They provide deployment orchestration and are mostly used within CI/CD pipelines
Although many tools available on the market provide CM, such as Ansible , Puppet, Chef, and SaltStack, Ansible is the most popular and straightforward tool used for this. It is more efficient, andits simplicity makes it less time-consuming than others.
It is an open source CM tool built using Python and is owned by Red Hat. It provides the following features:
- It helps you to automate routine tasks such as OS upgrades, patches, and backups while also creating all OS-level configurations, such as users, groups, permissions, and others
- The configuration is written using simple YAML syntax
- It uses Secure Shell (SSH) to communicate with managed nodes and sends commands
- The commands are executed sequentially within each node in an idempotent manner
- It connects to nodes parallelly to save time
Leave a Reply