Skip to main content

Using Spinnaker with Chef & Puppet

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.

Learn More

May 11, 2021
|
by Nikema Prophet

#SpeedOfLife First Week Recap

It Begins We started the #SpeedOfLife campaign last week, yay! It has been a bumpy start but we’re happily moving forward. The first person I spoke with about delivering software at the speed of life was our CEO at Armory, DROdio. I posted a snippet of our conversation on Twitter last week and here that […]

Read more

May 4, 2021
|
by Nikema Prophet

What Does It Mean To Deliver Software At The #SpeedOfLife?

In this blog post, I’m excited to announce the #SpeedOfLife campaign that I will be leading for the month of May. I’m looking forward to getting to know more of the awesome people who make up our DevOps community. What is #SpeedOfLife? #SpeedOfLife is a social campaign meant to highlight users and experts in the […]

Read more

April 23, 2021
|
by Chad Tripod

Armory Enterprise install in 10 minutes

I was introduced to Armory and the open-source project Spinnaker a little over 18 months ago.  Up to that point, I’d worked with numerous open-source and proprietary software and was a specialist in application delivery and data analytics.  I immediately found out that Spinnaker was the continuous delivery platform of choice for many large scale […]

Read more