Giter Site home page Giter Site logo

allelomorph / holberton-system_engineering-devops Goto Github PK

View Code? Open in Web Editor NEW
2.0 2.0 1.0 2.76 MB

DevOps component of the Holberton school core curriculum, which covers shell scripts, networking, web stack architecture and debugging.

Shell 48.44% Ruby 1.83% Puppet 14.84% Python 34.89%

holberton-system_engineering-devops's Introduction

holberton-system_engineering-devops

Description

DevOps component of the Holberton school core curriculum, which covers shell scripts, networking, web stack architecture and debugging.

General requirements

bash

  • Interpreter conditions:
    • Ubuntu 14.04 LTS
  • First line of executable scripts will be #!/bin/bash
  • Second line of all scripts should be a comment explaining its purpose
  • Linter compliance (after project 0x04)
    • ShellCheck 0.3.3 (shellcheck 0.3.3-1~ubuntu14.04.1)

Python

  • Interpreter conditions:
    • Ubuntu 14.04 LTS
    • python3 (version 3.4.3)
  • First line of executable scripts will be #!/usr/bin/python3
  • Compliance with linter:
    • pep8 (version 1.7.*) (now known as pycodestyle)
  • Docstrings are expected to follow the Google style guide:
    • Per module (python3 -c 'print(__import__("my_module").__doc__)')
    • Per class (python3 -c 'print(__import__("my_module").MyClass.__doc__)')
    • Per function
      • both inside a class (python3 -c 'print(__import__("my_module").MyClass.my_function.__doc__)')
      • and outside a class (python3 -c 'print(__import__("my_module").my_function.__doc__)')
  • Test scripts will typically not be in same directory as the task solutions, use export PYTHONPATH='.' before running test scripts from project directory to allow includes
  • Unit tests will be required on some projects:
    • using the unittest module
    • located in a tests/ folder, with a file structure mimicing that of your project, but with a test_ prefix added to all file/directory names
    • tests should be capable of being run with python3 -m unittest discover tests, or individually per file with python3 -m unittest <test file>

Puppet

  • Interpreter conditions:
    • Ubuntu 14.04 LTS
    • Puppet 3.4.3
  • Puppet manifests must begin with a comment (# ) explaining their intended use
  • Puppet manifests must end with the file extension .pp
  • Compliance with linter: puppet-lint version 2.1.1
    • to install puppet-lint:
$ apt-get install -y ruby
$ gem install puppet-lint -v 2.1.1

Ruby

  • Interpreter conditions:
    • Ubuntu 14.04 LTS
    • Ruby 1.9.3p484
  • first line of all scripts should be exactly #!/usr/bin/env ruby
  • all regex patterns must be built for the Oniguruma library

Introduction to the Ubuntu Linux command line, and commonly used commands.

Introduction to users, groups and permissions in Ubuntu Linux, and the relevant commonly used commands.

Introducing Ubuntu Linux commands that are used in text manipulation and filtering; I/O redirection with special characters.

Introduction to shell variables and aliases, their expansion, variable arithmetic, init files like .bashrc and /etc/profile, and relevant Ubuntu Linux commmands.

Further exploration of Ubuntu Linux shell variable assignment and arithmetic; introduction of file test, control flow, and comparison operators.

Intrduction to processes and signals in Linux, and the relevant Ubuntu shell commmands.

Introduction to regular expressions, first in the context of Ruby scripts.

Introduction to networking basics: the OSI model, LAN/WAN, MAC and IP (IPv4/IPv6) addresses, and TCP versus UDP.

Further introduction to networking basics: localhost/127.0.0.1, 0.0.0.0, /etc/hosts, and relevant Ubuntu Linux commands like ifconfig, telnet, and nc.

Overview of web infrastructure basics: servers vs web servers, load balancers, firewalls, DNS record types, high availability clusters (active-active/active-passive,) and HTTPS. Drawing diagrams of the web stack built in previous projects in this track.

Introduction to configuration management, continuous integration/continuous deployment, and using Puppet.

Introduction to SSH basics: key pairs, authentication, and relevant Ubuntu Linux commands ssh and ssh-keygen.

Introduction to Nginx and futher exploration of processes, HTTP, and web servers. Creating scripts to automate setup of the servers which will host the AirBnB clone projects.

First of a series of projects that involve diagnosing and repairing a deliberately broken remote server/container.

Second of a series of projects that involve diagnosing and repairing a deliberately broken remote server/container.

Introduction to the use of load balancers to distribute traffic to redundant web servers.

Introduction to adding security to a web stack using HTTPS and SSL termination, in this case with HAProxy.

Practicing being able to describe the full web stack, in text and in diagrams.

Third of a series of projects that involve diagnosing and repairing a deliberately broken remote server/container.

Introduction to improving web stack security by adding firewalls, in this case ufw.

Introduction to adding databases to a web stack, specifically pimary and replica MySQL instances to parallel web servers.

Determining when bash scripting is no longer appropriate, and instead using Python to create a REST API to serve both CSV and JSON.

Further practice querying APIs and parsing the JSON results.

Fourth of a series of projects that involve diagnosing and repairing a deliberately broken remote server/container.

Introduction to adding application and server monitoring to a web stack.

Practice in writing a proper report on the failure of a piece of software or web architecture.

Understanding the use of an application server versus a web server; adding an application server to a web stack using Gunicorn, Flask, and Nginx.

Fifth of a series of projects that involve diagnosing and repairing a deliberately broken remote server/container.


Student

holberton-system_engineering-devops's People

Contributors

allelomorph avatar

Stargazers

Maciel Ribeiro de Oliveira avatar Alex Kinyua avatar

Watchers

Zachary Woll avatar  avatar

Forkers

simplecodez

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.