As a DevOps engineer or a developer, you have to shut down those distractions and deliver high-quality infrastructure automation and IaaC workflows. Thankfully, productivity tools – DevOps engineer’s best friends can help in creating awesome code.
These productivity and free tools can help you save time, communicate and collaborate on your projects. In short, they help in testing applications using repeatable infrastructure, collaboration, and communication easily.
Here’s a list of tools that can improve the productivity of a developer. These tools have been around for some time and have a great reputation among developers and DevOps enthusiasts.
Among DevOps tools, vagrant is widely used for the purpose of development and testing. It can be used to create a development or mimic the production environment.
With Vagrant, developers can set up virtual machines by importing boxes (virtual machine templates) from the vagrant cloud, setting VM settings (like networking storage, etc), and running provisioning tools like Puppet or Chef.
The best thing about vagrant is, a lot of application stacks comes bundled with the vagrant boxes. For example, if you want to develop on a LAMP stack, you can search for a LAMP box in the vagrant cloud. It will list all the available boxes developed by the community with LAMP versions. By using these boxes, you can save time in setting up the applications manually.
Vagrant lets you run sandboxed environments without messing up your workstation configurations. For example, If you want python 2 and 3 development environments, you can have two vagrant boxes running python 2 and 3.
Also, you can have your own chef cookbooks, puppet modules, or Ansible playbooks that can be used in the vagrant configuration file, which automates the configuration using a cookbook, module, or playbook.
If you are new to Vagrant, you can get started with this Vagrant tutorial for beginners
Vagrant Use cases
- For repeatable development environments: You can share a vagrant file with other developers which will launch the same virtual machine as you have on your laptop. This avoids the configuration drift between developer workstation configuration.
- Load testing/Mimicking Production environment: You can spin up vagrant boxes in a matter of seconds and destroy them for load testing or performance testing. Also, you can have a production-like environment by networking vagrant boxes together.
If you are a developer, you will start loving this tool. Docker is an open-source tool that allows developers to create and manage applications within Linux containers.
Docker Hub, an online repository for Docker images lets you download prebuilt docker images with most of the application stacks. Developers do not need to create a virtual machine or mess up their existing configurations on their workstation – they can simply start working on apps using these docker images.
The best part about docker is that it takes less than second to start a container.
An addition to Docker is Kinematic. Kinematic can install the Docker engine on your system. It automates the installation of the Docker engine, Docker machine Virtual box backend, and other docker components.
It has an excellent GUI for managing docker containers. Other features of Kinematic include the ability to search images, switching between CLI and GUI, managing ports, configuring environment variables, logs, etc. Docker is a suitable tool for creating an isolated environment.
You can also spin up containers on a vagrant box if you do not want a GUI application.
If you are someone who plays around with cloud VM’s, this tool is for you. This tool automates the image creation for your cloud provider. Also, the configurations that you write in packer are cloud-agnostic.
You can write a packer configuration for creating an image with a specific application stack and use it with multiple cloud providers.
Also, you can use provisioners (Shell, Ansible, Chef etc..) to automate the application configuration in VM images.
If you are new to Packer, you can refer to the packer tutorial for beginners
Continuous Integration Tools
Continuous integration is no more a process a Developer follows. When it comes to DevOps practice, even infrastructure code should follow CI practices. Let’s take a look at some of the open-source solutions for all your CI needs.
Jenkins is a widely adopted open source continuous integration tool, with huge community support. It has a low learning curve. Just install it and use it to work with your Java or. NET projects. Docker images are available for most of the Jenkins versions.
If you are new to Jenkins, you can get started with the Jenkins tutorial for beginners.
If you have your code on Github, you can make use of Github actions for your CI needs. You can also create well-defined workflows to automate the build and release process. It has a growing list of integrations with all the cloud and open source tools.
Travis CI is a cloud-hosted continuous integration platform. You can use it for your open source projects. It is completely free and you don’t need a self-hosted CI setup if you use this service.
Version Control Systems
It is best practice to push even a single script file to the version control system. As a DevOps engineer, you should follow all the development best practices and use version control systems for all the code you write.
A development tool is incomplete without GitHub, a repository hosting service. It offers version control, SCM functionality, and collaborating functionalities like bug tracking, task management, and others. It also offers social networking features like followers and feeds.
Developers can access public repositories and submit their source code to the repositories. Also, being the largest code repository in the world, managing pull requests, and tracking issues is a breeze.
Bitbucket is a collaborative revision control system that uses Mercurial and Git. Developers can access, unlimited free private repositories, manage or share repositories, collaborate on code and much more. Bitbucket is also integrated with JIRA, a project management tool.
If you would like to have a Github-like setup for your own, you can go for Gitlab. Once setup, you can use it to host your application code in a well-managed way. If you hate configuring software, you can use the Gitlab docker image for a single line setup.
We don’t always work on our workstations. You might want transient work environments that you can spin up on demand and tear down when not needed. Here is where the cloud comes into play.
With options like AWS, DO, Lightsail, developers can set up their own virtual private server in just a few clicks and pay money for the bandwidth they use on an hourly basis.
AWS offers a power-packed solution with Virtual machines and several other services for developing your websites or apps. AWS is the grand-father of cloud computing.
AWS is a must-use application for developers looking for robust infrastructure and affordable hosting solutions.
If you signup for an AWS account, you will come under a free tier program and you can spin up their services for free (Conditions apply).
DigitalOcean offers Virtual machines with lightning-fast speed and awesome developer tools. The cloud instances in DO are referred to as droplets which can be deployed in just 55 seconds. It has made a whole lot of difference in the market with its intelligent strategies, low-cost solutions, and the best cloud offerings. With extensive support through tutorials and groups, you will never have to face an unresolved issue.
If you can a $10 free credit if you signup using this link.
Another great product from the tech giant, Amazon, Lightsail offers developers an option of setting up their own VPS in just 3 clicks. Developers can get the benefit of AWS, without the hassle of learning complex services. Lightsail will do all the hard work – so you can focus on the important tasks at hand.
Slack is a great tool for online communication. It is integrated with a long list of apps like Google Calendar, Skype, Trello, GitHub, Jira and much more. If you are looking for a tool to brainstorm, communicate and collaborate, Slack is the one!
Platforms: – Web app, Desktop application – Mac, Windows and Linux, Mobile app – iOS, Android, and Windows Phone.
Trello is an exciting, visual project management tool that can organize projects into boards. It has almost every feature that, can you help you in the effective organization of your tasks. Developers can collaborate in real-time. Based on Kanban, it has a great UI and whiteboard layout where you can post your to-do lists, ideas in a fun way.
Platforms: – Web app, mobile app – iOS and Android
Asana is the best tool that can help you in collaborating with your peers. It offers an intelligent, integrated and adaptable project management system. With Asana, you can collaborate in real time. It also enables you to manage tasks or “to do’s” via email. Comments or notes can also be added to communicate directly inside Asana and make the tasks information-laden. Separate projects can be created and within your projects, you can create different tasks. In a nutshell, Asana is a great tool for project management. Other key features include – Workspace, Projects, Tags and Inbox.
Platforms: – Mobile App – iOS, Android and Web app
Learning is a continuous process. There are many resources out there to help you out with the latest technologies. You can make use of those resources to keep yourself updated with the technology trends. You can check out the resources for learning from here. Online Websites to Learn Programming
In the world of productivity tools and free, the ones listed here are the best. Use these tools and excel at your work!
If you think we have missed a wonderful tool, please let us know. We will add it to the list.