Git Product home page Git Product logo

compute-blade-gobootme's Introduction

gobootme

While this software heavily focuses on Raspberry Pis (especially for the compute-blade), it also boots AMD64 machines. They are just easier and have less quirks. Disclaimer: works, but test coverage is lacking!

Bringing Raspberry Pis from zero to iPXE pointing to e.g. matchbox in seconds.

It acts as ProxyDHCP server to provide boot information to the Pis, and then it serves the iPXE boot script to the Pis.

Requirements/Assumptions

  • DHCP server without PXE booting configured
  • Privileged execution

Recommendations

While this software tries to boot the Pis from zero, it's recommended to use the UEFI firmware for the most reliable booting experience.

Configuration

  • LOG_LEVEL: Log level (default: info)
  • LOG_MODE: Log mode (default: console)
  • IPXE_BOOT_ENDPOINT_AUTO: Expect matchbox running on the same host (default: true)
  • IPXE_BOOT_ENDPOINT: custom iPXE boot script endpoint (only used if IPXE_BOOT_ENDPOINT_AUTO is false)
  • ENABLE_PROXY_DHCP: Enable proxy DHCP server (default: true)
  • PROXY_DHCP_INTERFACE: Interface to listen for bootp requests (default: eth0)

Example runtime

e.g. bringing up matchbox and gobootme in docker-compose

version: '3.8'

services:
  gobootme:
    image: ghcr.io/xvzf/gobootme:latest
    container_name: gobootme
    restart: unless-stopped
    network_mode: host
    environment:
      - LOG_LEVEL=info
      - LOG_MODE=json
      - IPXE_BOOT_ENDPOINT_AUTO=true
      - ENABLE_PROXY_DHCP=true
      - PROXY_DHCP_INTERFACE=eth0

  matchbox:
    image: quay.io/poseidon/matchbox:latest
    container_name: matchbox
    restart: unless-stopped
    args:
      - -address=0.0.0.0:8080
      - -log-level=debug
    volumes:
      - ./matchbox/assets:/var/lib/matchbox/assets
      - ./matchbox/data:/var/lib/matchbox/data
      - ./matchbox/rules:/var/lib/matchbox/rules
    ports:
      - "8080:8080"  # Example port mapping, adjust as needed

compute-blade-gobootme's People

Contributors

github-actions[bot] avatar xvzf avatar

Stargazers

 avatar

Watchers

 avatar

compute-blade-gobootme's Issues

gobootme ghcr image has SHA embedded in the package name

Description

Attempting to deploy gobootme via K3S in a test cluster, the instructions note that one can use image: ghcr.io/xvzf/gobootme:latest as the container image. These instructions don't work for a first-time user.

What happened?

During image pull, containerd complains about not finding the image:

kubectl describe po

...

Events:
  Type     Reason   Age   From     Message
  ----     ------   ----  ----     -------
  Normal   Pulling  1s    kubelet  Pulling image "ghcr.io/xvzf/gobootme:latest"
  Warning  Failed   1s    kubelet  Failed to pull image "ghcr.io/xvzf/gobootme:latest": failed to pull and unpack image "ghcr.io/xvzf/gobootme:latest": failed to resolve reference "ghcr.io/xvzf/gobootme:latest": failed to authorize: failed to fetch anonymous token: unexpected status from GET request to https://ghcr.io/token?scope=repository%3Axvzf%2Fgobootme%3Apull&service=ghcr.io: 403 Forbidden
  Warning  Failed   1s    kubelet  Error: ErrImagePull
  Normal   BackOff  1s    kubelet  Back-off pulling image "ghcr.io/xvzf/gobootme:latest"
  Warning  Failed   1s    kubelet  Error: ImagePullBackOff

Expected Behaviour

The GitHub package is able to be fetched with the name ghcr.io/xvzf/gobootme:latest

Workarounds

Switching the container image name to ghcr.io/xvzf/gobootme/gobootme-922ea806fab8428d0fc37bcc62a604f4:v1.0.1 allows the image to be pulled successfully.

I haven't used goreleaser before, but I believe this may be because the SHA is being embedded into the image name by it.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.