Skip to content

fix(install): accept pi3-64 in Ansible playbook validation#3067

Merged
vpetersson merged 1 commit into
masterfrom
fix/pi3-64-ansible-validation
Jun 11, 2026
Merged

fix(install): accept pi3-64 in Ansible playbook validation#3067
vpetersson merged 1 commit into
masterfrom
fix/pi3-64-ansible-validation

Conversation

@vpetersson

Copy link
Copy Markdown
Contributor

Problem

A user reported that installing Anthias v2026.6.3 on a Raspberry Pi 3 B+ stops halfway with:

Required environment variables missing or invalid. USER must be set; DEVICE_TYPE must be one of pi2, pi3, pi4-64, pi5, x86, arm64.

The install aborts at the Ansible playbook's first pre-task (right after "Gathering Facts"), before any real work runs. Reported at forums.screenly.io/t/anthias-v2026-6-3-installation-stops-halfway-on-pi3-b/6716.

Root cause

A Pi 3 on a 64-bit OS is detected as DEVICE_TYPE=pi3-64. Both bin/install.sh::set_device_type and bin/upgrade_containers.sh correctly emit pi3-64, the docker-build workflow publishes latest-pi3-64 images, and the viewer/processing code all handle pi3-64. But the Ansible side was never updated to accept it:

  1. ansible/site.yml — the pre_tasks validation assertion only allowed pi2, pi3, pi4-64, pi5, x86, arm64. A 64-bit Pi 3 fails this assertion immediately. This is the exact error the user hit.
  2. ansible/roles/system/tasks/docker.ymldocker_arch_by_device_type is exhaustive-by-design (raises on an unmapped key). pi3-64 had no entry, so even past the assertion it would have crashed resolving the dpkg architecture. Added pi3-64: arm64.
  3. ansible/roles/system/tasks/docker.ymldevice_is_pi omitted pi3-64, which would have dropped the gpio group on a board that is in fact a Pi.

A 32-bit-OS Pi 3 (pi3) was unaffected, which is why this slipped through.

Fix

Add pi3-64 to all three lists. No behavioural change for any other board.

Testing

  • python3 -c "import yaml; ..." parses both edited YAML files cleanly.
  • Verified pi3-64 is the value emitted by set_device_type/upgrade_containers.sh on aarch64 Pi 3 and that latest-pi3-64 images are produced by the docker-build workflow, so the rendered compose image tag (anthias-server:latest-pi3-64) resolves.

E2E

Not run on hardware (no 64-bit Pi 3 testbed in the loop). The change is a validation-list addition on a code path already exercised by every other board.

🤖 Generated with Claude Code

A Raspberry Pi 3 running a 64-bit OS reports DEVICE_TYPE=pi3-64 (both
bin/install.sh::set_device_type and bin/upgrade_containers.sh emit it,
and latest-pi3-64 Docker images are built), but the Ansible playbook
never accepted that value:

- ansible/site.yml's pre_task assertion only allowed pi2, pi3, pi4-64,
  pi5, x86, arm64 — so a 64-bit Pi 3 install aborted at "Gathering
  Facts" with "Required environment variables missing or invalid"
  (forums.screenly.io/t/6716).
- ansible/roles/system/tasks/docker.yml's docker_arch_by_device_type
  map is exhaustive-by-design and would have raised on the unmapped
  pi3-64 key; add the arm64 mapping.
- the device_is_pi membership test omitted pi3-64, which would have
  dropped the gpio group on a board that is a Pi.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@vpetersson vpetersson requested a review from a team as a code owner June 11, 2026 10:47
@vpetersson vpetersson requested a review from Copilot June 11, 2026 10:47
@sonarqubecloud

Copy link
Copy Markdown

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR fixes Anthias installation on Raspberry Pi 3 devices running a 64-bit OS by aligning Ansible’s validation and device-type mappings with the already-supported DEVICE_TYPE=pi3-64 value used elsewhere in the project.

Changes:

  • Allow pi3-64 in ansible/site.yml pre-task validation and error message.
  • Map pi3-64 to arm64 in Docker dpkg-arch selection (docker_arch_by_device_type).
  • Treat pi3-64 as a Raspberry Pi for Pi-specific group membership logic (device_is_pi).

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.

File Description
ansible/site.yml Extends DEVICE_TYPE allowlist and updates assertion failure message to include pi3-64.
ansible/roles/system/tasks/docker.yml Adds pi3-64arm64 mapping and includes pi3-64 in Pi-detection list for group assignment.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@vpetersson vpetersson merged commit 93f4742 into master Jun 11, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants