Skip to main content

Daemon listening on SQS for messages from an ASG

Project description

A Python daemon to sign and remove Salt minion keys for instances being spawned or terminated via Auto Scaling groups (ASGs).

The ASG sends messages for launch and termination events via SNS to SQS. The daemon is listening to the SQS messages and:
- removes Salt minion keys on termination messages
- accepts minion keys matching the instance-id in the launch messages

If an S3 URL is configured, the content of /etc/salt/pki gets synced to S3.

Building / Tests

Can be used as is or packaged via setuptools, setup.py etc.

In order run tests and verify running on mutiple versions of Python use:

tox

If successful it should look something like this:

flake8: commands succeeded
py27: commands succeeded
py34: commands succeeded
congratulations :)

Installation

PyPi

pip install aws_ork

local dev version

You can find a pip compatible zip file in .tox/dist, which you can install via:

pip install .tox/dist/aws_ork-<VERSION>.zip

Usage

usage: aws_ork [-h] [-v] [-d] [--syslog] [--purge]

Listens to an SQS queue and accepts and removes Salt minion keys

optional arguments:
  -h, --help     show this help message and exit
  -v, --verbose  Enable debug logging
  -d, --daemon   Daemonize and enable logging to file
  --syslog       Log to syslog rather than file, only in daemon mode
  --purge        Purge all message from queue at startup

Config File

The daemon looks for an optional config file in /etc, see:

data/aws_ork.conf

Options

Option

Default

SQS_Region

"us-west-2"

QueueName

"SaltMasterTestQueue"

PollCycle

60

BucketUrl

None

BucketRegion

None

DeleteUnknownMessages

True

Unix service

Example SysV style init file provided, see:

data/sys_init/aws_ork

Example SystemD style config, see:

data/systemd/*

FAQ

  • Where is this daemon supposed to run? The daemon is supposed to run on the Salt master instance as it requires file system access to the Salt master’s keystore.

  • Why is ``/etc/salt/pki`` backed up to S3? Normally the Salt master instance uses a storage type that is not persistent (e.g. EBS). Therefore, the keystore is synced to S3 on each change in order to be restored during boot in case the Salt master instance needs to replaced (not covered by this service).

  • Who should have access to the S3 location? As the key store contains private keys which could be used to impersonate Salt minions, download configuration data and potentially passwords for other services, access should be limited accordingly.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aws_ork-0.4.3-py2.py3-none-any.whl (9.8 kB view details)

Uploaded Python 2Python 3

File details

Details for the file aws_ork-0.4.3-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for aws_ork-0.4.3-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 3522c16d686a91b376db338279da04d21e9bdaf44868e6dd17f5d8949c46cead
MD5 33a6880f2cb8a5c71a4deab16ce495f6
BLAKE2b-256 76d7cd66759301d64c1649772a2c32dfbbd548fbe28645b888d1d140762ac0c1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page