Lately I’ve been getting a lot of questions about DevOps so I thought I’d share some free tools to get you started on your DevOps journey, and give you a starting place for hacking your resume with awesome skills and experience.
As discussed in my free DevOps eBook, DevOps is a term for the streamlined processes used to improve communication and work between Software Developers and IT Operations (A. K. A. SysAdmins).
What is tool chain automation?
I’m always asked, “Where do I start?” a good question because when you search for DevOps tools there are pages and pages of search results about tools to pick from – it’s overwhelming where to begin. But in this lesson we’re going to narrow the search results for you and focus on 3 tools used by Pros already crushing-it with Continuous Integration/Continuous Delivery (CI/CD).
Are you ready to get down to business? In this lesson, we’re going to quickly cover:
You may wonder why you should download and learn these 3 DevOps tools, first?
How about because they’re used by the Pros and YOU want to be the Guy/Gal who stands out during interviews because you have relevant skills and experience that IT Managers need!
DevOps Toolchain For Beginners
Ansible (Configuration Management)
First we’ll begin with one of my favorite DevOps tools.
Ansible is a powerful automation platform that can help you run tasks and chains of events which must happen on several different servers or devices at a certain time.
What does that mean?
It means Ansible can run multiple tasks at the same time so this tool will definitely help you get more done in a shorter period of time.
This sweet tool manages machines over the SSH protocol, thus you would only be required to install it on one central machine. From there, Ansible can run a set of remote machines easily.
This may not sound like a big deal, but imagine being a single Linux admin with 100’s of Linux boxes that required updates. With Ansible you could handle code releases or Linux patching with a run book and few commands.
According to their website, Ansible releases new versions every four months or so and in each new version minor bugs are fixed. You can choose the latest version with the least amount of bugs but most people go for the development version because it’s the easiest to use and does not require any installations.
When installing Ansible, it’s recommended to use the Python package manager or the OS package manager.
Current versions of Ansible can be installed on any machine with Python 2.6 or version 2.7. Other than that you may have to make a few tweaks, and some installations might have additional requirements. No big deal, because this all adds to your experience.
So go ahead, Download Ansible and start expanding your DevOps skills. Ansible experience and skills make awesome bullet points to have on your resume. Here’s a related post about using Ansible to bootstrap new Docker nodes…
Git (Version Control System)
Next on the DevOps toolchain is Git.
Git is not just any Version Control System (VCS), in my opinion, it’s the best.
While most other tools of this kind will keep information as a set of files and sets of changes made to each file over time, Git stores its information differently.
Every time you save a specific file in Git, it will immediately take a picture of what your file looks like and save that snapshot. Once you save the same file again, if there hadn’t been any changes to it, Git won’t store the file again but it will simply link the previous identical file that has already been saved. Sounds cool, right?
Operations in Git require only local resources to function. No information from another computer or network is needed. If you were to look for a project history, Git will simply read it from your local database. This allows you easy access to your information even when you’re offline, which is why this DevOps tool is very versatile.
Git allows you to do work while you don’t have Internet access and/or finish important tasks on the go…
A key feature this DevOps tool provides is it’s impossible to change the content of any file without Git knowing about it which is exactly why it’s recommended for use in DevOps.
You can’t lose your files or have them corrupt without Git detecting it. After you create a snapshot in Git it’s difficult to lose it because everything is stored in Git’s database. You can freely experiment with your files and make changes because whether or not you save them, you will still have that original version in the database.
Git has three important states where your files will be stored. Those are: committed, modified and staged. If your files are stored as committed, it means that the data is safely placed into your local database. Modified means that the file had been changed but it had not yet been committed to your database. And finally, staged means that you have marked a modified file in its current version to be committed, which basically means it will get placed in the database.
The most important part of Git is the directory because that’s where Git stores all the metadata for your project. The second part is the working tree which is kind of like a checkout. This is where your file is pulled out of the database and put on a disk for you to use. In the third part, the staging area, a file stores information about what will go next into the committed state.
Working in Git is fairly easy. You modify your files in the working tree after which you stage them and create snapshot of them. Lastly, you commit the files and they get permanently saved in your local database.
Git is another DevOps tool that is used a lot, and a good understanding how to set up Git and how to use the VCS is a must for SysAdmins working alongside developers.
Well, what are you waiting for? Download Git and get going…
Jenkins (Automation Server)
I saved the best of the DevOps toolchain for last…
Jenkins is an automation server used by lots of DevOps engineers. This tool is used in small startups, all the way up to the giants service providers we use every day.
Its value are many but a couple of key features are the ability to automate tasks for deployments and testing of software code. With bunches of plugins for every imaginable configuration, customers can get all sorts of functions out of the Jenkins, including integration with Git.
For example, as an integration service, Jenkins merges codes from individual developers into a project and continuously tests it to avoid any possible bugs or issues. Or, as a delivery service, it makes sure that the merged code is ready for use at any given time. With Jenkins you can automate these processes from end to end.
Besides managing workflows from source to delivery, many other DevOps tools work with Jenkins to add more functions. An example is how Jenkins is used with Docker containers to automatically deploy and scale environments. Although, for the record, Docker is more than a DevOps tool, click here to read more about Docker.
Continuous Integration (CI) is an important part of any development team, and Jenkins functionality allows engineers to automate various deployment processes while completely relying on tools and the power of automation for completing tasks.
Do you see the value of Jenkins?
It allows Dev teams to function more efficiently and with Jenkins they can easily test for any type of error during the SDLC process.
According to their website, the first release of Jenkins took place back in 2005 and since then Jenkins has become an award-winning DevOps tool. When combining Jenkins with other DevOps tools you get endless possibilities in terms of development, deployment, and systems automation.
Do you see now why I saved Jenkins for last? Now Download Jenkins and enjoy building skills and experience that will stand out on your resume.
You learned about the DevOps tool Ansible which is used to do systems automation. There are other tools like Ansible such as Chef and Puppet, but for the Linux admin who wants to get relevant DevOps skills fast, Ansible works best.
Then you learned about Git and how it works to keep versions of files organized. This tool is important for SysAdmins working along side of Developers. Setting up Git and/or Github, and helping the Dev team to get organized is part of the DevOps journey.
And finally, we covered Jenkins for automation of code deployments, testing, and everything in-between. Throw in a few plugins here and there and you have the makings of CI/CD and DevOps.
Obviously there are many more tools we didn’t cover on the DevOps toolchain, but let me emphasize that becoming well-versed in these 3 important DevOps tools will go a long way for anyone who is looking for a job with a startup or a big shop that needs good automation talent. Start with this DevOps toolchain and you’ll be surprised how far it takes you.