luizvasconceloss-hiera_ssm_paramstore


License
Apache-2.0
Install
puppet module install luizvasconceloss-hiera_ssm_paramstore --version 1.0.0

Documentation

Build Status

hiera_ssm_paramstore : AWS Systems Manager Parameter Store backend for Hiera 5

Description

This is a backend function for Hiera 5 that allows to lookup keys (string and securestring) on AWS Systems Manager Parameter Store. The intent is to provide a more friendly way to manage keys on AWS.

Compatibility

  • It's only compatible with Hiera 5, present on Puppet 4.9+

Requirements

The aws-sdk-ssm gem must be installed and loadable from Puppet

Puppet install

include 'hiera_ssm_paramstore'

CLI install

# /opt/puppetlabs/puppet/bin/gem install aws-sdk-ssm
# puppetserver gem install aws-sdk-ssm

The server needs access to describe and get keys on AWS. You can use an instance profile or configure authentication through aws-cli. The policy should look like:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt1526212635512",
            "Effect": "Allow",
            "Action": [
                "ssm:PutParameter", # -> only if you want write
                "ssm:AddTagsToResource", # -> only if you want write tags
                "ssm:GetParametersByPath",
                "ssm:GetParameters"
            ],
            "Resource": [
                "arn:aws:ssm:us-east-1:*",
                "arn:aws:ssm:us-east-2:*",
                "arn:aws:ssm:*:*:parameter/*"
            ]
        }
    ]
}

Installation

Install directly via puppet or copy/clone to your modules directory

# puppet module install luizvasconceloss-hiera_ssm_paramstore

Configuration

See The official Puppet documentation for more details on configuring Hiera 5.

The following is an example of Hiera 5 hiera.yaml configuration:

---

version: 5

hierarchy:
  - name: "AWS Parameter Store"
    lookup_key: hiera_ssm_paramstore
    uris:
      - /
      - /hiera/%{facts.os.family}/
    options:
      region: us-east-1
      get_all: false

Lookup options

region: : Specify what region should be used to query the keys/values, if not present will try to use a region configured on the server.
get_all : Get all key under the path (uri) and cache it, should reduce the api call and avoid throttle. Default value: false
recursive : Get all keys using recursive mode. Default value: false

Limitation

AWS impose rate limit for API call, depending on the number of keys and nodes you can quickly reach those limits.

Upgrading from version 0.1.x

Requires to update the IAM policy to use the option get_all

As Puppet Functions

This module now also supports reading and writing ssm parameters as puppet functions within pp files.

$options = {
  'uri'     => '/',
  'region'  => 'us-east-1',
  'get_all' => false,
  'put'     => { 'description' => 'Added by hiera_ssm_paramstore_write' },
}
$ssm_w_value = hiera_ssm_paramstore_write('/my/param', 'value', $options)
$ssm_r_value = hiera_ssm_paramstore('/my/param', $options)

Put options

All options listed here

Author