Skip to content

OpenSource self-service infrastructure solution that defines and manages the complete lifecycle of resources used and provisioned into a cloud! It is a terraform UI with rest api for terraform automation

License

Notifications You must be signed in to change notification settings

nabilm/airgapper

Repository files navigation

[![Contributors][contributors-shield]][contributors-url] [![Forks][forks-shield]][forks-url] [![Stargazers][stars-shield]][stars-url] [![Issues][issues-shield]][issues-url] [![MIT License][license-shield]][license-url] [![LinkedIn][linkedin-shield]][linkedin-url]


Logo

OpenSource solution that defines and manages the complete lifecycle of resources used and provisioned into a cloud!
Explore the docs »

Table of Contents
  1. About SLD
  2. Getting Started
  3. Usage
  4. Roadmap
  5. Contributing
  6. License
  7. Contact
  8. Acknowledgements
  9. Built With

About Airgapper

Airgapper helps to accelerate deployment, weighting and making IaaC reusable, generating dynamic forms and maintaining different variables in each environment with the same code. With SLD you can schedule infrastructure deployments like its destruction, manage users by roles and separate stacks by squad and environment

Product Name Screen Shot

Product Name Screen Shot

Main features:

  • Fast API async
  • Dashboard / UI
  • Distributed tasks routing by squad
  • Infrastructure as code (IaC) based in terraform code
  • Dynamic html form from terraform variables
  • Re-deploy infrastructure keeping the above parameters
  • Distributed architecture based microservices
  • Task decouple and event driven pattern
  • Resilient, rollback deployment and retry if failure

Airgapper is the easy way to use your infra-structure code!

Getting Started

Prerequisites

You need docker and docker-compse or kind ( recomended ).

Installation

  1. Clone the SLD repo

    git clone https://github.com/nabilm/airgapper.git
  2. Deploy SLD in k8s with kind

    cd airgapper/play-with-sld/kubernetes 
    sh kplay.sh start

    Result:

    Starting SLD for play
    Creating cluster "kind" ...
    ✓ Ensuring node image (kindest/node:v1.20.2) 🖼
    ✓ Preparing nodes 📦 📦  
    ✓ Writing configuration 📜 
    ✓ Starting control-plane 🕹️ 
    ✓ Installing CNI 🔌 
    ✓ Installing StorageClass 💾 
    ✓ Joining worker nodes 🚜 
    Set kubectl context to "kind-kind"
    You can now use your cluster with:
    
    kubectl cluster-info --context kind-kind
  3. Create init user

    sh kplay.sh init

    Result:

    kind ok
    docker ok
    kubectl ok
    jq ok
    curl ok
    
    init SLD
    #################################################
    #  Now, you can play with SLD 🕹️                #
    #################################################
    API: http://0.0.0.0:5000/docs
    DASHBOARD: http://0.0.0.0:5000/
    ---------------------------------------------
    username: admin
    password: Password08@
    ---------------------------------------------
    

    List endopints

    sh kplay.sh list

    Result:

    kind ok
    docker ok
    kubectl ok
    
    List endpoints
    API: http://0.0.0.0:8000/docs
    DASHBOARD: http://0.0.0.0:5000/

Usage

  1. Sign-in to DASHBOARD:

    sign-in

    Click the dashboard link:

    sign-in

  2. Add Cloud account

    sign-in

    fill in the form with the required data. in our example we will use

    • Squad: squad1
    • Environment: develop

    by default workers are running as squad1 and squad2 for play purpose, but you can change it and scale when you want

    finally add:

    • Access_key_id
    • Secret_access_key
    • Default_region ( default eu-west-1) In case you use assume role, fill in the rest of the data.
  3. Add terraform module or stack

    sign-in

    • Name: Add the name with a valid prefix according to the cloud provider.

    Prefixs supported: aws_ , gcp_, azure_

    You can pass user and password as https://username:password@github.com/aws_vpc For ssh you can pass it as a secret in the deployment to the user sld

    • Branch: Add the branch you want to deploy by default is master
    • Squad Access: Assign who you want to have access to this stack by squad

    '*' = gives access to all, you can allow access to one or many squads separated by commas: squad1,squad2

    • tf version: indicates the version of terraform required by the module or stack

    https://releases.hashicorp.com/terraform/

    • Description: Describe the module or stack to help others during implementation.
  4. Deploy your first stack!!!

    List stacks for deploy

    sign-in

    Choose deploy

    sign-in

    SLD will generate a dynamic form based on the stack variables, fill in the form and press the Deploy button

    sign-in

    Important! assign the same squad and environment that we previously created when adding the account (See Add Cloud account)

    Now, the status of the task will change as the deployment progresses.

    sign-in

    You can control the implementation life cycle sign-in You can destroy, re-implement that SLD will keep the old values ​​or you can also edit those values ​​at will. sign-in And finally you can manage the life cycle programmatically, handle the destruction / creation of the infrastructure, a good practice for the savings plan!!! sign-in

Roadmap

  • Download deployment in local ( include terraform plan variables, and remote state code)
  • Add plan button in Dashboard
  • LDAP and SSO authentication
  • Slack integration
  • FluenD / elasticSearch integration
  • InfluxDB integration
  • Prometheus
  • Estimate pricing by stack
  • Anomaly detection
  • Advance metrics and logs
  • Resource size recommendation based on metrics
  • Shift Left Security deployment
  • Multi tenancy
  • Topology graphs
  • Mutal TLS
  • Added workers automatically by squad
  • Onboarding resources
  • Add more cloud and on-prem providers

Contributing

Contributions are what makes the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

Distributed under the MIT License. See LICENSE for more information.

Airgapper is based on the great work done by diegolaflce in Stack Lifecycle Deployment

Contact

E-Mail

Slack

Acknowledgements

Built With

About

OpenSource self-service infrastructure solution that defines and manages the complete lifecycle of resources used and provisioned into a cloud! It is a terraform UI with rest api for terraform automation

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •