Mimiron is a CLI tool whose purpose is to provide a better workflow when manging tfvars
Project description
# Mimiron
[](https://travis-ci.org/ImageIntelligence/mimiron)
[](https://badge.fury.io/py/mimiron)
**Welcome to mimiron!**
> [Mimiron](http://www.wowhead.com/npc=33350/mimiron) is one of the Titanic Watchers. He once resided at the Temple of Invention, but is absent during the time of Loken's rebellion.
Mimiron is a CLI tool whose purpose is to provide a better workflow when manging tfvars.
When all of your Terraform config is completely modular, the only sane way to manage variables is to store them inside a `variables.json` file and pass that along when you run `terraform apply -var-file=variables.json`... but where do you store `variables.json`?
Our approach is to store non-critical variables inside the same repository as our Terraform config. Critical variables like AWS secrets, database master password are stored elsewhere and pulled in via environment variables e.g. `TF_VAR_AWS_ACCESS_KEY`.
We want to make simple tasks such as bumping an image version simple and Mimiron is a small CLI tool that does that. Mimiron provides a few commands to help automate the cumbersome tasks away.
## Installation
```
$ pip install mimiron
```
You also need to specify a few environment variables to let Mimiron know where your terraform and tfvar repos are located:
```bash
export TF_DEPLOYMENT_PATH="~/workspace/terraform"
export DOCKER_USERNAME=""
export DOCKER_PASSWORD=""
export DOCKER_ORG=""
```
## Assumptions
* Your Terraform config repo has a dir `/terraform/tfvars/` with your tfvars in a JSON file e.g. `/terraform/tfvars/staging.json`
* Docker image artifacts are stored in the DockerHub registry
* Docker image artifacts are named `service_name_image` e.g. `web_marketing_image`
* AMI artifacts are named `service_name_ami_id` e.g. `web_marketing_ami_id`
## Usage
```
>>> mim --help
mimiron.py
usage:
mim bump <service> <env> [--latest] [--no-push]
mim status <env>
commands:
bump bumps the <service> with an image <artifact>
status shows the currently used artifact id for <env>
arguments:
<artifact> the deployment artifact we are pushing (e.g. Docker image/AMI)
<service> the application we're targeting
<env> the environment we want to change
options:
--no-push make local changes without pushing to remote
--latest use the latest artifact when updating a service
-h --help shows this
-v --version shows version
```
## Development
Clone the project:
```
$ git clone git@github.com:ImageIntelligence/mimiron.git
```
Setup your virtualenv:
```
$ mkvirtualenv mimiron
```
Attach mim to your shell:
```
$ python setup.py develop
```
## Deployment
Create a `~/.pypirc` and replace the username and password with real credentials:
```
[distutils]
index-servers =
mimiron
[mimiron]
repository=https://pypi.python.org/pypi
username=xxx
password=yyy
```
Register this package to the Cheeseshop:
```
$ python setup.py register -r mimiron
```
Build a distributable and upload:
```
$ python setup.py sdist upload -r mimiron
```
[](https://travis-ci.org/ImageIntelligence/mimiron)
[](https://badge.fury.io/py/mimiron)
**Welcome to mimiron!**
> [Mimiron](http://www.wowhead.com/npc=33350/mimiron) is one of the Titanic Watchers. He once resided at the Temple of Invention, but is absent during the time of Loken's rebellion.
Mimiron is a CLI tool whose purpose is to provide a better workflow when manging tfvars.
When all of your Terraform config is completely modular, the only sane way to manage variables is to store them inside a `variables.json` file and pass that along when you run `terraform apply -var-file=variables.json`... but where do you store `variables.json`?
Our approach is to store non-critical variables inside the same repository as our Terraform config. Critical variables like AWS secrets, database master password are stored elsewhere and pulled in via environment variables e.g. `TF_VAR_AWS_ACCESS_KEY`.
We want to make simple tasks such as bumping an image version simple and Mimiron is a small CLI tool that does that. Mimiron provides a few commands to help automate the cumbersome tasks away.
## Installation
```
$ pip install mimiron
```
You also need to specify a few environment variables to let Mimiron know where your terraform and tfvar repos are located:
```bash
export TF_DEPLOYMENT_PATH="~/workspace/terraform"
export DOCKER_USERNAME=""
export DOCKER_PASSWORD=""
export DOCKER_ORG=""
```
## Assumptions
* Your Terraform config repo has a dir `/terraform/tfvars/` with your tfvars in a JSON file e.g. `/terraform/tfvars/staging.json`
* Docker image artifacts are stored in the DockerHub registry
* Docker image artifacts are named `service_name_image` e.g. `web_marketing_image`
* AMI artifacts are named `service_name_ami_id` e.g. `web_marketing_ami_id`
## Usage
```
>>> mim --help
mimiron.py
usage:
mim bump <service> <env> [--latest] [--no-push]
mim status <env>
commands:
bump bumps the <service> with an image <artifact>
status shows the currently used artifact id for <env>
arguments:
<artifact> the deployment artifact we are pushing (e.g. Docker image/AMI)
<service> the application we're targeting
<env> the environment we want to change
options:
--no-push make local changes without pushing to remote
--latest use the latest artifact when updating a service
-h --help shows this
-v --version shows version
```
## Development
Clone the project:
```
$ git clone git@github.com:ImageIntelligence/mimiron.git
```
Setup your virtualenv:
```
$ mkvirtualenv mimiron
```
Attach mim to your shell:
```
$ python setup.py develop
```
## Deployment
Create a `~/.pypirc` and replace the username and password with real credentials:
```
[distutils]
index-servers =
mimiron
[mimiron]
repository=https://pypi.python.org/pypi
username=xxx
password=yyy
```
Register this package to the Cheeseshop:
```
$ python setup.py register -r mimiron
```
Build a distributable and upload:
```
$ python setup.py sdist upload -r mimiron
```
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
mimiron-0.2.4.tar.gz
(9.0 kB
view details)
File details
Details for the file mimiron-0.2.4.tar.gz.
File metadata
- Download URL: mimiron-0.2.4.tar.gz
- Upload date:
- Size: 9.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a5d9b7606e0d1878b904ad3890e9e8898a7a9232e65ec5330bd6b4bc19f887b2
|
|
| MD5 |
37d52769e52d6c147789d709d88737b8
|
|
| BLAKE2b-256 |
5eca0ad0eb3f099b46c208756233415de33b2b4e6372d823a8f64478d297b460
|