--- 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 people Summer, ~0.5 'til last week, ~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. Bottleneck is user support.** * 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 around June last year (from ungleich). * The 3 locations were already in the pipe. * JD and Olivier have been playing with **OpenStack** (and JuJu + MAAS) for a few months. It was **massively overkill** (and broken). * We tried to reuse some parts, but **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