all 4 comments

[–]jtreminioDon't listen to me 6 points7 points ago


When I first started PuPHPet, I tried Chef and Salt before deciding on Puppet. I couldn't get Salt's Hello World to run via Vagrant, so I dropped it completely.

Ansible was only thrown my way one or two times so I didn't give it much thought.

It's great you've already got a bunch of options available! I'll be honest: the biggest hurdle for me to adding new things is the GUI. All the relationships and requirements each thing has is a bother to visualize, but needs done.

As a sidenote: PuPHPet is completely managed via a yaml file, too!

[–]xiosen[S] 3 points4 points ago

Thank you! I originally started using Puppet aswell and after 50 different boxes for all my applications I finally discovered PuPHPet. PuPHPet was definitely the inspiration for this project. Once I saw the Yaml it generated it set my mind running. On the downside I struggled with the same thing you did.

I originally was going to make a PuPHPet fork but as soon as I started adding more and more services I ran into a puppet headache. You can see in my original commits ( Thats when I discovered ansible and it really fit the bill for what I was trying to accomplish. I also wanted the yaml to set up the vagrantfile so that I didn't have to make changes in both when I wanted to edit the ram for example.

[–]jtreminioDon't listen to me 1 point2 points ago

Puppet is a beast, but once you wrap your head around how it works it makes sense, even though some of its design choices are really stupid[0].

One of the complicated things Puppet is good at is dependencies. I have only slightly looked at Ansible but it appears that it basically goes top to bottom, yes? How does Ansible handle a package needing installed or a command needing run before $foo?

[0] Foreach was not added until very recently

[–]xiosen[S] 1 point2 points ago

Ya I had worked with puppet quite awhile and just got frustrated with how unnecessarily complex and slow it was. I had to do the same thing you did with PuPHPet and run the bleeding edge in order to get access to the loops to accomplish anything.

Ansible does go top to bottom. You could say it was inspired by all the shortcomings of Puppet and Chef so it took those things into account. Typically if you depended on a package you would just run apt: pkg=apache before you run the other steps. Since its loaded in order you just put them in the order they need to work. They also have other things like notify which fires off tasks later, typically used to restart services. However its just a different tool to do the job and is not without some drawbacks. They seem to be really quick in fixing and pushing new updates so I have really enjoyed working with it so far.