GithubHelp home page GithubHelp logo

briantyr / autovpn Goto Github PK

View Code? Open in Web Editor NEW

This project forked from ttlequals0/autovpn

0.0 2.0 0.0 88 KB

Script to Create On Demand OpenVPN Endpoints on AWS.

License: MIT License

Shell 81.37% Python 18.63%

autovpn's Introduction

Overview

Special THANKS to ttlequals0 for the excellent work he's done on this project. I owe you pizza. :)

UDPATED TODO's by me:

  • Being highly familiar with Python and boto, I plan on adding additional features that is useful in my specific use-case, which is low-cost demonstration of Infrastructure as Code with HashiCorp's Terraform & Consul in an (obviously) AWS environment.
  • Integrating with additional automation tools.
  • Tweak the pay as you go configuration for my specific business needs.
  • Python rocks.

Script that allows the easy creation of OpenVPN endpoints in any AWS region. To create a VPN endpoint is done with a single command takes ~3 minutes. It will create a VPC with proper security groups. It spins up a tagged ec2 instance and configures OpenVPN software. Once instance is configured an OpenVPN configuration file is downloaded and ready to use. There is also functionality to see which instances are running in which region and ability to terminate the instance when done. Additional functionality includes specifying instance type, generate ssh keypairs, specify custom ami, change login user and more to come.

asciicast

Use Case

  • Create on demand OpenVPN Endpoints in AWS that can easily be destroyed after done only pay for what you use.

Dependencies:

  1. Install boto by running:
    pip install boto
  2. Install paramiko by running:
    pip install paramiko
  3. Ensure that you have an AWS .credentials file by running:
    vi ~/.aws/credentials
    Then type in the following and add your keys (remove parenthesis):
    
     [Credentials]
     aws_access_key_id = (your_access_key_here)
     aws_secret_access_key = (your_secret_key_here)
     
  4. Install OpenVPN client (if needed)

Installation:

  1. Ensure dependencies are all installed.
  2. Clone repo to system.
git clone https://github.com/briantyr/autovpn.gitt
  1. To create SSH keypair execute autovpn with -G and -r options for AWS region of choice. (optional) NOTE: Make sure to add new key to your ssh-agent.
    ./autovpn -G -r us-east-1
  2. Execute autovpn with -C -k and -r options to deploy to AWS:
    ./autovpn -C -r us-east-1 -k us-east-1_vpnkey
  3. OpenVPN config files are downloaded to current working directory.
  4. Import the OpenVPN config file and connect:
    sudo openvpn us-east-1_aws_vpn.ovpn

DESCRIPTION:
    autovpn - On Demand AWS OpenVPN Endpoint Deployment Tool.
	Project found at https://github.com/ttlequals0/autovpn
USAGE:
        ACTION	 [OPTIONS]
       -C    Create VPN endpoint.
       -D    Delete keypair from region.
       -G    Generate new keypair.
       -S    Get all running instances in a given region.
       -T    Terminate a OpenVPN endpoint.
       -a    Specify custom ami.*
       -d    Specify custom DNS server. (ex. 4.2.2.1)
       -h    Displays this message.
       -i    AWS Instance type (Optional, Default is t2.micro)
		     t2.nano t2.micro t2.small t2.medium t2.large.**
       -k    Specify the name of AWS keypair (Required)
       -m    Allow multiple connections to same endpoint.
       -r    Specify AWS Region (Required)
		     us-east-1 us-west-1 us-east-2 us-west-2 eu-west-1 eu-west-2 
		     eu-central-1 ap-southeast-1 ap-northeast-1 ap-northeast-2 
		     ap-southeast-2 sa-east-1 ca-central-1
       -p    Specify custom OpenVPN UDP port
       -u    Specify custom ssh user.***
       -y    Skip confirmations
       -z    Specify instance id.
EXAMPLES:
  Create OpenVPN endpoint:
	autovpn -C -r us-east-1 -k us-east-1_vpnkey
  Generate keypair in a region.
	autovpn -G -r us-east-1
  Get running instances
	autovpn -S -r us-east-1
  Terminate OpenVPN endpoint
	autovpn -T -r us-east-1 -z i-b933e00c
  Using custom options
    autovpn -C -r us-east-1 -k us-east-1_vpnkey -a ami-fce3c696 -u ec2_user -i m3.medium
NOTES:
        \* - Custom AMI may be needed if changing instance type.
        \** - Any instance size can be given but the t2.micro is more than enough.
        \*** - Custom user might be need if using a custom ami.
	    \**** - AWS IAM user must have EC2 or Administrator permissions set.

ToDo:

  • Continue to update documentation
  • Add deletion of Securoty Group if it is no longer in use.
  • Add ability to create more client configs for one endpoint.
  • Pull Requests are welcome.

autovpn's People

Contributors

b-meson avatar themouette avatar timferrell avatar ttlequals0 avatar

Watchers

 avatar  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.