reka

command module
v0.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 25, 2021 License: Apache-2.0 Imports: 1 Imported by: 0

README

reka

Never forget that instance running again


Build Status deploy

A Cloud Infrastructure Management Tool to stop, resume, clean and destroy resources based on tags. Reka uses a config to determine what actions should be taken on resources. It can prove to be a cost management tool where you can stop your tests environments during breaks, holidays and non-working hours. It can also be a nuke tool to nuke an account. It currently supports both AWS and GCP. A full list of supported resources can be found here

What It can do
  • Stop/Resume resources for example stopping an EC2 instance or resizing an EKS cluster to 0.
  • Destroy/Terminate resources
  • Clean Up unused resources (such as EBS volumes, Elastic IPs)
Project Name

REKA is derived from a Native Nigerian Language, Igbo, meaning Reap|Tear Down.

BEWARE!

This tool is HIGHLY DESTRUCTIVE and deletes cloud resources! This should be used in environments with WITH CAUTION.

Table of Contents

Getting Started

Installation
Binary

The Reka binary can be downloaded from the Releases and executed directly on its respective OS.

Docker

The reka image is also available on DockerHub.

    docker pull mensaah/reka

If config.yaml is in the current directory, reka can be executed as:

    docker run -it -e AWS_ACCESS_KEY -e AWS_SECRET_ACCESS_KEY\
        -v `pwd`:/config mensaah/reka --config /config/config.yaml
Go

Reka can also be installed like a regular golang Binary if go is installed

go get -u github.com/mensaah/reka

Usage

Reka uses a config file to know what resources to target and the actions to be taken for such resources. Here is an example configuration file that Reka uses.

    reka --config config.yaml

    # To run without destroying any instance, basically just stops, resumes resources
    reka --config config.yaml --disable-destroy

    # To see full range of commands that can executed with reka
    reka help

    # View supported resources
    reka resources
Authentication
  • AWS To use AWS Provider, you need to either have your aws credentials setup or export AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY and optionally AWS_SESSION_TOKEN (optional).

  • GCP You can authenticate to GCP Provider by providing by setting the environment variable GOOGLE_APPLICATION_CREDENTIALS which is the path to the service account credentials. If gcloud is configured, the gcloud profile can also be used

Rules

Reka supports different resource rules. These are usually in the form:

rules:
  - name: <RULE_NAME>
    # Target specific resource types
    target:
      - resource-targets
    tags:
      tagKey1: tagValue1
      tagKey2: tagValue2
    condition:
        CONDITIONS

Conditions needs to be met before the action is taken on the resource.

  • Stopping and Resuming instances within active Hours

This configuration sets that EC2 and EKS resources with tag env = staging needs to be active only within 7am - 7pm from Mondays to Fridays. When reka runs in any time outside that, the resource is stopped if stoppable and resumed once the condition is met.

rules:
  - name: stop all staging instances after work and during weekends 
    tags:
      env: staging
    resources:
    - aws.ec2
    - aws.eks
    region: "us-east-2"
    condition:
      activeDuration: 
        startTime: "7:00"
        stopTime: "19:00"
        startDay: Monday
        stopDay: Friday

Specifying the resources list in any rule only applies the rules to those resources alone.

  • Destroying instances after a particular time
rules:
  - name: nuke all demo instances 2 weeks after demo october 9th (staging)
    tags:
      env: test
      project: proj-demo
    condition:
      terminationDate: "2021-10-23 01:00"
  • Deleting unused Resources
rules:
  - name: Delete all unused instances
    condition:
     terminationPolicy: unused
Excluding Resources

You can additionally exclude resources which will make Reka not to act on those resources even when the satisfy a condition and a rule.


exclude:
  - name: Exclude resources with prod tags in us-east-2
    region: "us-east-2"
    tags:
        env: prod

  - name: Exclude CI EC2 Instances on staging
    tags:
      env: staging
      ci-runner: true
    resources:
      - aws.ec2

RoadMap

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Documentation

Overview

Copyright © 2020 NAME HERE <EMAIL ADDRESS>

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Directories

Path Synopsis
aws
gcp
web

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL