Let me state it in start without any introduction. Devops is a culture of practices. It is not a tool. In fact, it is a set of processes for which we use different type of tools, so we can create the culture we want to follow in our organisation or project life cycle. There are lots of open source or proprietary tools to service our devops strategies.
Devops is a combination of rituals as well as tools to do those rituals. In this article, we are enlisting 7 such tools and practices which can help you to build a good devops culture,
Docker is a great and efficient container system to launch light weight technology specific stack to test our applications quickly. This tool can be used to setup different kind of similar environments on different machines very easily. You can even use versioning features provided by many hosted solutions of docker. There is a big repository of ready to use docker images which you can use to erect a system within few minutes.
I personally have more than few dozen docker machines running on my personal macbook where I do my initial level testing of projects in very light setup. Earlier I was using full fledged virtual machines using Oracle VirtualBox. Docker also used a virtual machine but only ONE virtual machine is required on which I can run my multiple setups of lamp, nginx, memcache, reds and many other required standalone stack.
Version control has grown into a very different kind of zone in last few years. From file based CVS system to branch based git, version system has seen lots of progress. git is distributed version control system where you can still do commits in offline mode and keep history of your changes. You only need to push or pull the code from remote repository ( repositories can also be multiple) when you need to interact with other team members of your team.
Communication gap is a major reason of conflicts between teams. So agile methods has to be used in a process of project delivery so every stack holder can be aware of potential problems, delays and gaps. Events of projects should be clearly defined and iteration rate must be good enough to compile a deliverable package for all stack holders. Agile is again a culture in itself, It is more than just standup daily meetings.
A programming language
Strategies or process are almost akin to algorithms of programming world. We need algorithms for better optimised execution of our programs while we need good strategies for good devops culture. A programming knowledge is required to transform these strategies into machine readable instructions. APIs of different tools also required to be implemented,so these tools can talk to each other on a common platform. For implementing APIs, we again need to know a programming language. You should be good enough in at least one programming language of your choice. It can be Python, PHP, java or Ruby. Personally I prefer Ruby and Python for devops strategies as they have a vast pool of libraries around devops tools. Many devops related tools like chef etc support ruby style of config files.
Jenkins or similar application
Cruise control was once my favorite tool of continuous builds and delivery. We even use SVN hooks to implement test rules and stricture in release process. Jenkins has grown into a full fledged continuous delivery application in recent years. It allows settings your rules for different stages of your applications.
Chef is a configuration automation tools for building pre-defined systems. Importance of chef can be gauged from that fact that a system build tool based on chef was bought by amazon and then converted to one of major offering of amazon cloud. This service is now known as Amazon OpsWorks. Using chef, we can build system and then can keep versioning of those systems. I personally run many system including few of my blogs using amazon OpsWorks.
Icinga is a fork of nagios which is a monitoring tool for services or system we need to involved in devops strategies. Health of your system needs to be continuously monitored for avoiding any last minute rush while you are supposed to put your attention to delivery of your project. For example, a hard disk without any space of left on it can cause all test cases to be failed . So we need something in place which can alert us in advance about such cases. Icings is one of them. It is much robust than small systems like monit.
IN last I would like to emphasise that this list is very short and I have tried to cover category leaders to care for specific categories.
Many other tools are also being used at a great level to achieve and create devops culture. Two specific categories which I have missed are testing cycle management and logging systems. Many tools like mantis to Jira are being used for testing processes or bug filings while systems like logstash. hosted logging and alert system like newrelic are also being used. You need to plan for YOUR devops culture and then select tools to create that culture.