Packer
-
Packer is used to build image from a base image, perform provisions and store (commit) the final image.
-
We use provisioners and Packer templates to do the actual work to create the final image.
-
We use Ansible for provisioning.
Packer
Packer is used to build image from a base image, perform provisions and store (commit) the final image.
We use provisioners and Packer templates to do the actual work to create the final image.
We use Ansible for provisioning.
Currently, there is an explosion of tools that aim to manage secrets for automated, cloud native infrastructure management. Daniel Somerfield did some work classifying the various approaches, but (as far as I know) no one has made a recent effort to summarize the various tools.
This is an attempt to give a quick overview of what can be found out there. The list is alphabetical. There will be tools that are missing, and some of the facts might be wrong--I welcome your corrections. For the purpose, I can be reached via @maxvt on Twitter, or just leave me a comment here.
There is a companion feature matrix of various tools. Comments are welcome in the same manner.
Services declared as oneshot
are expected to take some action and exit immediatelly (thus, they are not really services,
no running processes remain). A common pattern for these type of service is to be defined by a setup and a teardown action.
Let's create a example foo
service that when started creates a file, and when stopped it deletes it.
Create executable file /opt/foo/setup-foo.sh
:
This uses terraform's template_file
resource to generate a yaml properties file for serverspec to use.
spec
directory and put spec_helper.rb
in ittemplates/properties.tmpl.yml
fileserverspec.tf
terraform apply
Tests will be matched based on roles defined for a given node.
#!/bin/bash | |
# do in tmp | |
cd /tmp | |
JETTY_FILE='jetty-distribution-9.3.3.v20150827.tar.gz' | |
JETTY_FOLDER=${JETTY_FILE:0:-7} | |
# Download | |
wget http://download.eclipse.org/jetty/stable-9/dist/$JETTY_FILE | |
# Extract | |
sudo tar zxvf $JETTY_FILE -C /opt/ |
Finding Packer-generated AMIs automatically after builds
The basic technique is to have Packer add a tag with a unique value during the build, and use AWS' built-in filtering capabilities to find that specific AMI after the build finishes.
#!/usr/bin/ruby | |
require 'fog' | |
require 'json' | |
require 'open-uri' | |
module AWSAdvent | |
class Demo | |
attr_reader :instance, :compute, :server |
#!/bin/bash | |
# | |
# Get all IPs from an autoscale group and update set the local ip as | |
# equal weight A entries (round robin dns). Takes autoscale group as | |
# parameter. | |
# | |
# Amit Bakshi | |
# 10/21/2014 | |
# |
1. Download the plugin from: https://github.com/sensu/sensu-community-plugins/blob/master/handlers/remediation/sensu.rb | |
2. Create the handler definition: | |
{ | |
"handlers": { | |
"remediator": { | |
"type": "pipe", | |
"command": "/etc/sensu/handlers/remediator.rb" | |
} | |
} | |
} |