Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/johntdyer/aws-events

Tool to open jira tickets when instance maintenance has been scheduled
https://github.com/johntdyer/aws-events

Last synced: 20 days ago
JSON representation

Tool to open jira tickets when instance maintenance has been scheduled

Awesome Lists containing this project

README

        

# AWS Event Tool

## Purpose

This tool is designed to be run in a cron and detected instance events. When events are detected a JIRA issue is opened up

Example:

![Ticket Example](contrib/example.png?v=4&s=200)

## Use

```bash
cp config-example.toml config.toml
# edit config file
./aws-events
```

The minimal IAM permissions required to run the app are below.

```json
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"ec2:DescribeInstances",
"ec2:DescribeRegions",
"ec2:DescribeInstanceStatus"
],
"Resource": "*"
}
]
}
```

It is strongly recommended you create a user with only these permissions rather then using your personal keys

### Flags

By default the application will check all regions, however you can pass one or more `--region` flags to define specific regions to check.

```bash
./aws-events --region us-east-1 --region us-east-2
```

#### Supported Config Options

| Config | Purpose | Environment Variable | Default |
| --------- |--------- |--------- |--------- |
| application.log_level | Set application log level, supported options are debug, warn, error, fatal | AWS_EVENT_LOG_LEVEL | info |
| jira.protocol | Protocol to use, http or https | AWS_EVENT_JIRA_PROTOCOL | https |
| jira.port | Jira server port | AWS_EVENT_JIRA_PORT | 443 |
| jira.host | Jira server hostname | AWS_EVENT_JIRA_HOST | "jira-eng-gpk2.example.com" |
| jira.path | Jira server bath path | AWS_EVENT_JIRA_PATH | /jira |
| jira.username | Jira server username | AWS_EVENT_JIRA_USERNAME | |
| jira.password | Jira server password | AWS_EVENT_JIRA_PASSWORD | |
| jira.environmentPriorityMapping | Mapping between environment and issue priority | | production = "P1"
integration = "P2"
default = "P3"
|
| aws.profileName | aws config profilee name | AWS_EVENT_AWS_PROFILE_NAME | sparkdev |
| ledis.path | Path to database file for state | AWS_EVENT_LEDIS_PATH | "./database/ledis |
| ledis.database | Database to use, suggest never changing this | AWS_EVENT_LEDIS_DATABASE | 0 |
| ledis.key_expire_time | Time ( in seconds ) to expire keys in k/v data store, default is 60 days | AWS_EVEMNT_LEDIS_KEY_EXPIRE_TIME | 5184000 |

#### NetRC

Note, this application will read from a netrc file as well for authenteication

##### ~/.netrc*

```bash
machine jira-eng-gpk2.example.com
password xxxxx
login xxxxx
```

## Building

```bash
dep ensure
make
```

### Building in Docker

```bash
docker build -t johntdyer/aws-events:0.0.1 .
```

### Running from docker

```bash
docker run --rm -it \
-e AWS_EVENT_JIRA_USERNAME=johndye \
-e AWS_EVENT_JIRA_PASSWORD='xxxxx' \
-v /Users/johndye/.aws:/root/.aws \
-v `pwd`/config-mount:/root/config-mount/
johntdyer/aws-events:0.0.1
```

## Features

* Mapping of enviromnment to JIRA issue priority. Example integration is P4 and production is P3.
* Configurable JIRA Server, Issue type, Issue Project
* Toml configuration, with overrides via environmnent variables
* Issue state is tracted in Ledis key value store to avoid duplicate notifications
* Issues are opened with formatting that includes all tags, environment, ect