Configuration administration (CM) and Distant Execution instruments are quick turning into the instruments of alternative for a lot of a sysadmin or devops professional. In case you contemplate that the purpose of computing is to make our knowledge administration simpler, then CM instruments make are the subsequent degree of that logic – they make it simpler to handle the big teams of servers that make it simpler to handle our knowledge. CM instruments are nice for all types of routine actions within the knowledge middle: automation of scripts on quite a few servers, distant execution and deployment, provisioning and putting in the identical software program on a bunch of latest servers, and so forth. CM instruments will allow you to execute stuff like: “I’ve this command I wish to run throughout 100 servers. I would like the command to run on all of them inside a 5 second window.
If it fails on, say, three of them, I have to know which three. There are a selection of CM instruments available in the market, some higher suited to sure duties than others. The elders on this market are instruments like CFEngine, Puppet and Chef; they’ve been round because the mid-2000’s or earlier, however there are additionally some new upstarts like Salt and Ansible. Let’s examine Salt and Chef.
What They Are
Salt is a new-ish entrant to this recreation, first launched in 2011. It’s constructed on and makes use of Python, not Ruby, in its CLI, as a result of its founders consider that Python libraries are in all Linux distros and it’s in additional widespread use anyway. This Ruby-Python debate has ignited multiple flame struggle on the internet, and we received’t go into the deserves and demerits of every. Salt is open-source and supported by mum or dad firm SaltStack, and is gaining a rising following; the consumer group is especially energetic and useful, and the documentation is in depth and properly laid out. There’s additionally a industrial enterprise model of Salt from SaltStack, and Salt is at the moment out there for Linux and Unix, though there’s additionally rudimentary Home windows help.
Chef is an older instrument, first launched in 2009. It’s supported by mum or dad sponsor Opscode (which lately introduced they’re renaming your entire firm Chef to cut back confusion), and is often in contrast and contrasted to Puppet, one other older CM instrument. Really, Chef is nearer in execution to Puppet than to Salt – it makes use of a pure Ruby DSL within the CLI, it totally helps Home windows in addition to Linux and Unix, and it additionally boasts a correct GUI (although nonetheless not as slick as Puppet’s). Nonetheless, there are complaints that Chef is a muddle to know for newbies, and the documentation shouldn’t be simple to wrap your head round.
How They Work
Salt is custom-designed to be easy, scalable and versatile but nonetheless a robust CM instrument. It makes use of the ZeroMq messaging library for transport and deployment, and that makes it noticeably quicker than most different CM instruments. It makes use of a grasp server and deployed brokers known as minions to regulate and talk with the goal servers. You may even configure a number of ranges of masters, leading to a tiered association for load-sharing and elevated redundancy. The fly within the ointment right here is that this master-minion setup isn’t as safe as SSH, so Salt introduces additional safety by means of its personal AES implementation. Additionally, the grasp and minions all require persistent daemons to be working for communication, and these 2 information impose a small efficiency penalty. Salt organizes configs and setups into YAML output recordsdata known as ‘states’ and centrally-located base configs known as ‘pillars’. All these are managed utilizing numerous modules – Salt-cloud, Salt-virt, Salt-vagrant, Salt-monitor and Salt-ui. Salt additionally features a GUI instrument known as Halite; however that is nonetheless a poor, model 0.1 effort – for instance it solely provides a view of minion standing and occasion logs, however no option to deploy minions or concern instructions to them. The SaltStack dev crew is working onerous on enhancing Halite, however for now most customers must depend on the CLI for interplay.
Chef additionally makes use of a master-agent setup, and along with a grasp server, a Chef set up additionally requires a workstation to regulate the grasp. The brokers may be put in from the workstation utilizing the ‘knife’ instrument that makes use of SSH for deployment to ease set up. However Chef, in contrast to Salt, doesn’t help push from grasp to agent. Why this characteristic shouldn’t be but applied is past me. It’s a obvious omission that suggests all brokers should be configured to test in with the grasp periodically, so utility and rollout of adjustments and new apps is not actually potential, it solely occurs the subsequent time an agent dials again residence. Persevering with with the kitchen motif (see ‘knife’ above), Chef configs are packaged into JSON recordsdata known as ‘recipes’, and the software program can run in client-server (known as Chef-server) or standalone mode (known as ‘Chef-solo’). The Chef GUI is a lot better than Salt’s however even it doesn’t have some options like reporting and superior config rollouts.
Conclusion
Just some years in the past your solely alternative of a CM instrument was CFEngine and a bit later, Puppet. The truth that we now have so many to select from, every mightily competent in its personal means, is a large bonus. So selecting between Chef and Salt comes all the way down to what your preferences are: an older, trusted instrument utilizing Ruby and that may help a combined Home windows-Linux setting, or a more moderen mostly-Linux instrument with pace and simple scalability as its calling playing cards? The professionals and cons chart under will hopefully make this choice simpler, however bear in mind you can’t go flawed selecting both.
Â
Execs
Cons
Salt
Makes use of Python, which is constructed into Linux and extra widespread.
Very quick efficiency.
Simply scalable and deployable.
YAML output; simpler to format andunderstand.
Ties customers to Python.
Poor, underdeveloped GUI.
Primary help for Home windows.
Chef
Extra mature resolution.
Bigger group, with a largecollection of modules and configuration recipes.
Full help for Linux, Unix, Home windows.
Ties customers to Ruby.
Doesn’t help push.
Depends on JSON which isn’t as pleasant asYAML.
Not as simple to be taught and deploy.
Documentation nonetheless wants a whole lot of work.
References
https://medium.com/what-i-learned-building/208eb0044c20https://missingm.co/2013/06/ansible-and-salt-a-detailed-comparison/https://www.infoworld.com/article/2609482/data-center-review-puppet-vs-chef-vs-ansible-vs-salt.html?web page=3
Prepared to save lots of time and streamline your belief administration course of?