WWU DevOps Bootcamp
Get Involved
Mailing list
IRC
Website & Curriculum
Meetings
Policies
“The Deal”
Attendance
Laptops
Target Audience
Curriculum
Lesson 1: The Very Basics
Lesson 2: Single System Fundamentals
Lesson 3: Editors & Git
Lesson 4: Scripting & Troubleshooting
Lesson 5: Services & Deploying a Web App
Lesson 6: Boot Process & Filesystem Hierarchy
Lesson 7: Databases
Review of VM and App Setup
Lesson 8: Security & Authentication
Lesson 9: Networking overview
Lesson 10: DNS
Lesson 11: Automation and DevOps
Lesson 12: Configuration Management
Lesson 13: Open Source & Hands-On
BootCamp Guide
Administrative Stuff
Recommended Resources
Scripting
Systems Administration Tutorials
Open Source
Culture
FAQ
Is this a for-credit class?
What does it cost?
I don’t know about computers! Can I still join?
When will meetings be?
Is this only for students?
What’s the difference between BootCamp and regular LUG meetings?
I wasn’t able to participate during Fall term. Can I still join?
I have a question?
What is DevOps?
Purpose of DevOps BootCamp
From front page:
From FAQ:
“The Deal”
Target Audience
Vagrant
Trying Linux as a virtual machine with Vagrant
Installing Virtualbox
Installing Vagrant
Testing Vagrant
Cloning the Vagrant Repo
Using Vagrant
Troubleshooting
DevOps Bootcamp Introduction
What’s DevOps?
What’s BootCamp?
Why are we doing this?
What you’ll do:
Can you do it?
Career Paths:
OSL Hiring:
What next?
Lesson 1: The Very Basics
Today’s Agenda
A note about notation
How to get (to) Linux
Trying Linux on a Virtual Machine
Installing Linux on Virtualbox
Vagrant & VirtualBox
Vagrant cheat sheet
The Terminal
Basic Shell Commands
Invoking a script
File Paths
Special Characters
Type less
Help, get me out of here!
Knowledge Check
More about Man Pages
Documentation
Asking for help
IRC
A Client
Networks
Channels
Commands
Useful tricks
Screen & Irssi Hints
Etiquette
Terminology
Review
Lesson 2: Single System Fundamentals
Housekeeping
Today’s Topics
What are users?
Users have
Managing users
Passwords
Root/Superuser
Acting as another user
What are groups?
Hands-On: Users and Groups
What are files?
File extensions
ls -l
Types of files
ACLs
Hands-On: Files and Permissions
Package Management
RPM & yum (RedHat, CentOS, Fedora)
DPKG & Apt (Debian, Ubuntu)
Language-specific Package Managers
Other Package Managers
Installing from source
Hands-on: Package Management
Questions:
Lesson 2: Homework
Lesson 3: Editors & Version Control
Check in from last week
What we’ll discuss
How do you edit files?
No. Never, Ever edit code in Word/LibreOffice
Then what should you use?
Integrated Development Environments
Sysadmin tools
Features of an editor
Text Editors
Emacs
Vim
How to choose
Modes
Commands
Moving Around
Configuration / customization
Learning Resources
Regular expressions
Editor questions?
Lesson 3: Intro to Git
Version Control is Hard
Why Bother?
Better Options: Version Control
Git
Using Git Locally
More on commits
What Not To Do
Daily workflow
Lesson 3: GitHub
Let’s Walk Through
Help, Everythings’s Broken!
Learn More
Hands-On
Lesson 4: Scripting, Troubleshooting, & Workflow
Agenda
Scripting
What’s a script?
What’s a scripting language?
Common Scripting Languages
Bash
Python
Why Python?
Troubleshooting
Informal method
If it used to work
If it’s never worked for you
After finding the problem
Formal method
How to get help
Documentation
Sources of trouble
Tickets
Tickets vs. Issues
Some Examples
Lesson 5: Web Applications
What is a web app?
What is this Virtual Environment thing?
Frameworks
The SystemView app
Setting Up
Setting Up
Get the Code
Run the Code
Fail
Pip
Install What’s Missing
Run and Test!
Branch and Modify
Homework
Lesson 6: Boot and the Filesystem Hierarchy
The Linux Filesystem Hierarchy
Filesystem can mean:
The File System
Installed programs and utilities
User-Specific Data & Configuration
Where are drives mounted?
Space on drives
Three Tiers of Filesystem Hierarchy
Common Directories
Common Directories
/proc has lots of useful system information
Commands for working with filesystems
devfs
Blocks and dd
Filesystem Consistency
More about Journaling
The Boot Process
Bootstrapping
Steps in boot process
Booting
Boot Loaders (Grub)
Single User Mode
Startup Script Tasks
System-V Boot Style
/etc/inittab
init.d Scripts
Starting services on boot
Configuring init.d Scripts
Shutting Down
Homework
Lesson 7: Databases
Filesystems Review Questions
But what about our poor data?
Enter the Database
Structure
Relational Algebra Visualized
Installing MariaDB (better, open source MySQL)
Managing MariaDB
Configuration
Users & Permissions
Importing Data
Installing PostgreSQL (Usually pronounced Postgres)
Managing PostgreSQL
Configuration
Users & Permissions
Importing Data
Basic Queries
SELECT
Practice
INSERT
Practice
UPDATE
Practice
DELETE
Further Reading, Resources, etc.
Hands-On: Make a Database
Databases in Applications
Native SQL
Introducing the ORM
Life With a Python ORM
Setting Up the Magic - SqlAlchemy
Let’s Databasify Systemview
Hands On
Hands On (Cont...)
Goals
Lesson 8: Security & Authentication
What is security?
Types of security
Authentication vs. Authorization
Identity
Identity
Principle of Least Authority
System Security
Other Attacks
What to do if you discover a vulnerability
Passwords
Good Passwording
Server Side
Password Managers
Keys
Key Exchange
RSA
SSH
Brief History of Time (line of GPG)
GPG
Ways to use GPG
Certificates and HTTP
Man in the Middle
WiFi
Crypto-wares
Math!
One Last Thing
Lesson 8: Web application security
Web application security
Code Injection
Web Server-Specific Attacks
Problems with Design and Implementation
What Not to Do: The Exercise
Getting Up to Date
Let’s Check out Dean’s (not so) Awesome Code
Lesson 9: Networking
Who is this talk for?
What is a network?
What is a protocol?
The OSI Model
Layer 1: Physical
Layer 2: Data Link
Layer 3: Network
Layer 4: Transport
Get your hands dirty
Example output:
Netmask:
Netmask Example:
Netmask Example:
Netmask Example:
Routes
Bootstrapping
Static Configuration
Dynamic Configuration
Reserved IPv4 Addresses
Public vs Private Address
Network Devices
Network Devices
Control Layer
Collisions
Lesson 10: Networking part 2
Agenda
Networking Review
Networking Review
Networking Review
Networking Review
Networking Review
Intro to DNS
How do I know where the page came from?
OSL
DNS
Hierarchy of domains
Pop quiz
Recursive DNS
Non-recursive
Another Quiz
Caching
/etc/resolv.conf
/etc/hosts
Load Balancing
Records
Reverse DNS
Web Apps: A Bit of Review
What We Want To Do
Why?
What is a Web Server
Webservers Talk HTTP
A Digression: AJAX, JSON and APIs
AJAX
JSON
XML
APIs
Let’s Install a Web Server!
Apache
Let’s Serve Some Web
But First, Config Files
Wait, What am I Writing Again?
Voila!
But I Want to Run Code!
What Went Wrong?
Voila, Again.
Ok, But I Want To Serve a Python App...
Sounds Great, Let’s Go!
Don’t Forget Virtualenv!
What Makes an App WSGI?
Configuring Apache for Systemview
Even More Voila
Homework
Lesson 11: Devops & Configuration Management Intro
Session Summary
Devops Introduction
Definition of Devops
The old view
History of Devops
The Agile Approach
Adapting Agile to Ops
Better Tools enable Devops
It’s not NoOps
What is Devops Video
Devops Explained: No Horse Manure
Configuration Management
History of CM
Infrastructure as code
CM Platforms
CM Platforms (part 2)
Puppet Example
Chef Example
CM Platform Comparison
References
Traditional Development Workflow
Email #1
Email #2
Email #3
Email #4
Email #5
Email #6
DevOps Workflow
IRC #1
IRC #2
IRC #3
IRC #4
Non-DevOps
DevOps
Lesson 12: Configuration Management
Large site management
What config management does
Configuration Management
CF Management Tools
Puppet
Declarative Configuration
Puppet Resources
Resources Have Attributes
Puppet Manifests
Pull the Strings
Declarations Are Idempotent
Packages and Services
Puppet Config
/etc/puppet
The Site Manifest
But First, Nodes
An Example Site Manifest
The Master and the Agent
The Agent
Modules
Module Structure
The Bootcamp Apache Module
Site.pp Modularized
Community Modules
The Bootcamp Mysql Module
Databases, Users, and Grants
Test It Out
Further Reading
Lesson 13: Contributing to Open Source
Getting started in Open Source
Joining vs Starting a Project
Know your licenses
Assessing a new community
Getting involved
Finding a project
First steps
DevOps Concerns
Your Homework
Questions?
Lesson 14: Review
Today’s Goals
How to set up a VM
Enable VirtualBox (VT extensions)
Linux
IRC
GitHub Account
Joining the Github Org
Installing the Web App
Prerequisite tools
The Magic Script
Branches
Connecting to the App
Where am I?
In virtual machine?
In a repo?
On a branch?
Lesson 16: Email
Email: System Components
Email: System Components
Transport Agents
Delivery Agents & Message Stores
Anatomy of a Mail Message
MTA Log Files
Configuring Postfix
Sendmail
Email: Viruses & Spam
Email: Infrastructure Implementation
Email: Security
WWU DevOps Bootcamp
Docs
»
Index