I was asked this question during a talk I had on Continous delivery I held at GTUG Stockholm (which apparentlly is changing its name). “Why not use puppet for installing the application software”.

I was a bit perplexed, because, were not installing our software using puppet, and to me, puppet is for bootstraping servers. But after a thinking it through later at night, I finally came up with an answer I’m the most comfortable with.

You can use what-ever tool you like to automate your installation process, as long as it is deterministic. If you want to use Puppet, do so. In our homogenous Windows environment we could do all we needed using PowerShell. It has it’s limits. I am certain that should the need araise to adress those limits, we will do so.

The core takeaway is this. Stick to the pinciples. You can use any tool you’d like as long as the following principles hold for the tool:

  • It’s output is deterministic
  • You can version control the configurations

I sure there are more principles but these were just off the top of my head.