sendak
Version:
Sendak manages metadata for cloud deployments
136 lines (94 loc) • 4.11 kB
Markdown
# Sendak, or Infrastructure-as-a-service-as-a-service
Sendak gives [18F](https://18f.gsa.gov) a single interface to manage its
projects, users, and deployments across Amazon Web Services and GitHub.
Sendak lets teams specify **projects**, which can be linked to:
* AWS IAM users
* AWS resources in VPCs
* Git/GitHub repositories
Sendak also enables **team permission management**. For example:
* Granting individual permissions (e.g. importing SSH keys)
* Checking for whether multi-factor authentication is enabled
Finally, Sendak provides a **consistent deployment interface** that wraps a
project's existing deployment and configuration process.
To get started:
* [Usage](#usage)
* [Setting up Sendak](#setting-up-sendak)
* [What's a Sendak?](#whats-a-sendak)
If you're _developing_ Sendak, check out the [developing guide](DEVELOPING.md).
Primary author: [@janearc](https://github.com/janearc), jane.arc@gsa.gov
## Usage
Commands take the form:
```bash
sendak [command] [--options]
```
For example, to list certain fields about your IAM groups:
```bash
sendak list-iam-groups --arn --gid
```
This returns something like:
```
[ { arn: 'arn:aws:iam::1234567890:group/default-group',
gid: 'XXXXXXXXXXXXXXXXXXXXXX' } ]
```
Ask for help and available options for any command with `--help`:
```bash
sendak list-iam-groups --help
```
For a full list of commands:
```bash
sendak list-tasks
```
## Setting up Sendak
* `npm install -g sendak`
* Configure your AWS credentials. Sendak first looks for config files in your
`~/.aws` directory, as created by the [AWS Node
SDK](http://docs.aws.amazon.com/AWSJavaScriptSDK/guide/node-configuring.html)
or the [AWS CLI tool](https://aws.amazon.com/cli/).
* If you don't have `~/.aws` config files, Sendak looks for environment
variables:
```
export AWS_ACCESS_KEY_ID=[your-access-key]
export AWS_SECRET_ACCESS_KEY=[your-secret-key]
export AWS_REGION=us-east-1
```
* If you'll be using GitHub private repositories, you'll need to provide
GitHub credentials. The simplest way to authenticate is to create a **personal
access token** in your [GitHub application settings](https://github.com/settings/applications)
and set it to an environment variable:
```
export GH_TOKEN=[your-app-token]
```
(You can also use
[full application OAuth](https://developer.github.com/v3/oauth/) credentials
by setting `GH_KEY` and `GH_SECRET`.)
* If you plan to work with your team's project metadata, you'll need access to
your team's [Riak](https://github.com/basho/riak) instance. Sendak will expect Riak at
`localhost:8098` by default.
* Check that your environment is working:
```bash
sendak check-environment --riak --github --aws # or...
sendak check-environment --all
```
You should now be able to run [Sendak commands](#usage).
## What's a Sendak
From [Wikipedia](https://en.wikipedia.org/wiki/Maurice_Sendak):
**Maurice Bernard Sendak** (/ˈsɛndæk/; June 10, 1928 – May 8, 2012) was
an American illustrator and writer of children's books. He became widely
known for his book *Where the Wild Things Are*, first published in 1963. Born
to Jewish-Polish parents, his childhood was affected by the death of many of
his family members during the Holocaust. Besides *Where the Wild Things Are*,
Sendak also wrote works such as *In the Night Kitchen* and *Outside Over
There*, and illustrated *Little Bear*.
The progenitor of this software was called Thing Launcher, which was developed
at [CFPB](http://www.consumerfinance.gov/).
Sendak, you see, keeps track of the Wild Things for 18F.
## Public domain
This project is in the worldwide [public domain](LICENSE.md). As stated in
[CONTRIBUTING](CONTRIBUTING.md):
> This project is in the public domain within the United States, and copyright
> and related rights in the work worldwide are waived through the
> [CC0 1.0 Universal public domain dedication](https://creativecommons.org/publicdomain/zero/1.0/).
>
> All contributions to this project will be released under the CC0 dedication.
> By submitting a pull request, you are agreeing to comply with this waiver of
> copyright interest.