In my exploration of Puppet, I’ve found a lot of oblique references to managing software deployments with it, but very little solid guides on how to do so. I need to tackle this for work, so I figured I should start at the top – creating a software deployment. To be clear, I’m speaking of internally developed software, or modifications to public software, not something you can find in your distribution’s packages and install with the puppet package resource type.
Creating Some Software
Going back even further, we need to create some software. I’d wager that most already have something laying around – perhaps a few scripts in a directory along with a Makefile that lets you run “make install” to put them in the final destination, or a tarball and config file that are “installed” by a script that untars the software and copies your customized config in place. If you don’t have something like that, let’s make something. How about a simple PHP application? It’s just a Hello World, nothing special, so you don’t need to know PHP for this.
Spin up a new VM, or requisition one of your existing dev VMs. I’m going to use server01 from the Puppet series. Make sure apache and php are installed, and if this node isn’t managed via our web server role, iptables may block connections so we will stop it:
[rnelson0@server01 ~]$ sudo puppet apply -e "package {['httpd', 'php']: ensure => present}" Notice: Compiled catalog for server01.nelson.va in environment production in 0.33 seconds Notice: /Stage[main]/Main/Package[php]/ensure: created Notice: Finished catalog run in 20.70 seconds [rnelson0@server01 ~]$ sudo service httpd restart Stopping httpd: [FAILED] Starting httpd: [ OK ] [rnelson0@server01 ~]$ sudo service iptables stop iptables: Setting chains to policy ACCEPT: filter [ OK ] iptables: Flushing firewall rules: [ OK ] iptables: Unloading modules: [ OK ]