DevOps Tools: Configuration Management and Automation
Being a junior administrator in the world of DevOps has been a very challenging and rewarding endeavor. My start in a entry-level support role has been similar to what my teammate, Jonathan Robertson, experienced. When I started working at Rackspace, I moved to the Jungle Disk team from an email support role and have had a blast over the last few years. Working alongside individuals who love what they do and devote their lives to our customers is inspiring and reassures me that I’ve made the right decision being with this team.
Early this year, I transitioned into a DevOps role learning a lot about how Jungle Disk works from a technical perspective from two great techs, Tom Welch and Trey Fischer. This year, I have taken a big role in day-to-day operations of our infrastructure, identifying potential issues and proactively fixing them before they have a chance to impact our customers. To assist in the management of our infrastructure, we have been using Ansible. Ansible is a configuration management tool used to automate cloud provisioning and deployments. The benefit of using a tool like Ansible and other tools is the ability to take a complex set of tasks and write instructions, in this case referred to as a Playbook, to execute those tasks without any human intervention required beyond the initial execution and development of the playbook. A playbook is written in a YAML, a human-readable data serialization language, format. Here is an example of what a task in a playbook would look like:
- name: install my packages yum: name= state=latest with_items: - yum-utils - bash-completion - wget - vim
YAML is human readable and no development experience is required to begin writing playbooks to begin automating your tasks. Because of this, it is very easy to get started writing automation and make even complex tasks simple.
A recent example of the convenience of an automation tool like this came when we needed to make changes to our infrastructure, essentially rebuilding 40+ servers from scratch. Without a configuration management tool, a job like that could easily take a week or more depending on the complexity. We created the servers and had them ready for deployment in the next maintenance window on the same day.
With a tiny bit of dev experience, you can take simple automation tasks like that and begin developing integrations for other systems you may be using. A great example is Slack and it’s API allowing for team collaboration and bot creation. We’re currently using a bot that is checking our environment for patch availability and post helpful updates in a Slack channel to let us know if we’re missing any critical patches that would help keep our environment secure. That is a very simple use case and something like that could be expanded to listen for Slack events, allowing you to run Ansible directly from Slack.
I look forward to expanding our use of Ansible and thinking of new useful integrations to create more efficiencies for our team.