mirror of
https://github.com/opsschool/curriculum.git
synced 2026-01-15 12:15:03 +00:00
Syllabus porting DONE.
This commit is contained in:
30
application_components_201.rst
Normal file
30
application_components_201.rst
Normal file
@@ -0,0 +1,30 @@
|
||||
Application Components 201
|
||||
**************************
|
||||
|
||||
Message Brokers
|
||||
===============
|
||||
|
||||
RabbitMQ
|
||||
--------
|
||||
|
||||
Apache ActiveMQ
|
||||
---------------
|
||||
|
||||
Memory Caches
|
||||
=============
|
||||
|
||||
Memcached
|
||||
---------
|
||||
|
||||
Redis
|
||||
-----
|
||||
|
||||
Specialized Caches
|
||||
==================
|
||||
|
||||
Varnish
|
||||
-------
|
||||
|
||||
nginx+memcached
|
||||
---------------
|
||||
|
||||
16
architecture_101.rst
Normal file
16
architecture_101.rst
Normal file
@@ -0,0 +1,16 @@
|
||||
Architecture 101
|
||||
****************
|
||||
|
||||
How to make good architecture decisions
|
||||
=======================================
|
||||
|
||||
Patterns and anti-patterns
|
||||
==========================
|
||||
|
||||
Introduction to availability
|
||||
============================
|
||||
|
||||
Introduction to scalability
|
||||
===========================
|
||||
|
||||
|
||||
57
architecture_201.rst
Normal file
57
architecture_201.rst
Normal file
@@ -0,0 +1,57 @@
|
||||
Architecture 201
|
||||
****************
|
||||
|
||||
Service Oriented Architectures
|
||||
==============================
|
||||
|
||||
Fault tolerance, fault protection, masking, dependability fundamentals
|
||||
======================================================================
|
||||
|
||||
Fail open, fail closed
|
||||
----------------------
|
||||
|
||||
Perspective: node, network, cluster, application
|
||||
------------------------------------------------
|
||||
|
||||
Caching Concerns
|
||||
================
|
||||
|
||||
Static assets
|
||||
-------------
|
||||
|
||||
Data
|
||||
----
|
||||
|
||||
Eviction and replacement policies and evaluation
|
||||
------------------------------------------------
|
||||
|
||||
Approaches
|
||||
----------
|
||||
(TTL, purge-on-write, no-purge versioning, constantly churning cache versus
|
||||
contained, working set sizing)
|
||||
|
||||
Crash only
|
||||
==========
|
||||
|
||||
Synchronous vs. Asynchronous
|
||||
============================
|
||||
|
||||
Business continuity vs. Disaster Recovery
|
||||
=========================================
|
||||
|
||||
Designing for Scalability: Horizontal, Vertical
|
||||
===============================================
|
||||
|
||||
Simplicity
|
||||
==========
|
||||
|
||||
Performance
|
||||
===========
|
||||
|
||||
Tiered architectures
|
||||
====================
|
||||
|
||||
MTTR > MTBF
|
||||
===========
|
||||
|
||||
http://www.kitchensoap.com/2010/11/07/mttr-mtbf-for-most-types-of-f/
|
||||
40
backups.rst
Normal file
40
backups.rst
Normal file
@@ -0,0 +1,40 @@
|
||||
Backups
|
||||
*******
|
||||
|
||||
Online/Offline backups
|
||||
======================
|
||||
|
||||
Designing a backup policy
|
||||
=========================
|
||||
|
||||
Deciding what to backup
|
||||
-----------------------
|
||||
|
||||
Backup type and frequency
|
||||
-------------------------
|
||||
|
||||
Retention periods and budgeting
|
||||
-------------------------------
|
||||
|
||||
Offsite backups
|
||||
---------------
|
||||
|
||||
Ensuring and monitoring backup integrity and completeness
|
||||
=========================================================
|
||||
|
||||
Your RAID is not a backup (and neither is your cluster duplication)
|
||||
===================================================================
|
||||
|
||||
Legal implications of having backups
|
||||
====================================
|
||||
|
||||
Security implications of having backups
|
||||
=======================================
|
||||
|
||||
Recovery basics
|
||||
===============
|
||||
|
||||
Secure data destruction
|
||||
=======================
|
||||
|
||||
|
||||
56
capacity_planning.rst
Normal file
56
capacity_planning.rst
Normal file
@@ -0,0 +1,56 @@
|
||||
Capacity Planning
|
||||
*****************
|
||||
|
||||
(Seems reasonable to have the Statistics for Engineers course be a pre-req for
|
||||
this course)
|
||||
|
||||
Fundamentals of capacity planning
|
||||
=================================
|
||||
|
||||
Resource usage investigation and exploration
|
||||
---------------------------------------------
|
||||
|
||||
* Examples: CPU:req/sec ratio, memory footprint:req/sec ratio, disk consumption
|
||||
per user/per sale/per widget, etc.
|
||||
* Application:Infrastructure metric relationships
|
||||
* 2nd order capacity (logging,
|
||||
metrics+monitoring systems, ancillary systems)
|
||||
|
||||
Finding ceilings
|
||||
----------------
|
||||
|
||||
* Discovering resource limits
|
||||
* Comparing different hardware/instance profiles - production load versus
|
||||
synthetic
|
||||
|
||||
* Benchmarking: pitfalls, limitations, pros/cons
|
||||
* http://www.contextneeded.com/system-benchmarks
|
||||
|
||||
* Multivariate infra limits (multiple resource peak-driven usage) Ex: web+image
|
||||
uploads, caching storage+processing, etc.
|
||||
* Architecture analysis (anticipating the next bottleneck)
|
||||
|
||||
Forecasting
|
||||
============
|
||||
|
||||
Linear and nonlinear trending and forecasting (“steering by your wake”)
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
Details of automatic forecasting and scaling
|
||||
--------------------------------------------
|
||||
|
||||
Seasonality and future events
|
||||
-----------------------------
|
||||
|
||||
* Organic growth approaches (bottom-up infra driven, top-down app driven)
|
||||
* inorganic growth events (new feature launch, holiday effects, “going viral”,
|
||||
major public announcement)
|
||||
* Provisioning effects on timelines, financial tradeoffs
|
||||
|
||||
Diagonal scaling
|
||||
================
|
||||
|
||||
(vertically scaling your already horizontal architecture)
|
||||
|
||||
Reprovisioning and legacy system usage tradeoffs
|
||||
------------------------------------------------
|
||||
15
common_services.rst
Normal file
15
common_services.rst
Normal file
@@ -0,0 +1,15 @@
|
||||
Common services
|
||||
***************
|
||||
|
||||
.. todo::
|
||||
Introduction to RFCs
|
||||
|
||||
.. toctree::
|
||||
system_daemons_101
|
||||
dns_101
|
||||
dns_201
|
||||
dhcp
|
||||
http_101
|
||||
http_201
|
||||
smtp_101
|
||||
smtp_201
|
||||
31
config_management.rst
Normal file
31
config_management.rst
Normal file
@@ -0,0 +1,31 @@
|
||||
Configuration Management 101
|
||||
****************************
|
||||
|
||||
Idempotency
|
||||
===========
|
||||
|
||||
Convergent and Congruent systems
|
||||
================================
|
||||
|
||||
Direct and Indirect systems: ansible, capistrano
|
||||
================================================
|
||||
|
||||
Chef
|
||||
====
|
||||
|
||||
Chef (adam: I’m biased here, but I would do Chef in 101, puppet and cfengine in
|
||||
201, but it’s because I want junior admins to get better at scripting, not just
|
||||
because I’m a dick.)
|
||||
(Magnus: this goes back to why Ruby will be so much more for new guys coming in
|
||||
today like Perl was for a lot of us in the 90’s)
|
||||
|
||||
Configuration Management 201
|
||||
****************************
|
||||
|
||||
Puppet
|
||||
======
|
||||
|
||||
Cfengine 3
|
||||
==========
|
||||
|
||||
|
||||
23
databases_101.rst
Normal file
23
databases_101.rst
Normal file
@@ -0,0 +1,23 @@
|
||||
Databases 101 (Relational databases)
|
||||
************************************
|
||||
|
||||
SQL shell
|
||||
=========
|
||||
|
||||
Creating databases
|
||||
==================
|
||||
|
||||
Creating users
|
||||
==============
|
||||
|
||||
Granting privileges
|
||||
===================
|
||||
|
||||
Basic normalized schema design
|
||||
==============================
|
||||
|
||||
Select, Insert, Update and Delete
|
||||
=================================
|
||||
|
||||
|
||||
|
||||
52
databases_201.rst
Normal file
52
databases_201.rst
Normal file
@@ -0,0 +1,52 @@
|
||||
Databases 201
|
||||
*************
|
||||
|
||||
Database Theory
|
||||
===============
|
||||
|
||||
ACID
|
||||
----
|
||||
|
||||
CAP theorem
|
||||
-----------
|
||||
|
||||
High Availability
|
||||
-----------------
|
||||
|
||||
Document Databases
|
||||
==================
|
||||
|
||||
MongoDB
|
||||
-------
|
||||
|
||||
CouchDB
|
||||
-------
|
||||
|
||||
Hadoop
|
||||
------
|
||||
|
||||
Key-value Stores
|
||||
================
|
||||
|
||||
Riak
|
||||
----
|
||||
|
||||
Cassandra
|
||||
---------
|
||||
|
||||
Dynamo
|
||||
------
|
||||
|
||||
BigTable
|
||||
--------
|
||||
|
||||
Graph Databases
|
||||
===============
|
||||
|
||||
FlockDB
|
||||
-------
|
||||
|
||||
Neo4j
|
||||
-----
|
||||
|
||||
|
||||
20
datacenters_101.rst
Normal file
20
datacenters_101.rst
Normal file
@@ -0,0 +1,20 @@
|
||||
Datacenters 101
|
||||
***************
|
||||
|
||||
Power budgets
|
||||
=============
|
||||
|
||||
A/B power and cascading outages
|
||||
-------------------------------
|
||||
|
||||
Cooling budgets
|
||||
===============
|
||||
|
||||
You will be judged by the tidiness of your rack
|
||||
===============================================
|
||||
|
||||
Machine and cable labeling
|
||||
==========================
|
||||
|
||||
Traditional naming conventions
|
||||
==============================
|
||||
29
datacenters_201.rst
Normal file
29
datacenters_201.rst
Normal file
@@ -0,0 +1,29 @@
|
||||
Datacenters 201
|
||||
***************
|
||||
|
||||
Networking many racks
|
||||
=====================
|
||||
|
||||
Power
|
||||
=====
|
||||
|
||||
N+1, N+2 power
|
||||
--------------
|
||||
|
||||
Fused vs usable
|
||||
---------------
|
||||
|
||||
calculations
|
||||
------------
|
||||
|
||||
Cooling
|
||||
=======
|
||||
|
||||
N+1, N+2
|
||||
---------
|
||||
|
||||
Physical security and common security standards compliance requirements
|
||||
=======================================================================
|
||||
|
||||
Suggested practices
|
||||
===================
|
||||
33
datacenters_301.rst
Normal file
33
datacenters_301.rst
Normal file
@@ -0,0 +1,33 @@
|
||||
Datacenters 301
|
||||
***************
|
||||
|
||||
Power
|
||||
=====
|
||||
|
||||
PUE (Power Usage Effectiveness)
|
||||
-------------------------------
|
||||
|
||||
3 phase power
|
||||
-------------
|
||||
|
||||
Increasing cooling efficiency
|
||||
=============================
|
||||
|
||||
CFM
|
||||
---
|
||||
|
||||
Hot aisle / cold aisle design fundamentals
|
||||
------------------------------------------
|
||||
|
||||
Hot aisle / cold aisle containment
|
||||
----------------------------------
|
||||
|
||||
Chimneys
|
||||
---------
|
||||
|
||||
Design Options
|
||||
==============
|
||||
|
||||
Raised floor (18in & 36in)
|
||||
--------------------------
|
||||
|
||||
33
deployment_101.rst
Normal file
33
deployment_101.rst
Normal file
@@ -0,0 +1,33 @@
|
||||
Software Deployment 101
|
||||
***********************
|
||||
|
||||
Software deployment vs configuration management
|
||||
===============================================
|
||||
|
||||
definition of a host’s role or state
|
||||
|
||||
Running services
|
||||
================
|
||||
|
||||
inetd
|
||||
-----
|
||||
|
||||
Shared containers vs self-contained binaries
|
||||
--------------------------------------------
|
||||
|
||||
Package mangement
|
||||
=================
|
||||
|
||||
Configuration files
|
||||
-------------------
|
||||
|
||||
Source based / binary packages
|
||||
------------------------------
|
||||
|
||||
Building packages
|
||||
-----------------
|
||||
|
||||
Packaging new tools
|
||||
-------------------
|
||||
|
||||
|
||||
22
deployment_201.rst
Normal file
22
deployment_201.rst
Normal file
@@ -0,0 +1,22 @@
|
||||
Software Deployment 201
|
||||
***********************
|
||||
|
||||
Running services
|
||||
================
|
||||
|
||||
daemontools
|
||||
-----------
|
||||
|
||||
god
|
||||
---
|
||||
|
||||
angel
|
||||
-----
|
||||
|
||||
runit
|
||||
-----
|
||||
|
||||
monit
|
||||
-----
|
||||
|
||||
|
||||
27
dhcp.rst
Normal file
27
dhcp.rst
Normal file
@@ -0,0 +1,27 @@
|
||||
DHCP
|
||||
****
|
||||
|
||||
Tools: ISC dhcpd
|
||||
================
|
||||
|
||||
Protocol
|
||||
========
|
||||
|
||||
dhcp helper
|
||||
===========
|
||||
|
||||
Defining classes, leases
|
||||
========================
|
||||
|
||||
Options
|
||||
=======
|
||||
|
||||
Default gateway
|
||||
---------------
|
||||
|
||||
DNS server(s)
|
||||
-------------
|
||||
(Tie in previous chapters re: TFTP, PXE with related options?)
|
||||
|
||||
|
||||
|
||||
25
dns_101.rst
Normal file
25
dns_101.rst
Normal file
@@ -0,0 +1,25 @@
|
||||
DNS 101
|
||||
*******
|
||||
|
||||
What is DNS? Provide a brief description
|
||||
|
||||
* How DNS works
|
||||
* The DNS tree
|
||||
|
||||
Forward vs reverse
|
||||
==================
|
||||
|
||||
Resource types
|
||||
==============
|
||||
|
||||
UDP vs TCP
|
||||
==========
|
||||
|
||||
``/etc/hosts``, ``/etc/resolv.conf``, ``/etc/nsswitch.conf``
|
||||
============================================================
|
||||
|
||||
Dynamic DNS
|
||||
===========
|
||||
|
||||
|
||||
|
||||
23
dns_201.rst
Normal file
23
dns_201.rst
Normal file
@@ -0,0 +1,23 @@
|
||||
DNS 201
|
||||
*******
|
||||
|
||||
Architecture/design choices
|
||||
===========================
|
||||
|
||||
Master/slave
|
||||
------------
|
||||
|
||||
Shadow master/slave
|
||||
-------------------
|
||||
|
||||
Shadow master/multi=slave
|
||||
-------------------------
|
||||
|
||||
Split horizon
|
||||
-------------
|
||||
|
||||
DNSSEC
|
||||
======
|
||||
|
||||
|
||||
|
||||
91
hardware_101.rst
Normal file
91
hardware_101.rst
Normal file
@@ -0,0 +1,91 @@
|
||||
Hardware 101
|
||||
************
|
||||
|
||||
Hardware Types
|
||||
==============
|
||||
|
||||
Rackmount
|
||||
---------
|
||||
|
||||
Blades
|
||||
------
|
||||
|
||||
SANs
|
||||
----
|
||||
|
||||
Basic server architecture
|
||||
=========================
|
||||
|
||||
CPU
|
||||
---
|
||||
|
||||
RAM
|
||||
---
|
||||
|
||||
Motherboard
|
||||
-----------
|
||||
|
||||
Bus
|
||||
---
|
||||
|
||||
Disk controllers
|
||||
----------------
|
||||
|
||||
Network devices
|
||||
---------------
|
||||
|
||||
BIOS/UEFI
|
||||
---------
|
||||
|
||||
PCI-E Cards
|
||||
-----------
|
||||
|
||||
Disk management
|
||||
===============
|
||||
|
||||
Arrays
|
||||
------
|
||||
|
||||
RAID/ZFS
|
||||
--------
|
||||
|
||||
Logical Volume Management
|
||||
-------------------------
|
||||
|
||||
Performance/Redundancy
|
||||
======================
|
||||
|
||||
RAID/ZFS
|
||||
--------
|
||||
|
||||
Power
|
||||
-----
|
||||
|
||||
Electrical overview
|
||||
^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
110v/220v, amperage, 3 phase power
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
UPS
|
||||
^^^
|
||||
|
||||
common plug types
|
||||
^^^^^^^^^^^^^^^^^
|
||||
|
||||
common circuit types
|
||||
^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Troubleshooting
|
||||
===============
|
||||
|
||||
Remote management (IPMI, iLO, DRAC, etc)
|
||||
----------------------------------------
|
||||
|
||||
Common MCE log errors
|
||||
---------------------
|
||||
|
||||
System burn-in
|
||||
--------------
|
||||
|
||||
|
||||
20
http_101.rst
Normal file
20
http_101.rst
Normal file
@@ -0,0 +1,20 @@
|
||||
HTTP 101 (Core protocol)
|
||||
************************
|
||||
|
||||
Tools: Speaking http with telnet/netcat/curl
|
||||
============================================
|
||||
|
||||
Understanding how a browser/tool parses a url and server receives it for a
|
||||
request
|
||||
|
||||
Apache, nginx
|
||||
=============
|
||||
|
||||
HTML
|
||||
====
|
||||
|
||||
Virtual hosting
|
||||
===============
|
||||
|
||||
CGI
|
||||
===
|
||||
41
http_201.rst
Normal file
41
http_201.rst
Normal file
@@ -0,0 +1,41 @@
|
||||
HTTP 201 (Application Servers & Frameworks)
|
||||
*******************************************
|
||||
|
||||
Java
|
||||
====
|
||||
|
||||
Tomcat
|
||||
------
|
||||
|
||||
JBoss
|
||||
-----
|
||||
|
||||
Jetty
|
||||
-----
|
||||
|
||||
node.js / Server-side Javascript
|
||||
================================
|
||||
|
||||
Perl
|
||||
====
|
||||
|
||||
PHP
|
||||
===
|
||||
|
||||
Ruby
|
||||
====
|
||||
|
||||
Rails
|
||||
-----
|
||||
|
||||
Sinatra
|
||||
-------
|
||||
|
||||
Python
|
||||
======
|
||||
|
||||
Django
|
||||
------
|
||||
|
||||
Flask
|
||||
-----
|
||||
13
identity_management.rst
Normal file
13
identity_management.rst
Normal file
@@ -0,0 +1,13 @@
|
||||
Identity Management 101
|
||||
***********************
|
||||
|
||||
LDAP
|
||||
====
|
||||
|
||||
Active Directory
|
||||
----------------
|
||||
|
||||
OpenLDAP
|
||||
--------
|
||||
|
||||
|
||||
28
index.rst
28
index.rst
@@ -23,6 +23,34 @@ Contents:
|
||||
troubleshooting_101
|
||||
networking_101
|
||||
networking_201
|
||||
common_services
|
||||
identity_management
|
||||
remote_filesystems_101
|
||||
remote_filesystems_201
|
||||
programming_101
|
||||
programming_201
|
||||
hardware_101
|
||||
datacenters_101
|
||||
datacenters_201
|
||||
datacenters_301
|
||||
virtualization_101
|
||||
virtualization_201
|
||||
logs_101
|
||||
logs_201
|
||||
databases_101
|
||||
databases_201
|
||||
application_components_201
|
||||
monitoring_101
|
||||
monitoring_201
|
||||
backups
|
||||
configuration_management
|
||||
capacity_planning
|
||||
statistics
|
||||
deployment_101
|
||||
deployment_201
|
||||
soft_skills
|
||||
labs
|
||||
seealso
|
||||
|
||||
|
||||
TODO List
|
||||
|
||||
244
labs.rst
Normal file
244
labs.rst
Normal file
@@ -0,0 +1,244 @@
|
||||
Labs exercises
|
||||
**************
|
||||
|
||||
Bare-Metal Provisioning 101
|
||||
===========================
|
||||
|
||||
Install CentOS by hand
|
||||
----------------------
|
||||
|
||||
Install the same node using kickstart
|
||||
-------------------------------------
|
||||
|
||||
Bare-Metal Provisioning 201
|
||||
===========================
|
||||
|
||||
Setup a basic cobbler server
|
||||
----------------------------
|
||||
|
||||
Build a profile
|
||||
---------------
|
||||
|
||||
Kickstart a node
|
||||
----------------
|
||||
|
||||
Change the profile, re-kickstart the node
|
||||
-----------------------------------------
|
||||
|
||||
Cloud Provisioning 101
|
||||
======================
|
||||
|
||||
Setup a free-tier account with AWS
|
||||
----------------------------------
|
||||
|
||||
Spawn a Linux node from the AWS Console
|
||||
---------------------------------------
|
||||
|
||||
Cloud Provisioning 201
|
||||
======================
|
||||
|
||||
Spawn a Linux node using the AWS API
|
||||
------------------------------------
|
||||
|
||||
Attach an Elastic IP and EBS to it
|
||||
----------------------------------
|
||||
|
||||
|
||||
Database 101
|
||||
============
|
||||
|
||||
Install and start up MySQL
|
||||
--------------------------
|
||||
|
||||
Create basic relational database / tables, using a variety of field types
|
||||
-------------------------------------------------------------------------
|
||||
|
||||
Grant and revoke privileges
|
||||
---------------------------
|
||||
|
||||
Install Riak
|
||||
------------
|
||||
|
||||
Write (or provide, probably depends on where this fits in relation
|
||||
to scripting tutorial?) basic tool to insert and retrieve some data.
|
||||
|
||||
Database 201
|
||||
============
|
||||
|
||||
Spawn up second VM/MySQL install
|
||||
--------------------------------
|
||||
|
||||
Set up Master->Slave replication
|
||||
--------------------------------
|
||||
|
||||
Deliberately break and then fix replication
|
||||
-------------------------------------------
|
||||
|
||||
Set up Master<->Master replication
|
||||
----------------------------------
|
||||
|
||||
Introduction to percona toolkit
|
||||
-------------------------------
|
||||
|
||||
Set up Riak Cluster, modify the tool from 101 to demonstrate replication.
|
||||
|
||||
Database 301
|
||||
============
|
||||
|
||||
Galera cluster
|
||||
--------------
|
||||
|
||||
* Introduction to variables and their meaning. Tuning MySQL configuration (use
|
||||
mysqltuner.pl as a launch point?), pros and cons of various options.
|
||||
* Introducing EXPLAIN and how to analyse and improve queries and schema.
|
||||
* Backup options, mysqldump, LVM Snapshotting, Xtrabackup.
|
||||
|
||||
Automation 101
|
||||
==============
|
||||
|
||||
Do you need it? How much and why?
|
||||
---------------------------------
|
||||
|
||||
http://www.kitchensoap.com/2012/09/21/a-mature-role-for-automation-part-i/
|
||||
|
||||
* Talk basic theory and approach in terms of Idempodency and Convergence.
|
||||
* Write a bash script to install something as idempodently as possible.
|
||||
* Discuss Chef and Puppet and while reflecting on the bash script.
|
||||
|
||||
Automation - Chef 201
|
||||
=====================
|
||||
|
||||
Setup an Opscode account
|
||||
------------------------
|
||||
|
||||
Setup your workstation as a client to your Opscode account
|
||||
----------------------------------------------------------
|
||||
|
||||
Download the build-essential cookbook, and apply it to your workstation
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
Automation - Chef 301
|
||||
=====================
|
||||
|
||||
Setup a chef-repo
|
||||
-----------------
|
||||
|
||||
Write your own cookbook
|
||||
-----------------------
|
||||
|
||||
Automation - Chef 302
|
||||
=====================
|
||||
|
||||
Setup your own Chef Server
|
||||
--------------------------
|
||||
|
||||
Write your own resources/providers
|
||||
----------------------------------
|
||||
|
||||
Write sanity tests for your code
|
||||
--------------------------------
|
||||
|
||||
Automation - Puppet 201
|
||||
=======================
|
||||
|
||||
Install Puppet
|
||||
--------------
|
||||
|
||||
Install a Forge module using the module tool
|
||||
--------------------------------------------
|
||||
|
||||
Apply it to your local machine
|
||||
------------------------------
|
||||
|
||||
Automation - Puppet 301
|
||||
=======================
|
||||
|
||||
Install Puppet
|
||||
--------------
|
||||
|
||||
Create your own module
|
||||
----------------------
|
||||
|
||||
Apply it to your local machine
|
||||
------------------------------
|
||||
|
||||
Package Management 101
|
||||
======================
|
||||
|
||||
Setup a basic YUM or APT repo and put some packages in it
|
||||
---------------------------------------------------------
|
||||
|
||||
Setup a local mirror of CentOS (or what have you)
|
||||
-------------------------------------------------
|
||||
|
||||
Setup a client to install from it
|
||||
---------------------------------
|
||||
|
||||
Package Management 201
|
||||
======================
|
||||
|
||||
Build a simple RPM or deb
|
||||
-------------------------
|
||||
|
||||
FPM
|
||||
---
|
||||
|
||||
Build automation fleets
|
||||
=======================
|
||||
|
||||
koji
|
||||
----
|
||||
|
||||
D
|
||||
-
|
||||
|
||||
Version Control with Git 101
|
||||
============================
|
||||
|
||||
Open a github account
|
||||
---------------------
|
||||
|
||||
Create a new repo called 'scripts'
|
||||
----------------------------------
|
||||
|
||||
Place a useful shell script in it
|
||||
---------------------------------
|
||||
|
||||
Commit and push
|
||||
---------------
|
||||
|
||||
Make a change, commit and push
|
||||
------------------------------
|
||||
|
||||
Create a branch, make a change, commit, and push
|
||||
------------------------------------------------
|
||||
|
||||
Create a pull request and merge the branch into the master branch
|
||||
-----------------------------------------------------------------
|
||||
|
||||
Read Chapters 1-3 of the Pro Git online book - http://git-scm.com/book
|
||||
|
||||
|
||||
DNS 101
|
||||
=======
|
||||
|
||||
Install Bind
|
||||
------------
|
||||
|
||||
Configure one zone
|
||||
------------------
|
||||
|
||||
Show DNS resolution for an A and a CNAME record in the configured zone
|
||||
----------------------------------------------------------------------
|
||||
|
||||
HTTP 101
|
||||
========
|
||||
|
||||
Install Apache
|
||||
--------------
|
||||
|
||||
Configure a virtual host
|
||||
------------------------
|
||||
|
||||
Display a simple web page
|
||||
--------------------------
|
||||
75
loadbalancing_101.rst
Normal file
75
loadbalancing_101.rst
Normal file
@@ -0,0 +1,75 @@
|
||||
Load Balancing
|
||||
**************
|
||||
|
||||
Why do we use load balancers?
|
||||
=============================
|
||||
|
||||
* A fast, HTTP/TCP based load balancer can distribute between slower application
|
||||
servers, and can keep each application server running optimally
|
||||
* They keep application servers busy by buffering responses and serving them to
|
||||
slow clients (or keepalives). We want app servers to do real work, not waste
|
||||
time waiting on the network.
|
||||
* Can be tuned by itself for max conns?
|
||||
* HTTP path based routing, 1 domain to multiple heterogeneous server pools.
|
||||
|
||||
Software
|
||||
========
|
||||
|
||||
Apache
|
||||
------
|
||||
|
||||
Nginx
|
||||
-----
|
||||
|
||||
HAProxy
|
||||
-------
|
||||
|
||||
Hardware
|
||||
========
|
||||
|
||||
BIG-IP
|
||||
------
|
||||
|
||||
Netscaler
|
||||
---------
|
||||
|
||||
Multi-dc
|
||||
========
|
||||
|
||||
Anycast
|
||||
-------
|
||||
|
||||
DNS GSLB
|
||||
--------
|
||||
|
||||
CDN’s
|
||||
-----
|
||||
|
||||
(cparedes: I’d argue that it’s valid in some contexts, depending on what
|
||||
you’re load balancing)
|
||||
|
||||
Application implications
|
||||
========================
|
||||
|
||||
Balancing algorithms
|
||||
--------------------
|
||||
|
||||
Session Affinity, and why it is evil.
|
||||
-------------------------------------
|
||||
|
||||
Local & ISP caching
|
||||
-------------------
|
||||
|
||||
SSL Termination
|
||||
---------------
|
||||
|
||||
Balancing vs. Failover (Active / Passive)
|
||||
-----------------------------------------
|
||||
|
||||
Health Checks.
|
||||
---------------
|
||||
|
||||
Non-HTTP use cases
|
||||
==================
|
||||
|
||||
Native SMTP, or general TCP for things like RabbitMQ, MongoDB, etc
|
||||
14
logs_101.rst
Normal file
14
logs_101.rst
Normal file
@@ -0,0 +1,14 @@
|
||||
Logs 101
|
||||
********
|
||||
|
||||
Common system logs & formats
|
||||
============================
|
||||
|
||||
Syslog basics
|
||||
=============
|
||||
|
||||
Log rotation, append, truncate
|
||||
==============================
|
||||
|
||||
Retention and archival
|
||||
======================
|
||||
19
logs_201.rst
Normal file
19
logs_201.rst
Normal file
@@ -0,0 +1,19 @@
|
||||
Logs 201
|
||||
********
|
||||
|
||||
Centralized logging
|
||||
===================
|
||||
|
||||
Syslogd, Rsyslog
|
||||
----------------
|
||||
|
||||
Benefits for developers
|
||||
-----------------------
|
||||
|
||||
Log parsing
|
||||
===========
|
||||
|
||||
Search & Correlation
|
||||
====================
|
||||
|
||||
(Splunk, Logstash, Loggly, etc)
|
||||
43
monitoring_101.rst
Normal file
43
monitoring_101.rst
Normal file
@@ -0,0 +1,43 @@
|
||||
Monitoring, Notifications, and Metrics 101
|
||||
******************************************
|
||||
|
||||
History: How we used to monitor, and how we got better (monitors as tests)
|
||||
==========================================================================
|
||||
|
||||
Perspective (end-to-end) vs Introspective monitoring
|
||||
====================================================
|
||||
|
||||
Metrics: what to collect, what to do with them
|
||||
==============================================
|
||||
|
||||
Common tools
|
||||
============
|
||||
|
||||
Syslog (basics!)
|
||||
----------------
|
||||
|
||||
Syslog-ng
|
||||
---------
|
||||
|
||||
Nagios
|
||||
------
|
||||
|
||||
Graphite
|
||||
--------
|
||||
|
||||
Ganglia
|
||||
-------
|
||||
|
||||
Munin
|
||||
-----
|
||||
|
||||
RRDTool / cacti
|
||||
---------------
|
||||
|
||||
Icinga
|
||||
------
|
||||
|
||||
SNMP
|
||||
----
|
||||
|
||||
|
||||
28
monitoring_201.rst
Normal file
28
monitoring_201.rst
Normal file
@@ -0,0 +1,28 @@
|
||||
Monitoring, Notifications, and Metrics 201
|
||||
******************************************
|
||||
|
||||
Dataviz & Graphing
|
||||
==================
|
||||
|
||||
Graphite, StatsD
|
||||
================
|
||||
|
||||
Dashboard: Info for ops and info for the business
|
||||
=================================================
|
||||
|
||||
Third-party tools
|
||||
=================
|
||||
|
||||
Datadog
|
||||
-------
|
||||
|
||||
Boundry
|
||||
-------
|
||||
|
||||
NewRelic
|
||||
--------
|
||||
|
||||
Circonus
|
||||
--------
|
||||
|
||||
|
||||
64
programming_101.rst
Normal file
64
programming_101.rst
Normal file
@@ -0,0 +1,64 @@
|
||||
Programming 101
|
||||
***************
|
||||
|
||||
Shell scripting basics
|
||||
======================
|
||||
|
||||
“#!/usr/bin/env bash” vs. “#!/bin/bash” vs “#!/bin/sh”(portability
|
||||
considerations)
|
||||
|
||||
Variables
|
||||
---------
|
||||
|
||||
user-defined
|
||||
built-in
|
||||
|
||||
Control Statements
|
||||
------------------
|
||||
|
||||
tests / conditionals
|
||||
loops
|
||||
|
||||
functions
|
||||
---------
|
||||
|
||||
arrays
|
||||
------
|
||||
|
||||
style
|
||||
-----
|
||||
|
||||
Redirection
|
||||
-----------
|
||||
|
||||
I/O
|
||||
---
|
||||
|
||||
Pipes
|
||||
-----
|
||||
|
||||
stderr vs. stdout
|
||||
------------------
|
||||
|
||||
/dev/null and /dev/zero
|
||||
-----------------------
|
||||
|
||||
Regular Expressions
|
||||
===================
|
||||
|
||||
Sed & awk
|
||||
=========
|
||||
|
||||
GIGO
|
||||
====
|
||||
|
||||
Validating input
|
||||
----------------
|
||||
|
||||
Validating output
|
||||
-----------------
|
||||
|
||||
Trapping & handling exceptions with grace
|
||||
-----------------------------------------
|
||||
|
||||
|
||||
121
programming_201.rst
Normal file
121
programming_201.rst
Normal file
@@ -0,0 +1,121 @@
|
||||
Programming 201
|
||||
***************
|
||||
|
||||
Common elements in scripting, and what they do
|
||||
==============================================
|
||||
|
||||
Syntax
|
||||
------
|
||||
|
||||
Variables
|
||||
---------
|
||||
|
||||
Common data structures
|
||||
----------------------
|
||||
|
||||
Rosetta stone? One man’s hash is another’s associative array is another man’s
|
||||
dict(ionary)?
|
||||
|
||||
Functions
|
||||
---------
|
||||
|
||||
Objects
|
||||
-------
|
||||
|
||||
C (A very basic overview)
|
||||
=========================
|
||||
|
||||
The main loop
|
||||
-------------
|
||||
|
||||
Libraries & Headers
|
||||
-------------------
|
||||
|
||||
#include
|
||||
--------
|
||||
|
||||
The Compiler
|
||||
------------
|
||||
|
||||
The Linker
|
||||
----------
|
||||
|
||||
Make
|
||||
----
|
||||
|
||||
Lab: Open a file, write to it, close it, stat it & print the file info, unlink
|
||||
it. Handle errors.
|
||||
|
||||
Ruby
|
||||
====
|
||||
|
||||
Syntax
|
||||
------
|
||||
|
||||
Variables
|
||||
---------
|
||||
|
||||
Common data structures
|
||||
----------------------
|
||||
|
||||
Functions
|
||||
---------
|
||||
|
||||
Objects
|
||||
-------
|
||||
|
||||
Rubygems
|
||||
--------
|
||||
|
||||
Databases
|
||||
---------
|
||||
|
||||
Python
|
||||
======
|
||||
|
||||
Syntax
|
||||
------
|
||||
|
||||
Variables
|
||||
---------
|
||||
|
||||
Common data structures
|
||||
----------------------
|
||||
|
||||
Functions
|
||||
---------
|
||||
|
||||
Objects
|
||||
-------
|
||||
|
||||
Version Control
|
||||
===============
|
||||
|
||||
Git
|
||||
---
|
||||
|
||||
SVN
|
||||
---
|
||||
|
||||
CVS
|
||||
---
|
||||
|
||||
API design fundamentals
|
||||
=======================
|
||||
|
||||
RESTful APIs
|
||||
------------
|
||||
|
||||
JSON / XML and other data serialization
|
||||
---------------------------------------
|
||||
|
||||
Authentication / Authorization / Encryption and other security after-thoughts.
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
:)
|
||||
https://github.com/ziliko/code-guidelines/blob/master/Design%20an%20hypermedia(REST)%20api.md
|
||||
|
||||
Continuous Integration
|
||||
======================
|
||||
|
||||
|
||||
11
remote_filesystems_101.rst
Normal file
11
remote_filesystems_101.rst
Normal file
@@ -0,0 +1,11 @@
|
||||
Remote Filesystems 101
|
||||
**********************
|
||||
|
||||
NFSv3
|
||||
=====
|
||||
|
||||
iSCSI
|
||||
=====
|
||||
|
||||
SAMBA/CIFS
|
||||
==========
|
||||
14
remote_filesystems_201.rst
Normal file
14
remote_filesystems_201.rst
Normal file
@@ -0,0 +1,14 @@
|
||||
Remote Filesystems 201
|
||||
**********************
|
||||
|
||||
GlusterFS
|
||||
=========
|
||||
|
||||
NFSv4
|
||||
=====
|
||||
|
||||
Netatalk / AFP
|
||||
==============
|
||||
|
||||
S3
|
||||
==
|
||||
21
seealso.rst
Normal file
21
seealso.rst
Normal file
@@ -0,0 +1,21 @@
|
||||
See also
|
||||
********
|
||||
|
||||
A list of System Administration or Ops related classes or degree granting
|
||||
programs. It would be well worth our time to compare their syllabi, course
|
||||
outcomes, exercises etc.
|
||||
|
||||
http://www.hioa.no/Studier/TKD/Master/Network-and-System-Administration/
|
||||
http://www.hioa.no/Programmes/Summer/Network-and-systems-administration
|
||||
http://www.cs.stevens.edu/~jschauma/615/
|
||||
http://goo.gl/4ygBn
|
||||
http://www.cs.fsu.edu/current/grad/cnsa_ms.php
|
||||
http://www.rit.edu/programs/applied-networking-and-system-administration-bs
|
||||
http://www.mtu.edu/technology/undergraduate/cnsa/
|
||||
http://www.wit.edu/computer-science/programs/BSCN.html
|
||||
|
||||
In addition, Usenix SAGE (now LISA) used to have a sage-edu@usenix.org mailing
|
||||
list, but I don’t know if that is still active. LOPSA has
|
||||
https://lists.lopsa.org/cgi-bin/mailman/listinfo/educators
|
||||
|
||||
http://www.verticalsysadmin.com/Report_on_programs_in_System_Administration__25-June-2012.pdf
|
||||
37
smtp_101.rst
Normal file
37
smtp_101.rst
Normal file
@@ -0,0 +1,37 @@
|
||||
SMTP 101
|
||||
********
|
||||
|
||||
Tools: Speaking smtp with telnet/netcat
|
||||
=======================================
|
||||
|
||||
Risks / Dangers / Open relays
|
||||
=============================
|
||||
|
||||
Tools to test/confirm operation as an open relay
|
||||
|
||||
Protocol
|
||||
========
|
||||
|
||||
MX routing
|
||||
----------
|
||||
|
||||
Envelope
|
||||
--------
|
||||
|
||||
Message Headers
|
||||
---------------
|
||||
|
||||
Message Body
|
||||
------------
|
||||
|
||||
MTAs (forwarding, smart hosts, etc.)
|
||||
====================================
|
||||
|
||||
Postfix
|
||||
-------
|
||||
|
||||
Sendmail
|
||||
--------
|
||||
|
||||
|
||||
|
||||
43
smtp_201.rst
Normal file
43
smtp_201.rst
Normal file
@@ -0,0 +1,43 @@
|
||||
SMTP 201
|
||||
********
|
||||
|
||||
Anti=Spam
|
||||
=========
|
||||
|
||||
Blacklisting
|
||||
------------
|
||||
|
||||
Whitelisting
|
||||
------------
|
||||
|
||||
Greylisting
|
||||
-----------
|
||||
|
||||
SpamAssassin?
|
||||
-------------
|
||||
|
||||
Reliable Mail Delivery
|
||||
======================
|
||||
|
||||
Basic Etiquette
|
||||
===============
|
||||
|
||||
Authentication (SPF, DKIM)
|
||||
==========================
|
||||
|
||||
Bounce Management
|
||||
=================
|
||||
|
||||
Feedback Loops
|
||||
==============
|
||||
|
||||
Reputation Management
|
||||
=====================
|
||||
|
||||
Advanced routing
|
||||
================
|
||||
|
||||
Hosted services = why they are good/bad/ugly
|
||||
============================================
|
||||
|
||||
|
||||
115
soft_skills.rst
Normal file
115
soft_skills.rst
Normal file
@@ -0,0 +1,115 @@
|
||||
Soft Skills
|
||||
***********
|
||||
|
||||
What is the role of ops?
|
||||
========================
|
||||
|
||||
Maintain and grow infrastructure as needed.
|
||||
-------------------------------------------
|
||||
|
||||
Protect data from internal and external threats, hardware failure.
|
||||
------------------------------------------------------------------
|
||||
|
||||
Be enablers and problem solvers, not a hinderance. The antithesis of the BOFH.
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
Business Savvy
|
||||
==============
|
||||
|
||||
Why we do what we do. Supporting business needs.
|
||||
------------------------------------------------
|
||||
|
||||
Selling system changes and new proposals
|
||||
----------------------------------------
|
||||
|
||||
Negotiating budgetary constraints vs. need/want requirements
|
||||
------------------------------------------------------------
|
||||
|
||||
Communicating with internal and external customers
|
||||
--------------------------------------------------
|
||||
|
||||
* Managing maintenance windows
|
||||
|
||||
Evaluating a product offering
|
||||
-----------------------------
|
||||
|
||||
The importance of Documentation
|
||||
===============================
|
||||
|
||||
What to document
|
||||
----------------
|
||||
|
||||
* Runbooks? SOP? (cparedes: might be worthwhile even though we want to automate
|
||||
SOP’s away as much as possible - what should we check at 2 AM? What do folks
|
||||
typically do in this situation if automation fails?)
|
||||
|
||||
* Architecture and design (cparedes: also maybe talk about *why* we choose that
|
||||
design - what problems did we try to solve? Why is this a good solution?) How
|
||||
to manage documentation
|
||||
|
||||
Documentation through Diagrams
|
||||
------------------------------
|
||||
|
||||
Project Management (Does time management go here too?)
|
||||
======================================================
|
||||
|
||||
Working with other teams
|
||||
========================
|
||||
|
||||
Where do you go from here?
|
||||
==========================
|
||||
|
||||
How to get help, keep sharp, learn new skills, and network within the systems
|
||||
community.
|
||||
|
||||
Mailing lists
|
||||
-------------
|
||||
|
||||
Local user groups
|
||||
-----------------
|
||||
|
||||
LOPSA
|
||||
-----
|
||||
|
||||
Twitter
|
||||
-------
|
||||
|
||||
ServerFault
|
||||
-----------
|
||||
|
||||
Sign up and participate. As your own questions, but also answer questions that
|
||||
look interesting to you. This will not only help the community, but can keep you
|
||||
sharp, even on technologies you don’t work with on a daily basis.
|
||||
|
||||
Books (and concepts worth “Googling”)
|
||||
-------------------------------------
|
||||
|
||||
* Web Operations, John Allspaw and Jesse Robbins
|
||||
* The Art of Capacity Planning, John Allspaw
|
||||
* Blueprints for High Availability, Evan Marcus and Hal Stern
|
||||
* Resilience Engineering, Erik Hollnagel
|
||||
* Human Error, James Reason
|
||||
* To Engineer is Human, Henry Petroski
|
||||
* To Forgive Design, Henry Petroski
|
||||
|
||||
Agile
|
||||
=====
|
||||
|
||||
Kanban
|
||||
------
|
||||
|
||||
Scrum
|
||||
-----
|
||||
|
||||
The Tao of DevOps
|
||||
=================
|
||||
|
||||
What is DevOps
|
||||
--------------
|
||||
|
||||
What isn’t DevOps
|
||||
-----------------
|
||||
|
||||
Why devops is important
|
||||
-----------------------
|
||||
|
||||
10
statistics.rst
Normal file
10
statistics.rst
Normal file
@@ -0,0 +1,10 @@
|
||||
Statistics For Engineers
|
||||
************************
|
||||
|
||||
Normal distributions
|
||||
====================
|
||||
|
||||
Percentiles, histograms, averages, mean, medians
|
||||
================================================
|
||||
|
||||
|
||||
25
system_daemons_101.rst
Normal file
25
system_daemons_101.rst
Normal file
@@ -0,0 +1,25 @@
|
||||
System daemons 101
|
||||
******************
|
||||
|
||||
NTP
|
||||
===
|
||||
|
||||
Kernel daemons
|
||||
==============
|
||||
``klogd``, etc
|
||||
|
||||
Filesystem daemons
|
||||
==================
|
||||
``xfslogd``, etc
|
||||
|
||||
udevd
|
||||
=====
|
||||
|
||||
crond
|
||||
=====
|
||||
|
||||
atd
|
||||
===
|
||||
|
||||
sshd
|
||||
====
|
||||
26
virtualization_101.rst
Normal file
26
virtualization_101.rst
Normal file
@@ -0,0 +1,26 @@
|
||||
Virtualization 101
|
||||
******************
|
||||
|
||||
Intro to virtualization technologies
|
||||
====================================
|
||||
|
||||
What problems is virtualization good at solving, what isn’t it good at.
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
Hardware assisted vs Paravirtualization
|
||||
---------------------------------------
|
||||
|
||||
Hypervisors - overview, some comparison
|
||||
---------------------------------------
|
||||
|
||||
Container-based virtualization (Jails, Containers/Zones, OpenVZ)
|
||||
----------------------------------------------------------------
|
||||
|
||||
The Cloud
|
||||
=========
|
||||
|
||||
Cloud providers comparison. Pros & Cons
|
||||
---------------------------------------
|
||||
|
||||
Cloud management tools and APIs
|
||||
-------------------------------
|
||||
17
virtualization_201.rst
Normal file
17
virtualization_201.rst
Normal file
@@ -0,0 +1,17 @@
|
||||
Virtualization 201
|
||||
******************
|
||||
|
||||
Managing virtualized infrastructures (Private clouds)
|
||||
=====================================================
|
||||
|
||||
Balancing CPU, Memory, and IO for guests
|
||||
----------------------------------------
|
||||
|
||||
Leveraging virtualization for development
|
||||
=========================================
|
||||
|
||||
Leveraging virtualization for production
|
||||
========================================
|
||||
|
||||
Security implications of virtualization
|
||||
=======================================
|
||||
Reference in New Issue
Block a user