docs: theme, documenting intro and packer.
This commit is contained in:
parent
69f04d8b0f
commit
81e70556db
|
@ -31,6 +31,7 @@ release = '0.0.1-pre'
|
||||||
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
|
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
|
||||||
# ones.
|
# ones.
|
||||||
extensions = [
|
extensions = [
|
||||||
|
'sphinx.ext.graphviz'
|
||||||
]
|
]
|
||||||
|
|
||||||
# Add any paths that contain templates here, relative to this directory.
|
# Add any paths that contain templates here, relative to this directory.
|
||||||
|
@ -47,7 +48,8 @@ exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']
|
||||||
# The theme to use for HTML and HTML Help pages. See the documentation for
|
# The theme to use for HTML and HTML Help pages. See the documentation for
|
||||||
# a list of builtin themes.
|
# a list of builtin themes.
|
||||||
#
|
#
|
||||||
html_theme = 'alabaster'
|
# html_theme = 'alabaster'
|
||||||
|
html_theme = 'sphinx_rtd_theme'
|
||||||
|
|
||||||
# Add any paths that contain custom static files (such as style sheets) here,
|
# Add any paths that contain custom static files (such as style sheets) here,
|
||||||
# relative to this directory. They are copied after the builtin static files,
|
# relative to this directory. They are copied after the builtin static files,
|
||||||
|
|
|
@ -10,7 +10,9 @@ bladerunner
|
||||||
:maxdepth: 2
|
:maxdepth: 2
|
||||||
:caption: Contents:
|
:caption: Contents:
|
||||||
|
|
||||||
|
intro
|
||||||
packer
|
packer
|
||||||
|
tools
|
||||||
|
|
||||||
This is my setup for my
|
This is my setup for my
|
||||||
`computeblade <https://publish.obsidian.md/ai6ua/Projects/Computing/ComputeBlade>`_
|
`computeblade <https://publish.obsidian.md/ai6ua/Projects/Computing/ComputeBlade>`_
|
||||||
|
|
|
@ -0,0 +1,66 @@
|
||||||
|
Introduction
|
||||||
|
============
|
||||||
|
|
||||||
|
I'm working on building a cluster of Raspberry Pi CM4 compute blades. I plan on
|
||||||
|
using the cluster to learn a bunch of stuff, but I need to be able to provision
|
||||||
|
the blades automatically. This repo is my work in that area.
|
||||||
|
|
||||||
|
There are some assumptions made:
|
||||||
|
|
||||||
|
1. All the systems involved are Debian-ish systems, particularly Ubuntu. The
|
||||||
|
build system here will assume this. It may work on non-Ubuntu apt-based
|
||||||
|
systems. For non-Debian systems, I've also been working on including
|
||||||
|
container builds that may work.
|
||||||
|
|
||||||
|
There are three types of systems:
|
||||||
|
|
||||||
|
- ``dev`` indicates DEV compute blades.
|
||||||
|
- ``tpm`` indicates TPM compute blades.
|
||||||
|
- ``gw`` indicates the gateway system, which may perform other functions.
|
||||||
|
|
||||||
|
The `computeblade docs <https://docs.computeblade.com/>`_ has a description of
|
||||||
|
the different blade types.
|
||||||
|
|
||||||
|
Below is a diagram of the planned system.
|
||||||
|
|
||||||
|
.. graphviz ::
|
||||||
|
|
||||||
|
digraph cluster {
|
||||||
|
subgraph {
|
||||||
|
dev01;
|
||||||
|
dev02;
|
||||||
|
dev03;
|
||||||
|
dev04;
|
||||||
|
dev05;
|
||||||
|
|
||||||
|
tpm01;
|
||||||
|
tpm02;
|
||||||
|
tpm03;
|
||||||
|
tpm04;
|
||||||
|
tpm05;
|
||||||
|
}
|
||||||
|
|
||||||
|
"poe-switch" -> dev01 [dir=both];
|
||||||
|
"poe-switch" -> dev02 [dir=both];
|
||||||
|
"poe-switch" -> dev03 [dir=both];
|
||||||
|
"poe-switch" -> dev04 [dir=both];
|
||||||
|
"poe-switch" -> dev05 [dir=both];
|
||||||
|
|
||||||
|
"poe-switch" -> tpm01 [dir=both];
|
||||||
|
"poe-switch" -> tpm02 [dir=both];
|
||||||
|
"poe-switch" -> tpm03 [dir=both];
|
||||||
|
"poe-switch" -> tpm04 [dir=both];
|
||||||
|
"poe-switch" -> tpm05 [dir=both];
|
||||||
|
|
||||||
|
"poe-switch" -> gw [dir=both];
|
||||||
|
publicnet -> gw [dir=both];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
The hardware isn't slated to arrive until September at the earliest.
|
||||||
|
|
||||||
|
Hardware
|
||||||
|
--------
|
||||||
|
|
||||||
|
Blades:
|
||||||
|
|
|
@ -1,4 +1,39 @@
|
||||||
packer
|
packer
|
||||||
======
|
======
|
||||||
|
|
||||||
`packer <https://www.packer.io/>`_ is used to generate the base images for the cluster.
|
`packer <https://www.packer.io/>`_ is used to generate the base images for the cluster.
|
||||||
|
|
||||||
|
Build scripts
|
||||||
|
-------------
|
||||||
|
|
||||||
|
There are a few scripts that are used in building a packer image. In general,
|
||||||
|
the workflow looks like:
|
||||||
|
|
||||||
|
1. ``install-packer.sh``
|
||||||
|
2. ``build-image.sh``
|
||||||
|
|
||||||
|
``install-packer.sh``
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
``install-packer.sh`` will install ``packer`` and ``packer-builder-arm``. If
|
||||||
|
``git`` isn't installed, it will assume that it should install dependencies. It
|
||||||
|
will attempt to install these dependencies with ``apt``.
|
||||||
|
|
||||||
|
The script will clone the ``packer-builder-arm`` into the ``build`` directory.
|
||||||
|
|
||||||
|
The dependencies required to build images with ``packer`` are:
|
||||||
|
|
||||||
|
- git
|
||||||
|
- unzip
|
||||||
|
- xz-utils
|
||||||
|
- qemu-user-static
|
||||||
|
- e2fsprogs
|
||||||
|
- dosfstools
|
||||||
|
- libarchive-tools
|
||||||
|
|
||||||
|
Go will also need to be installed; there is a script provided in the :doc:`tools`
|
||||||
|
directory.
|
||||||
|
|
||||||
|
Board files
|
||||||
|
------------
|
||||||
|
|
||||||
|
|
|
@ -1 +1,2 @@
|
||||||
Sphinx==4.3.2
|
Sphinx==4.3.2
|
||||||
|
sphinx-rtd-theme==1.2.0
|
|
@ -0,0 +1,4 @@
|
||||||
|
tools
|
||||||
|
=====
|
||||||
|
|
||||||
|
The ``tools`` directory contains various helper scripts.
|
|
@ -12,7 +12,8 @@ errmsg () {
|
||||||
preflight () {
|
preflight () {
|
||||||
case "${IMAGE_TYPE}" in
|
case "${IMAGE_TYPE}" in
|
||||||
ubuntu) PACKER_BUILD_FILE="boards/cm4-cluster-ubuntu-22.04.2.json" ;;
|
ubuntu) PACKER_BUILD_FILE="boards/cm4-cluster-ubuntu-22.04.2.json" ;;
|
||||||
raspbian) PACKER_BUILD_FILE="boards/raspberry-pi/raspios-lite-arm.json" ;;
|
## TODO(kyle): look into building a Raspbian version if needed.
|
||||||
|
# raspbian) PACKER_BUILD_FILE="boards/raspberry-pi/raspios-lite-arm.json" ;;
|
||||||
custom)
|
custom)
|
||||||
if [ -z "${PACKER_BUILD_FILE}" ]
|
if [ -z "${PACKER_BUILD_FILE}" ]
|
||||||
then
|
then
|
||||||
|
@ -23,7 +24,7 @@ preflight () {
|
||||||
*)
|
*)
|
||||||
errmsg "[!] invalid image type ${IMAGE_TYPE}."
|
errmsg "[!] invalid image type ${IMAGE_TYPE}."
|
||||||
errmsg "[!] valid image types are"
|
errmsg "[!] valid image types are"
|
||||||
errmsg " - raspbian"
|
# errmsg " - raspbian"
|
||||||
errmsg " - ubuntu"
|
errmsg " - ubuntu"
|
||||||
errmsg " - custom path/to/board/file"
|
errmsg " - custom path/to/board/file"
|
||||||
exit 1
|
exit 1
|
||||||
|
|
|
@ -9,9 +9,13 @@ PACKER_FILE=packer_${PACKER_VERSION}_linux_${ARCH}
|
||||||
UPSTREAM="https://github.com/mkaczanowski/packer-builder-arm"
|
UPSTREAM="https://github.com/mkaczanowski/packer-builder-arm"
|
||||||
UPGRADE="false"
|
UPGRADE="false"
|
||||||
BUILD_DIR="$(pwd)/build"
|
BUILD_DIR="$(pwd)/build"
|
||||||
|
FORCE_DEPENDENCY_INSTALL="no"
|
||||||
|
|
||||||
prep () {
|
prep () {
|
||||||
sudo apt-get update && sudo apt-get -y install git unzip qemu-user-static e2fsprogs dosfstools 'bsdtar|libarchive-tools'
|
if [ -z "$(command -v git)" -o "${FORCE_DEPENDENCY_INSTALL}" = "yes" ]
|
||||||
|
then
|
||||||
|
sudo apt-get update && sudo apt-get -y install git unzip qemu-user-static e2fsprogs dosfstools libarchive-tools
|
||||||
|
fi
|
||||||
mkdir -p ${BUILD_DIR}
|
mkdir -p ${BUILD_DIR}
|
||||||
pushd ${BUILD_DIR}
|
pushd ${BUILD_DIR}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue