Using Spinnaker with Chef & Puppet
Feb 17, 2017 by Isaac Mosquera
Spinnaker takes a opinionated approach to deploying software. Well, Spinnaker doesn’t really deploy software, it deploys infrastructure. The concept is better known immutable infrastructure. When changes are needed in production, the old infrastructure is torn down or disabled and replaced by new sets of VMs, load balancers and sometimes databases. This approach gives you greater confidence in your deployments and gives you sophisticated features out of the box with Spinnaker like clean rollbacks and phased deployments.
While tools like Chef & Puppet aren’t necessarily opposed to this approach, typical implementations continue to re-use the same VMs as new version of the code you’re deploying packages are deployed. So while mutable and immutable don’t generally mix well, Spinnaker fortunately comes with a “Bake” stage. “Baking” is a concept where you begin with a base image, e.g. ubuntu, debian, rhel and you add your packages and configure the base image.
You can move your Chef & Puppet templates to the “Bake” stage of your Spinnaker pipeline. Behind the scenes it’s all just packer scripts. You can specify a
package name that gets passed down to your packer template template. In this example we’re using
armory-hello-deploy-chef as the package and
aws-chef.json as the packer template. Note that
aws-chef.json is a custom template and you will have to implement your own for your teams to use.
This will result in an AMI that contains your artifact and will be ready to go through the stages of deployment such as dev, stage, pre-production, production. During the deployment phases you can add environment specific
user-data that will tell your app how to behave in that environment. For instance, where to find the staging db hostname vs production db hostname.
Since all bake stages must be preceded by a build stage (i.e. Jenkins) you’ll want to build an artifact if possible. This artifact (perhaps a tar or a zip file) that was generated should be the only thing that is passed to your template file if possible. It’s important to note that Spinnaker isn’t a dependency management tool for your software or machine configuration but more about lifecycle of your deployment and infrastructure.
This approach should get you started with Spinnaker and Immutable Infrastructure pretty quickly. Let us know if you have any more questions.
Recently Published Posts
A day in the life of a TAM
I’ve been asked what a Technical Account Manager (TAM) does so I wanted to take the opportunity to illustrate it by walking through a standard day in the life. Before we can look at what a day in a life of a TAM is, I should provide some background in what is a TAM and […]
Read more →
Nikema’s Spinnaker Summit 2021 Recap
My Second Spinnaker Summit is in the Books! Last week I attended and spoke at my second Spinnaker Summit. Like last year’s summit, it was fully virtual. This time Spinnaker Summit was co-located with cdCon and took place on the Hopin platform. Last year, I spoke on a panel about Black professionals a few months […]
Read more →
Announcing General Availability of Armory Policy Engine Plugin
Armory Policy Engine provides support for automating policy compliance with Spinnaker. Policy Engine Plugin is the latest version of Policy Engine and adds support for both advanced role-based access control (RBAC) use-cases and open source Spinnaker. The release of Policy Engine Plugin comes with new documentation, including a library of example policies from across Armory’s […]
Read more →