https://github.com/devsecops/restacker
https://github.com/devsecops/restacker
Last synced: 7 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/devsecops/restacker
- Owner: devsecops
- License: apache-2.0
- Created: 2016-06-21T18:51:23.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2018-10-16T14:03:22.000Z (over 7 years ago)
- Last Synced: 2025-04-05T11:22:19.795Z (10 months ago)
- Language: Ruby
- Size: 88.9 KB
- Stars: 4
- Watchers: 7
- Forks: 6
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# Restacker
Restacker is the DevSecOps deployment swiss army knife. You can use it safely & securely deploy, update, migrate, and/or remove AWS stacks.
Although not feature complete yet, you can begin using it to deploy or re-stack your existing AWS accounts/instances.
## Install it:
- Grab the binary from [GitHub Releases](https://github.com/devsecops/restacker/releases)
- Or build from source:
```
git clone https://github.com/devsecops/restacker.git
cd restacker/source
gem install bundler
bundle install
gem build restacker.gemspec
gem install restacker
# if you're using rbenv, then: rbenv rehash
```
## Use it:
```
$ restacker
Please specify an ACTION
Usage: restacker [ACTION] [OPTONS]
ACTIONS
list Lists current stack names
describe Describes a stack parameters and template
restack Restacks a given deployment
deploy Deploys a new stack
migrate Migrates from green to blue stack
remove Removes the given deployment
configure Configure the target account in the restacker.yml file
dump Dumps the default configuration for a given template or module
console Opens the AWS Console
OPTIONS
-c, --credentials=PROFILE Specify the AWS profile credential (~/.aws/config) to use
-d, --debug Show stack traces
-e, --environment-params=PARAMS Parameters to add to the instance environment (/etc/profile.d) in the form of
k1=v1,k2=v2. E.g., -p SCORING_URL=https://scoring...
-h, --help Prints these wonderful lines...
-l, --location=LOCATION Location to deploy
-m, --migrate-module=MODULE Migration module to execute
-n, --name=NAME Stack prefix stack name (alphanumeric with dashes)
-o, --migrate-options=OPTIONS Options required by migration module to migrate from green to
blue stack in the form of k1=v1,k2=v2. E.g., -p EIP=1.2.3.4
-p, --params=PARAMS Parameters to override current stack parameters in the form of
k1=v1,k2=v2. E.g., -p AmiId=ami-a4jd7928
-P, --parameters-file=FILE YAML formated parameters file (as generated by the dump command) containing parameters to override stack parameters
-r, --region=REGION The region where the stack to be restacked exists
-t, --template=PATH Template file path to override current stack template
-u, --username=USERNAME Your username, defaults to $USER
-v, --verbose Show more output
-V, --version Display the version
Notes:
- If no template file path is provided when restacking restacker will use the same
template as if currently deployed.
- Deployed stack name will be in the form of NAME-DATE using today's date
```
## Configure it
- `restacker configure -l `
- Or copy the `restacker-example.yml` to `~/.restacker/restacker.yml` & update the configurations
The below configuration is an example of MyApp1 and MyApp2 as target accounts and CTRL as master.
```
$ cat ~/.restacker/restacker.yml
:default:
:label: myapp1
:ctrl: &ctrl_default
:label: ctrlAcct
:account_number: '123456789012'
:role_name: ctrl-ctrl-DeployAdmin
:role_prefix: "/dso/ctrl/ctrl/"
:bucket:
:name: my-bucket
:prefix: "s3/bucket/prefix/"
:ami_key: ami_object_key
:ctrlAcct:
:region: us-west-2
:ctrl:
<<: *ctrl_default
:target:
<<: *ctrl_default
:myapp1:
:region: us-west-2
:ctrl:
<<: *ctrl_default
:role_name: ctrl-myapp1-DeployAdmin
:target:
:label: myapp1
:account_number: '098765432123'
:role_name: myapp1-dso-DeployAdmin
:role_prefix: "/dso/human/"
:myapp2:
:region: us-west-2
:ctrl:
<<: *ctrl_default
:role_name: ctrl-myapp2-DeployAdmin
:target:
:label: myapp2
:account_number: '123098456765'
:role_name: myapp2-dso-DeployAdmin
:role_prefix: "/dso/human/"
...
```
## More Info
Checkout the [docs](./docs/) for detailed information.