Skip to content

Linux Automation for the Enterprise

Welcome to the ProLUG Enterprise Linux Automation Course Book.

This Book

Contains all materials pertaining to the course including links to external resources. It has been put together with care by a number of ProLUG group members referencing original instructional materials produced by Scott Champine @Het_Tanis .

The content is version controlled with Git and stored here: https://github.com/ProfessionalLinuxUsersGroup/course-books

Course Description

This course addresses how to automate Linux in a corporate environment. This course will focus on taking design, build, deploy, administration, and remediation tasks and turning them into automated processes. The emphasis will be on integration during the build, run, and end of life phase so that CI/CD can occur and deployments as code are utilized. The learner will practice securely building, deploying, integrating, and monitoring Linux systems in an automated fashion.

Prerequisite(s) and/or Corequisite(s):

Prerequisites: None
Credit hours: N/A
Contact hours: 160 (60 Theory Hours, 100 Lab Hours)

Course Summary

Major Instructional Areas

  • Automation Tools
  • Automation Mindset
    • Systems Engineering Focus
    • Continuous Integration/Continuous Deployment (CI/CD) Focus
    • Operations/Administration Focus
  • System Building (Standardization)
    • Prebaking
    • Personalization
  • Updating Systems and Patch Management
  • Software and Package Deployment
  • Networking Configurations
  • System Checking and Reporting

Course Objectives

  • Deploy various automation tools for engineering and operations activities.
  • Retrieve information with API calls to facilitate automation activities.
  • Maintain inventories of systems for automation activities.
  • Map environment variables to systems and utilize them in automations.
  • Describe the activities of the Automation Mindset.
  • Map where automation works within CI/CD frameworks.
  • Deploy and configure a Linux system with automated tools.
  • Automate updating Linux to resolve security vulnerabilities and report out to security teams.
  • Configure networking devices with automation tools.
  • Maintaining system configuration and remediating drift via automation.
  • Troubleshooting Automation and CI/CD pipelines when there are issues
  • Utilize the testing methodologies for environments and CI/CD Deployments

Learning Materials and References

Option #1 (Killercoda Machine)

  • Cloud Lab server running Ubuntu on Killercoda (must be 2 node environment). Minimal resources:
    • 1 CPU
    • 2 GB Ram
    • 30 GB Hard Drive
    • Network Interface (IP already setup)

Option #2 (Home Lab)

  • Local VM server running: RHEL, Fedora, Rocky Minimal resources:
    • 1 CPU
    • 2GB RAM
    • Network Interface (Bridged)

Option #3 (ProLUG Remote Lab)

  • ProLUG Lab access to Rocky 9 instances (auto servers). Minimal resources:
    • 1 CPU
    • 8 GB RAM
    • Network Interface (IP already setup)

Course Plan

Instructional Methods

This course is designed to promote learner-centered activities and support the development of Linux automation skills. The course utilizes individual and group learning activities, performance-driven assignments, problem-based cases, projects, and discussions. These methods focus on building engaging learning experiences conducive to development of critical knowledge and skills that can be effectively applied in professional contexts.

The "Explore Practice Apply" acquisition path will be integrated into this course.

Class size

This class will effectively engage 100-200 learners.

Class Schedule

Class will meet over weekend (brown bag) sessions. One (1) time per week, for 16 weeks. There will be a total of 16 sessions.

Session Overview

Session Topic
1 Automation Tools (Installation and Execution)
2 Interacting with the Operating System
3 Making and Using Inventories
4 Admin Commands and One-Offs
5 Environment and Local Variables in Systems
6 Automating Docker Builds
7 Automating Docker Environments
8 Automating K8s Environments
9 Build and Deploy Linux Systems
10 Harden Linux Systems
11 Update and Patch Systems
12 Configure Network Devices
13 Remediating and Reporting on Drift
14 CI/CD Pipelines and Make v. Buy v. Adopt Decisions.
15 Troubleshooting/Testing 1
16 Troubleshooting/Testing 2

Suggested Learning Approach

In this course, you will be studying individually and within a group of your peers, primarily in a lab environment. As you work on the course deliverables, you are encouraged to share ideas with your peers and instructor, work collaboratively on projects and team assignments, raise critical questions, and provide constructive feedback.