Giter Club home page Giter Club logo

devsecopsvirtualenv's Introduction

DevSecOpsVirtualEnv


DevSecOpsVirtualEnv is a tool to build a virtual environment for the DevSecOps Bootcamp. This virtual environment is up to date, with all the software and tools required for such bootcamp or DevSecOps activities, and to be used with different platforms such as Vagrant, Docker or AWS.

Table of Content

Problem & Solution

During the DevSecOps Bootcamp the students create a virtual machine using Vagrant. Every time the machine need to be provisioned it takes around 30 minutes, time that could be invested in learning. As a side effect, if the machine is destroyed, those installed software and tools disappear and have to be installed again.

To avoid these delays, DevSecOps Virtual Environment build an up to date environment with all the required software and tools from the DevSecOps Toolkit. This environment will be created by instructor before the training whenever there is an update (weekly or monthly). This environment also give us the option to use other platforms such as Docker or AWS besides Vagrant.

Requirements

In Windows or macOS download the installer for your operative system and architecture. In macOS you can use Homebrew as a CLI alternative.

Homebrew: Optional and just in macOS

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew --version

Packer

brew install packer
packer --version

Vagrant

brew cask install virtualbox
brew cask install vagrant
vagrant --version

brew cask install vagrant-manager    # Optional

Docker

brew cask install dockertoolbox      # Recommended manual installation instead of Homebrew
docker --version

To know more about the requirements, go to docs/Requirements.md

Installation

Just clone the repository

git clone https://github.com/johandry/DevSecOpsVirtualEnv.git DevSecOpsVirtualEnv && cd $_

Build a Environment for VirtualBox with Vagrant

To build it, use the parameter --vagrant, or nothing, as it is the default option.

./build.sh

This process will take a while, around 2 hours depending of your internet bandwidth, so be patience. To know more about the build for Vagrant, go to docs/Vagrant_Build.md.

Build a Environment for Docker

It is important to know that it is not needed to build an image because DockerHub will do it automatically every time the Dockerfile change in this GitHub repository.

To build the image for Docker execute the build.sh script with the parameter --docker, like this:

./build.sh --docker

The docker build takes around 15 minutes depending of your internet bandwidth. To know more about the build for Docker, go to docs/Docker_Build.md

Use the Vagrant Environment

To use the box:

vagrant init johandry/DevSecOps_CentOS_7
vagrant up
vagrant ssh

Or, copy the Vagrantfile in the repository to your own directory and create a workspace directory.

mkdir DevSecOps && cd $_
curl -o Vagrantfile https://raw.githubusercontent.com/johandry/DevSecOpsVirtualEnv/master/Vagrantfile
mkdir workspace
vagrant up
vagrant ssh

Use the Docker Environment

The docker build is way more faster than the vagrant build and it - automatically - upload the image to Docker Hub, something that - at this time - have to be done manually with the vagrant build.

Once the image is created, the script will upload it to DockerHub. Now you can pull it, check it and run it. When it is not needed, you may delete the container and image.

mkdir DevSecOps && cd $_
mkdir workspace
docker run -it --rm --name devsecops -v ${PWD}/workspace:/root/workspace johandry/devsecops

The parameter -v ${pwd}/workspace:/root/workspace can be avoided if you share the directory using the File Sharing tab in the Docker Preferences. Read the instructions in docs/Docker_Build.md.

What's included in the environment?

The environment builded contain:

  • CentOS 7 (1511)
  • Ruby 2.3.1
  • rbenv
  • Python 2.7.11
  • Python 3.4.3
  • Pip
  • AWS CLI
  • PostgreSQL
  • SQLite
  • NodeJS
  • DevSecOps Toolkit
    • Assumer
    • Selfie
    • Restacker
  • PenTest Toolkit
    • Nmap
    • Metasploit
  • Main Gems: Rails, Bundler, Thor
  • Useful Packages: Git, Perl, Vim, curl, wget, Links, Lynx & EPEL Repo

The Vagrant box also include (not included in Docker image):

  • Docker
  • MariaDB

MariaDB is not installed with Docker because if needed it is better to run a MariaDB container (i.e from here) and link them.

TODO

  • Make the Paker file publish the box to Vagrant Cloud. It could be done by uploading the box or just the URL of the box previously uploaded to another location.
  • The Gems Restacker and Selfie are failing the build because aws-sdk cannot be loaded.
  • Improve the Dockerfile.
  • Set a VOLUME in the Dockerfile to sync a folder
  • Do the AWS provider with Vagrant
  • Add metasploit to CentOS
  • What other DevSecOps tools or software is required?: None, so far
  • Try Packer build the docker image, instead of using a Dockerfile. Or both.
  • Add Rspec testing
  • Create a demo and publish it on Youtube

devsecopsvirtualenv's People

Contributors

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