The purpose of this project is to provide a devops like experience deploying and managing a cluster of Raspberry Pis
This particular cluster will contain 4 Raspberry Pi 4's (2GB) connected to a PoE enabled switch, allowing for easy deployment.
This project is mostly a learning experience and not meant to support any specific end product, with a focus on covering the following topics:
- Using standard DevOps software to help manage a series of servers. We could configure each Pi individually with only 4 nodes but the goal is to be able to scale this to an arbitrary size with minimal effort. This will be done with Ansible but may include other deployment tools like Chef.
- Be able to provide a service that is hosted across multiple devices,
allowing for better performance as usage scales up. Some services that will
be desired are:
- Gitlab CI Runners
- A simple web service which requires some basic db functionality (likely a page view counter)
These are the technologies I wish to familiarize myself with throughout this project.
- Ansible, perhaps Chef
- Kubernetes, Docker Swarm
- Docker Compose, Dockerfile
- Gitlab CI, perhaps Jenkins or Travis
- Git! Hosted on Gitlab and Github
- Fusion360 for enclosure modeling, Meshmixer for basic edits/positioning
- FDM 3D Printer for creating the enclosure
- Ansible, used for system setup to easily manage all nodes in the cluster for first time configuration
Location | Description |
---|---|
./3dprint | Contains various models used to construct an enclosure for this project |
./ansible | Contains playbooks and configuration that allow for easy management of nodes in the cluster. |
Product | Quantity | Link |
---|---|---|
Raspberry Pi 4B - 2GB* | 4 | BuyaPi.ca |
Raspberry Pi PoE Hat | 4 | BuyaPi.ca |
64GB** Micro SD Cards | 4 | |
TP-Link TL-SG1005P | 1 | amazon.ca |
Adafruit Panel Mount Ethernet Extension |
1 (optional) | Digi-Key Adafruit |
* Doesn't necessarily have to be 2GB, you can probably use whichever
variant you want
** Can be any size as long as it can fit Raspbian and whatever docker images you need