Giter Site home page Giter Site logo

rubify's Introduction

Contributors Forks Stargazers Issues MIT License LinkedIn


Logo

Rubify

Cloud infrastructure provisioning and management tool
Explore the docs »

View Demo · Report Bug · Request Feature

Table of Contents
  1. About The Project
  2. Getting Started
  3. Usage
  4. Roadmap
  5. Contributing
  6. License
  7. Contact
  8. Acknowledgments

About The Project

Rubify Landing Page

Infrustructure provisioning is a critical part of today's cloud key features . We all have used some of the most popular cloud providers to provision infrastructure, like Heroku, AWS, DigitalOcean, Vercel, Google Cloud Platform, and others.

But what if you want to provision programmatically infrastructure by your own? How do you even code such a thing?

That's where Rubify comes in. Rubify is a cloud infrastructure provisioning tool that allows you to provision infrastructure programmatically.

Made with the sole purpose of learning how these platforms work internally, and teach myself new technologies and concepts.

Using Pulumi allows us to dinamically create AWS S3 buckets to host our code, as well as create a new AWS EC2 instance to host our application.

Hosting

  • Creating new site Rubify Hosting Demo

  • AWS S3 Bucket created Rubify Hosting Demo2

  • Website deployed Rubify Hosting Demo3

Virtual Machine (VM)

  • Creating new VM Rubify VM Demo
  • VM created Rubify VM Demo2
  • VM deployed Rubify VM Demo3

(back to top)

Built With ⛏️

  • Python
  • Pulumi
  • AWS
  • Flask
  • Bootstrap

(back to top)

Getting Started 👶

There's a few things you'll need before running this project:

  • Have an AWS account and AWS CLI installed and configured
  • Pulumi account with stack created on dev environment
  • Pulumi CLI installed and configured
  • Have venv installed since pulumi uses virtual environments
  • Have an ssh keypair set up in PEM format

Prerequisites 👓

Let's install all the tools we need to get started.

  • AWS CLI (Linux x86 - 64bit )
  curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
  unzip awscliv2.zip
  sudo ./aws/install

For more information on AWS CLI, see AWS CLI Documentation

  • Pulumi CLI
  curl -fsSL https://get.pulumi.com | sh

For more information on Pulumi CLI, see Pulumi CLI Documentation

Installation 👨‍💻

  1. Clone the repo
    git clone https://github.com/s4nd1x/rubify.git
  2. Run pulumi up to create the venv folder
    pulumi up
  3. Install the dependecies inside the venv folder
     venv/bin/pip install flask requests python-dotenv
     venv/bin/pip install -r requirements.txt
  4. Create .env file inside root directory
      SECRET_KEY="<random string>"
      PROJECT_NAME="<pulumi project name>"
      PULUMI_ORG="<pulumi organization name>"
  5. Make sure you have ssh keypair set up in PEM format
      ssh-keygen -m PEM
      cd ~/.ssh
      mv id_rsa id_rsa.pem

(back to top)

Usage ❓

Once you have installed all the previous requirements, you should be able to run the following commands:

  • Run the app
     FLASK_RUN_PORT=1337 FLASK_ENV=development venv/bin/flask run
  • You should be able to access the app at the following url:
     http://localhost:1337

You're all set! 🚀

(back to top)

Roadmap 🗺️

This is a work in progress and I'm still learning how does Pulumi works so this are the things I'm planning to add:

  • Host other types of content (images, videos, etc) not only HTML
  • Be able to decide wich OS to use for the VM
  • Have an ssh built-in into the web app

See the open issues for a full list of proposed features (and known issues).

(back to top)

Contributing 🏗️

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

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  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

(back to top)

License 📜

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

(back to top)

Contact ☎️

Jorge Sanchez - @s4nd1x - [email protected]

Project Link: https://github.com/s4nd1x/rubify

(back to top)

Acknowledgments 📣

(back to top)

rubify's People

Contributors

s4nd1x avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.