presentations/2021-03-01-recycledcloud-intro/slides.md

155 lines
4.0 KiB
Markdown
Raw Permalink Normal View History

---
title: Recycled Cloud Technical Intro
author: Timothée Floure
institute: e-Durable SA
date: 2021-03-01
license: CC BY-SA
---
# It works! (TM)
![](recycledcloud-text.png)
\begin{center}
We even have a website! \href{https://recycled.cloud/}{https://recycled.cloud/}
\end{center}
# High-Level Overview
* 3 locations - **Yes, it's overkill**.
* LNTH and LSNE are production capable.
* LNTH has **power and network redundancy**.
* **Networking** + **Distributed Storage** + QEMU/KVM **VMs**.
* Humans: 1-1.5 Summer, 0.5 Autumn, 0.25 January, 1.25 these days.
# Public-ish services
* Web hosting: Static + Wordpress - **unmanaged**.
* Storage / backups - **unmanaged**.
* KVM Virtual Machine Hosting - **unmanaged**.
**e-Durable is our biggest client by far.**
* No management interface or billing pipeline so far.
- Billing is hard. We'll leverage Odoo.
# A bit of History
\begin{center}
\includegraphics{ungleich-logo-black.png}
\end{center}
* I arrived from ungleich.
* The 3 locations were already in the pipe.
* **OpenStack** (and JuJu + MAAS).
* **Had to drop everything and start from scratch**.
* Only low-end hardware around.
# System Administration 101
* Setting something up is easy, **keeping it running is not**.
* **Complexity** is your worst enemy.
# Technial Stack - General guidelines
* **KISS**: Keep things as simple as possible.
* Alpine Linux and Debian GNU/Linux.
* Document things in the Wiki ([wiki.recycled.cloud](https://wiki.recycled.cloud)).
* Use configuration management ([cdist](https://cdi.st)).
* Obviously **FOSS**-only... non-free software is a PITA!
# Technical Stack - Networking
* We are registered at [RIPE](https://ripe.net): **AS208948**, x1 IPv4 **/22**, x1 IPv6 **/29**.
* External BGP peering in every location, OSPF internally.
* Two edge routers per location, for redundancy.
* **IPv6-first** - IPv4 is **LEGACY** (and painful)!
# Technical Stack - Core Infrastructure
\begin{center}
\includegraphics{location.png}
\end{center}
# Technical Stack - Services
* Services usually run in their own VM.
* Central user directory with OpenLDAP.
* Monitoring is provided by Prometheus + Grafana.
* Backups with Borg.
* ...
# Tooling
* There was no tooling at e-Durable, so we made our own.
* Software Forge: code.recycled.cloud
* Documentation: wiki.recycled.cloud
* Mailing Lists: lists.recycled.cloud
* File Sharing: files.recycled.cloud
* Chat: chat.recycled.cloud
# Buffer slide
That's all for the big lines! Let's do some hands-on exercises now.
* Allocating & accessing a new VM.
* Using the Software Forge.
* Configure said VM with cdist.
# Allocating a new VM
\begin{center}
\includegraphics[width=5cm]{one-logo.png}
\end{center}
* Web interface at one.$LOCATION.recycled.cloud, LDAP account.
* VMs are defined by templates.
* We build our own images - see the RecycledCloud/images repository
* Allocating a new VM is easy: **demo**.
# Using the Software Forge
\begin{center}
\includegraphics[width=10cm]{gitea-logo.png}
\end{center}
* Our **VCS** is **git**.
* **Everything** regarding the RC lives in version control.
* **If you don't use version control, you're likely doing it wrong**.
* code.recycled.cloud provides remote git repositories and simple issue
tracking.
* Joachim makes lovely git introductions.
# CDIST
\begin{center}
\includegraphics[width=5cm]{cdist-logo.jpeg}
\end{center}
* Configuration management tool (similar to Ansible, Puppet, Chef, ...).
* **KISS**. Do one thing, and do it right.
* Originally written by ungleichfolk, much larger community now.
* Shellscript.
# CDIST 101
* Manifests
* Types
* Explorers
# e-Durable CDIST workflow
* dot-cdist.
* cdist-workdir meta repository and third-party sources.
* RecycledCloud and e-Durable each have their own repositories.
* Shellcheck (it's convenient to have it built-in in your editor...).
# References
* Recycled Cloud account management: meta.recycled.cloud
* Recycled Cloud Software Forge: code.recycled.cloud
* Recycled Cloud Wiki: wiki.recycled.cloud
* CDIST Manual: cdi.st
* OpenNebula Web UI: one.{lnth,lsne}.ch.recycled.cloud