Automate your IT Infrastructure with Ansible

More modern software development shops continue to boost productivity by leveraging a variety of modern methodologies — most notably Agile and DevOps — as well as the software tools to make things run smoothly. Automation also plays a big role in helping the development and QA processes become more efficient. Ansible is one such automation engine earning accolades in IT departments for its simplicity and power.

If you are looking to get more done in less time — a common refrain in today’s technology world — read further to learn more about Ansible. It might just be the missing link in your shop’s arsenal of tools.

A Closer Look at Ansible

Ansible’s automation engine handles a host of tasks normally taking up the valuable time of software engineers, QA personnel, and network administrators. These include the provisioning of Cloud environments, application deployment, configuration management, and loads more. Since it was first developed for multi-tier architectures, Ansible won’t have a problem modeling your shop’s entire IT infrastructure — Cloud-based and on-premise.

This free-software automation tool first became available under the GNU Public License in 2012, and it is compatible with the Linux and Windows platforms. A company named Ansible, Inc. offers commercial support while maintaining the application’s codebase. Ansible, Inc. was acquired last year by the major Linux distributor and open source software company, Red Hat.

Similar configuration automation tools include Chef and Puppet. Ansible holds an advantage over these older applications with its agent-less architecture. This allows management of remote machines without a local daemon present, greatly reducing the overall network traffic.

Simple and Elegant Configuration Management

With no remote agents and no additional security considerations, Ansible deploys in an easy manner. It uses simple documents, called Ansible Playbooks, written in a YAML format to describe automation and configuration tasks. This means nearly all system functionality is controllable using only a text editor and a terminal program.

When running, Ansible connects to all the nodes in a system, while quickly installing and executing a small program called an Ansible Module over SSH to perform a variety of orchestration and management tasks. The module then removes itself upon completion. Modules can be written in a variety of scripting languages: Python, Perl, Ruby, or anything that can output JSON.

The tool plays well with other network applications, enabling you to connect and get inventory information from a variety of Cloud management tools, like Rackspace, OpenStack, and EC2. Of course, you can simply define all this information in a text file — simplicity and flexibility are the keys. Ansible also comes with over 200 pre-written modules, so you can get started managing your network environment with minimal hassle.

A simple architecture with little network overhead, combined with Modules to perform functions and Playbooks to orchestrate the whole show makes Ansible worthy of consideration for automating your organization’s technical infrastructure. It integrates nicely with your existing Cloud investment while taking advantage of your development staff’s scripting language acumen. Download Ansible and give it a test run to see if it makes sense at your shop.

Come back to the Betica Blog regularly for additional news and information about the software development and QA universe.

ChatOps — a Way to facilitate Agile and DevOps

Improved collaboration is at the core of the Agile and DevOps methodologies — especially the latter. All this interaction between technology professionals — developers, software testers, network engineers, and business stakeholders — requires enhanced and timely communication, either in person, over the phone, or increasingly using some form of messaging client. The speed of the software development process depends on it.

The term for this modern software engineering model is known as conversation-driven development, or a catchier moniker: ChatOps. Let’s take a closer look at ChatOps to see it makes sense to use it at your shop. Maybe it can supercharge your software development efforts?

A Closer Look at ChatOps

ChatOps takes the instant messaging communication model and enhances it by adding the capability for the chat bot being used to recognize certain commands and execute them as scripts. These scripts are used to run builds, message everyone on the team, or any number of relevant functions. A variety of open source chat bots (that are in turn compatible with different chat clients) are able to be configured to execute commands that work with build servers, deployment servers, and more.

Some of the chat clients able to be used with ChatOps include Campfire, Slack, and HipChat. They need to be paired with a chat bot, such as Hubot, Lita, and Err. Since the bots are all open source and written in popular languages, like Ruby or Python, modifying them to suit your team’s purposes shouldn’t be difficult.

Many software development pundits credit GitHub for devising the conversation-driven development model and coining the term, ChatOps. For an example of the methodology in action, Flowdock describes in a blog post how they implemented ChatOps as part of their development process.

Essentially, ChatOps adds a functional layer to the conversations at the heart of collaborative software development in the Agile era. The ability to perform some development tasks, like starting a build, deployment, or automated test scripts, while exchanging messages with the other members of a DevOps team simply adds efficiency to the entire process.

Agile continues to evolve how Software gets Written and Managed

ChatOps, in a similar manner as DevOps, is simply a continued evolution of Agile’s influence on software development. No longer do programmers and QA personnel sit in their cubicles working alone except for a daily meeting. Team members are able to interact through messaging, in addition to the added visibility and functionality provided by a chat client executing builds or notifying everyone when errors bubble out of a production server.

This model is especially effective when considering the widely distributed nature of many software development teams. The other programmers may be working in a different continent instead of in the same building. Additionally, leveraging automated tasks implemented using the chat bot reduces the adverse effects of human error on software projects.

In short, if Agile and/or DevOps is your methodology of choice, you need to consider using ChatOps to truly get the most out of your investment. It even offers advantages to any software development methodology.

Stay tuned to the Betica Blog for further insights from the world of software development.