Skip to content

Device enrollment

Jason Anderson edited this page Nov 10, 2021 · 5 revisions

Raspberry Pi 4

Step 1: Image the Pi

  1. Download the latest Raspberry Pi OS Lite with support for 64-bit ARM architectures: https://downloads.raspberrypi.org/raspios_lite_arm64/images/. 64-bit is required; the service images we will run on the Pi are built for aarch64.
  2. Mount the image and add an empty "ssh" file to the /boot partition. This instructs the Pi to start sshd on boot.
    • If you will be networking the Pi via its on-board WiFi card, also add a wpa_supplicant.conf to /boot with your WiFi SSID and credentials. Instructions
  3. Use Raspberry Pi Imager or similar to transfer the disk image to a microSD card and install into the Pi.
  4. Power on the Pi and log in via SSH with the default user "pi", password "raspberry". The Pi should have advertised itself via mDNS to your local network as the host raspberrypi.local, but you may need to look up its IP on your router/DHCP server if not.
  5. Change the default password!
  6. Set hostname: hostnamectl set-hostname <host> -- this needs to be globally unique on the testbed, so we recommend naming it like <institution>-<host_ident>. The host identifier typically indicates what type of device it is. For example, a Raspberry Pi 4 at UChicago might be named uc-rpi4-01.

Optional after first boot

  • Add additional SSH authorized keys to pi user
  • Install maintenance/ops packages (vim, iftop)

Step 2: Install Edge services

  1. Install python-chi-edge and then install its dependences with python -m chi_edge.install.
  2. Get an enrollment configuration file from the CHI@Edge operations team. This will include some credentials necessary to authorize the device to join the CHI@Edge testbed. Adapt the configuration as desired. Most likely, you will have to include some additional configuration to inform the SDK how to reach your device on your local network:
    ansible_hostname: <IP/host> # The SSH address for your Pi
    ansible_user: <username> # The SSH user
    ansible_private_key_file: <file> # The SSH identity file. Password authentication for SSH is not permitted.
  3. Invoke the SDK to provision the device, installing the relevant packages and configuration: python -m chi_edge bootstrap --device-type raspberrypi --enrollment-conf <file> <host>
    • This will take some time, as Docker images must be downloaded and extracted on the host file system.

Step 3: Configure on CHI@Edge

Once the device is set up, the zun_compute container should be running and be healthy (amongst others.) At this point you should notify Chameleon operations that the node is up so that we can finish the enrollment on the testbed side. It is good to do a sanity check of the logs of the various services in /var/log/kolla to ensure there are no obvious errors or concerning log messages.

Jetson Nano

🏗️ Coming soon 🚧