/devopsloft

Drive our Career Path into DevOps - This application is developed by the DevOps Loft community https://www.facebook.com/devopsloft/

Primary LanguageShell

Build Status

DevOps Loft

Drive our Career Path into DevOps

A community which drives our career path into DevOps.

Table of Contents

What does that mean?

The community mission is transferring DevOps knowledge by practice. We are implementing an open source web app (www.devopsloft.io), while picking up DevOps technologies, like: git (GitHub), AWS, Linux, scripting, Jenkins, Chef/Ansible.

The goal of the community is addressing the lack of experienced DevOps specialists to fulfill the increasing demand.

How?

Assisting you building a career path in the DevOps domain by driving DevOps knowledge transfer in a study group which develops a real webapp (www.devopsloft.io). And, matching you with potentials organizations who seek DevOps engineers with your skillset (technical and personal).

We will study together DevOps, once a week, two hours session frontally using Skype or suchlike (shared lesson). The rest of the work is done on your own. You will work on issues assigned to you. One can order personal coaching/training.

You are welcomed to attend the program as long as you feel it is valuable for you.

According to your pace, we will set you interviews with potentials organizations.

Recommended skills: A degree in Computer Science/Software Development/Industrial Engineering/related technical discipline or equivalent experience (DEV/IT/OPS) Ability to understand and write code.

What to bring:

  • yourself
  • your laptop

We will be working with services like: GitHub, AWS and others. Some of those services require payments. Those costs are on your own expense.

Costs

Participation is free of charge and commitment

Weekly Sessions

(online or offline)

Every Wednesday 6:00pm-9:00pm IDT

If you'd like to add a feature or correct a defect, please open a pull request.
If you have questions or suggestions, please open an issue.

And be sure to follow us on Facebook and LinkedIn.

And ... join our Facebook Group and our Meetup Group.

Running the application

Prerequisites

  • Vagrant should be installed in order to launch an environment of the application.
  • AWS account is required in order to run the application in STAGE environment. (see more details in STAGE Environment section)

Docker secrets and configurations

The following settings are advised to be set in .env file:

  • MYSQL_ROOT_PASSWORD - Default: root
  • MYSQL_EXPORTER_PASSWORD - Default: exporter
  • MYSQL_APPLICATION_PASSWORD - Default: application

DEV environment

  • The application will be deployed via docker-compose
  • Create the environment
docker-compose up -d
  • Access the application through internet browser
localhost:5000

If a change is made to a container, it needs to be rebuilt. Use the following: (python-app is just an example here)

docker-compose build python-app
docker-compose up -d --force-recreate python-app

MySQL data

in the folder database we can add .sql and .sh files that will be executed upon MySQL container startsup.

important

  • The commands must be idempotent
  • The commands only run once if the DB files are not present, this is not a migration tool, it's a seeding tool
  • Until there is a DB migrations tool, for clarity, changes should be set in a manner that follow "migrations" patterns, for example: Adding a column to an existing table:
CREATE TABLE IF NOT EXISTS devopsloft.users
(id integer NOT NULL AUTO_INCREMENT, 
 first_name varchar(100) NOT NULL)
ALTER TABLE devopsloft.users ADD example integer;

Creating a user:

CREATE USER IF NOT EXISTS 'user'@'%' IDENTIFIED BY 'password';
ALTER USER 'user'@'%' IDENTIFIED BY 'password';

Preferably, place the creation of the user in .sh to be able to access environment variables. The files are processed in lexicographic order

Purging all MySQL data
docker-compose stop mysql
docker-compose rm -f mysql
docker volumde rm devopsloft_mysql-data

Then you will need to start up the container again

docker-compose up -d mysql

STAGE environment

!!! Don't share your private Access Key and don't push it to GitHub

  • AWS account with the following configurations
    • Keypair (deployed on your computer)
    • AMI ID
    • Subnet ID
    • Security Group with inbound ports for SSH and TCP port 5000
  • Copy the file aws.yml to aws.yml.local
  • Adjust aws.yml.local with your configuration
  • Vagrant AWS plugin or any dependencies are done automatic on the first run
  • Launch the environment
vagrant up stage
  • Access the application using Public DNS/IP of the created instance + port 5000
  • !!! Don't forget to destroy the instance when you done to avoid unnecessary charges
vagrant destroy --force stage