bootstrap-ubuntu-rpi3

bootstrap-ubuntu-rpi3

This role sets up a Raspberry Pi 3 SD card with a minimal Ubuntu configuration for use with Ansible. Only a SSH server is installed along with Python. Also, the network is configured with a static IP address. The apt repositories will be set to ubuntu-ports, as arm architectures are not supported by the default sources.

This role can not run on the Raspberry Pi directly, instead it's supposed to be run on the control machine. The SD card must be inserted into the control machine and this role will install everything on it. While doing this, qemu-user-static is used. It must be installed and configured in the binfmt.

This role is not capable of updating an existing Raspberry Pi without reinstalling.

You need internet access on the control machine to download the kernel, the firmware, and Ubuntu.

Requirements

A dpkg- or pacman-based Linux distribution on the host machine. qemu-user-static must be configured in binfmt.

On Arch, you also need the Ubuntu keyring package from the AUR.

Role Variables

Global

Name Default/Required Description
global_cache_dir :heavy_check_mark: Path where files are downloaded and extracted. Also, the SD card is mounted in a subdirectory
global_cores 1 Amount of CPU cores in the control machine to build with

General

Name Default/Required Description
bootstrap_device :heavy_check_mark: The SD card to install on (/dev path)
bootstrap_qemu /usr/bin/qemu-aarch64-static Path to the static aarch64 qemu on your sytem
bootstrap_boot_size 1GiB Size of /boot on the Raspberry Pi

Versions

Name Default/Required Description
bootstrap_kernel_version 4.11.y Version of the Raspberry Pi kernel to build (git branch)
bootstrap_extraversion +stuvus Extraversion to append on the kernel
bootstrap_ubuntu_release yakkety Ubuntu release name to install

User

Name Default/Required Description
bootstrap_root_key Public SSH key to add to authorized_keys of root
bootstrap_root_password crypt(3) password hash to set for the root user

Network

Name Default/Required Description
bootstrap_address :heavy_check_mark: Address of the Raspberry Pi network interface
bootstrap_netmask :heavy_check_mark: Netmask of the Raspberry Pi network interface
bootstrap_gateway :heavy_check_mark: Gateway of the Raspberry Pi network interface

Dependencies

None

Example Playbook

- hosts: localhost
  roles:
    - role: bootstrap-ubuntu-rpi3
      global_cores: 8
      bootstrap_device: /dev/sdh
      bootstrap_boot_size: "20%"
      bootstrap_root_key: "ssh-ed25519 AAAAC3NzaC1lZDI1N...."
      bootstrap_address: 192.168.0.25
      bootstrap_netmask: 255.255.255.0
      bootstrap_gateway: 192.168.0.1

License

This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

Author Information

About

Bootstrap a Raspberry Pi 3 with Ubuntu for use with Ansible

Install
ansible-galaxy install stuvusIT/bootstrap-ubuntu-rpi3
GitHub repository
License
cc-by-sa-4.0
Downloads
25
Owner
stuvus IT Team - Studierendenvertretung Universität Stuttgart