That was my comment, based on limited use of Salt. I've now been using Salt in production for about three months (new job) and I would make the same comment.
Salt states can, theoretically, do everything Puppet can do. In practice I find that the ecosystem around Salt states is very thin. I find it difficult to locate states that other people have developed and those are usually not general enough for me to use without modification. I haven't found many good examples of Salt states or documentation about how to write testable and generic states for Salt; something Puppet has a strong ecosystem around. Some things that Puppet does easily like parameterized classes, hiera, and collected resources are things that seem to be missing or difficult to implement in Salt. I like Salt and I like the /idea/ of Salt as an OSS configuration management platform. I think Salt will always lag behind Puppet in some ways. In other ways Salt is way ahead of Puppet, especially with cloud provisioning and making changes based on the current/changing states of other systems. I would use Salt to bootstrap a system and Puppet/CfEngine to maintain state on that system. The right tool for the right job. On Mon, Mar 30, 2015 at 9:27 PM, Leon Towns-von Stauber <leo...@occam.com> wrote: > Resurrecting this thread because I have a question. We use CFEngine 2 at my > current shop, and are now evaluating CFEngine 3 and Salt as replacements. I > was hoping to get clarification on this comment: > >> I would use Salt when I need to build full application stacks >> including many dependent types of systems, and don't need to manage >> the state of the systems. > > This isn't the only place I've heard Salt described as more of an imperative > system (i.e. "Do this"), as opposed to a system that describes a desired > state (i.e. "Make it like this"), which CFEngine does so well. > > However, having started to look at Salt, I don't really get the criticism (if > you take it as one). Based on limited exposure so far, it seems just as > capable as CFEngine or Puppet of specifying a desired configuration and > executing on it; it doesn't seem all that different in overall philosophy. > For anyone familiar with the issue, what am I missing? Or, perhaps, is that > description of Salt based on earlier versions, the shortcomings of which have > been addressed in current releases? > > - Leon > >> From: Atom Powers <atom.pow...@gmail.com> >> Date: November 13, 2014 at 12:45:26 PM PST >> To: "Edward Ned Harvey (lopser)" <lop...@nedharvey.com> >> Cc: LOPSA Technical Discussions <t...@lopsa.org> >> Subject: Re: [lopsa-tech] Puppet, Chef, Etc >> >> On Wed, Nov 12, 2014 at 4:42 PM, Edward Ned Harvey (lopser) >> <lop...@nedharvey.com> wrote: >>> I'd like to build a VM on my local vmware or virtualbox or whatever, and >>> then essentially clone it to AWS or vice versa... Make some change on a >>> development machine, test it, and then after it's validated, replicate that >>> change to the production environment by sending essentia >>> lly the snapshot differential of the configuration. >>> >>> For some reason, this is what I thought puppet/chef/etc did. Am I wrong? >>> Is this a pipe dream? >> >> >> This sounds more like Docker than Configuration Management. >> >> I've used CfEngine 2 for many years and Puppet for several. I know >> people who use Chef, Ansible, and Salt. Here are my impressions: >> >> TL;DR: it depends >> I would use Puppet when I have a wide variety of configurations and >> systems tend to stay in use for months or years. >> I would use Chef when I build a lot of similar systems and keep them >> up for days or weeks. >> I would use Ansible when I need to push changes to a system "right >> now" but don't need to manage the state of that system. >> I would use Salt when I need to build full application stacks >> including many dependent types of systems, and don't need to manage >> the state of the systems. >> >> Puppet is good for maintaining the state of your systems. >> It is, more than any other tool, it is a description of how the system >> should be configured. >> It is difficult to scale up to large scale (thousands of systems), >> mostly because all the work of building the catalog is centralized on >> the PuppetMaster. >> Because the PuppetMaster knows everything about all your systems it is >> trivial to do things like "create a Nagios check for all systems with >> Apache installed." >> Only the puppet master knows the secrets of all the systems, each >> system doesn't know anything about other systems; that makes it >> difficult to do something like "build the application server as soon >> as the databases server is built"; aka "orchestration" >> Puppet implements a DSL, so it is "easy" to rebuild it in other >> languages if the need presents itself. >> >> Chef is good for deploying systems. >> Chef is essentially an extension of Ruby, using Ruby syntax and >> libraries to create "executable documentation" about the system. You >> will *always* need Ruby on every Chef-managed system. >> Chef scales because all the work is done on the client, so the work is >> distributed. >> It can be easy to "accidentally" bleed secrets between systems >> because, typically (although I believe there has been work to correct >> this) each system gets the full set of instructions for every system. >> >> Ansible is, literally, "ssh in a for loop"; sometimes that is what you >> want. Ansible is great at deploying systems and at making instant >> changes to a group of systems. >> Ansible sends commands to each managed system or group or systems, >> runs the commands, and returns the output of the commands. >> You run Ansible manually, I haven't talked to anybody who runs Ansible >> on an automatic schedule like Puppet and Chef are typically used. >> I know people who use Puppet and Ansible together. >> >> I understand Salt uses a message queue to deliver configuration to >> systems, similar to how Ansible uses SSH. >> Salt is able to orchestrate configurations. It knows as soon as the >> database server is built and can start building the application >> server. >> >> I have a lot of love for CfEngine3, although I've never used it and >> don't know anybody who is. >> >> >> >> -- >> Perfection is just a word I use occasionally with mustard. >> --Atom Powers-- >> _______________________________________________ >> Tech mailing list >> Tech@lists.lopsa.org >> https://lists.lopsa.org/cgi-bin/mailman/listinfo/tech >> This list provided by the League of Professional System Administrators >> http://lopsa.org/ > _______________________________________________ > Tech mailing list > Tech@lists.lopsa.org > https://lists.lopsa.org/cgi-bin/mailman/listinfo/tech > This list provided by the League of Professional System Administrators > http://lopsa.org/ -- Perfection is just a word I use occasionally with mustard. --Atom Powers-- _______________________________________________ Tech mailing list Tech@lists.lopsa.org https://lists.lopsa.org/cgi-bin/mailman/listinfo/tech This list provided by the League of Professional System Administrators http://lopsa.org/