Hacker News new | ask | show | jobs
by westurner 2119 days ago
There are a number of resources that may be useful for your curriculum for this project listed in "Is there a program like codeacademy but for learning sysadmin?" https://news.ycombinator.com/item?id=19469266 :

> [ http://www.opsschool.org/ , https://github.com/kahun/awesome-sysadmin/blob/master/README... , https://github.com/stack72/ops-books , https://landing.google.com/sre/books/ , https://response.pagerduty.com/ (Incident Response training)]

To that I'd add that K3D (based on K3S, which is now a CNCF project) runs Kubernetes (k8s) in Docker containers. https://github.com/rancher/k3d

For zero-downtime (HA: High availability) deployments, "Zero-Downtime Deployments To a Docker Swarm Cluster" describes Rolling Updates and Blue-Green Deployments; with illustrations: https://github.com/vfarcic/vfarcic.github.io/blob/master/doc...

For git-push style deployment with more of a least privileges approach (which also has more moving parts) you could take a look at: https://github.com/dokku/dokku-scheduler-kubernetes#function...

And also reference ansible molecule and testinfra for writing sysadmin tests and the molecule vagrant driver for testing docker configurations. https://www.jeffgeerling.com/blog/2018/testing-your-ansible-...

https://molecule.readthedocs.io/en/latest/

https://testinfra.readthedocs.io/en/latest/ :

> With Testinfra you can write unit tests in Python to test actual state of your servers configured by management tools like Salt, Ansible, Puppet, Chef and so on.

> Testinfra aims to be a Serverspec equivalent in python and is written as a plugin to the powerful Pytest test engine.

I wasn't able to find a syllabus or a list of all of the daily posts? Are you focusing on DevOps and/or DevSecOps skills?

EDIT: The lessons are Markdown files in a Git repo: https://github.com/snori74/linuxupskillchallenge

Links to each lesson, the title and/or subjects of the lesson, and the associated reddit posts might be useful in a Table of Contents in the README.md.

1 comments

Thanks, but most of that would be way over the top for my "newbies".

However, You must be the third or fourth person today to suggest that I add a TOC - so that is something I think I'll need to look at!

Maybe most useful as resources for further study.

Looks like Day 20 covers shell scripting. A few things worth mentioning:

You can write tests for shell scripts and write TAP (Test Anything Protocol) -formatted output: https://testanything.org/producers.html#shell

Quoting in shell scripts is something to be really careful about:

> This and this do different things:

  # prints a newline
  echo $(echo "-e a\nb")

  # prints "-e a\nb"
  echo "$(echo "-e a\nb")"
Shellcheck can identify some of those types of (security) bugs/errors/vulns in shell scripts: https://www.shellcheck.net/

LearnXinYminutes has a good bash reference: https://learnxinyminutes.com/docs/bash/

And an okay Ansible reference, which (like Ops School) we should contribute to: https://learnxinyminutes.com/docs/ansible/

Why do so many pros avoid maintaining shell scripts and writing one-off commands that they'll never remember to run again later?

...

It may be helpful to format these as Jupyter notebooks with input and output cells.

- Ctrl-Shift-Minus splits a cell at the cursor

- M and Y toggle a cell between Markdown and code

If you don't want to prefix every code cell line with a '!' so that the ipykernel Jupyter python kernel (the default kernel) executes the line with $SHELL, you can instead install and select bash_kernel; though users attempting to run the notebooks interactively would then need to also have bash_kernel installed: https://github.com/takluyver/bash_kernel

You can save a notebook .ipynb to any of a number of Markdown and non-Markdown formats https://jupytext.readthedocs.io/en/latest/formats.html#markd... ; unfortunately jupytext only auto-saves to md without output cell content for now: https://github.com/mwouts/jupytext/issues/220

You can make reveal.js slides (that do include outputs) from a notebook: https://gist.github.com/mwouts/04a6dfa571bda5cc59fa1429d1309...

With nbconvert, you can manually save an .ipynb Jupyter notebook as Markdown which includes the cell outputs w/ File > "Download as / Export Notebook as" > "Export notebook to Markdown" or with the CLI: https://nbconvert.readthedocs.io/en/latest/usage.html#conver...

    jupyter convert --to markdown
    jupyter convert --help
With Jupyter Book, you can build an [interactive] book as HTML and/or PDF from multiple Jupyter notebooks as e.g. Markdown documents https://jupyterbook.org/intro.html :

    jupyter-book build mybook/
...

From https://westurner.github.io/tools/#bash :

    type bash
    bash --help
    help help
    help type
    apropos bash
    info bash
    man bash
    
    man man
    info info
From https://news.ycombinator.com/item?id=22980353 ; this is how dotfiles work:

    info bash -n "Bash Startup Files"
  
> https://www.gnu.org/software/bash/manual/html_node/Bash-Star...

...

Re: dotfiles, losing commands that should've been logged to HISTFILE when running multiple bash sessions and why I wrote usrlog.sh: https://westurner.github.io/hnlog/#comment-20671184 (Ctrl-F for: "dotfiles", "usrlog.sh", "inputrc")

https://dotfiles.github.io/

https://github.com/webpro/awesome-dotfiles

...

awesome-sysadmin > resources: https://github.com/kahun/awesome-sysadmin#resources