GithubHelp home page GithubHelp logo

flasher's Introduction

 _______  ___      _______  _______  __   __  _______  ______
|       ||   |    |   _   ||       ||  | |  ||       ||    _ |
|    ___||   |    |  |_|  ||  _____||  |_|  ||    ___||   | ||
|   |___ |   |    |       || |_____ |       ||   |___ |   |_||_
|    ___||   |___ |       ||_____  ||       ||    ___||    __  |
|   |    |       ||   _   | _____| ||   _   ||   |___ |   |  | |
|___|    |_______||__| |__||_______||__| |__||_______||___|  |_|

Flasher - server fleet firmware install automation

Flasher is a vendor agnostic tool to automate firmware installs across a server fleet.

Flasher is currently limited to installing firmware Out of band - through the host BMC, and expects the host BMC to be reachable to install firmware.

If the given server is powered off, it will be powered on, the firmware will be install and powered off after.

When a firmware requires the server to be power cycled, flasher will perform the power cycle action and poll until the firmware install is completed.

Build

make build-linux

Run

Flasher can be run in the worker mode or to one-shot install a given firmware file.

Note: it expects to be able to reach the BMC interface for the given server.

worker command

In the worker mode flasher worker, flasher depends on NATS to accept work, a secret store for BMC secrets, a firmware file store for firmware files to install.

Check out the sandbox for steps to have it running along with its dependencies.

The sandbox README.md includes instructions to register a server, create firmware sets and install them on a server.

The diagram below depicts the services flasher depends on:

graph TB
  a((Flasher))-- 1. Query Asset BMC creds, attributes -->ss[(FleetDBAPI)]
  a((Flasher))-- 2. Query current inventory -->sb(ServerA BMC)
  a((Flasher))-- 3. Fetch firmware files -->sa(Firmware file store)
  a((Flasher))-- 4. install firmware -->sb(ServerA BMC)
Loading

install command

The flasher install command will install the given firmware file on a server, and poll until the install is complete.

flasher install --addr 192.168.1.1 \
                --user ADMIN \
                --pass hunder2 \
                --version 3.6 \
                --component bios \
                --vendor supermicro \
                --model x11dph-t \
                --force \
                --file /tmp/BIOS_X11DPH-0981_20220208_3.6_STD.bin \
                --dry-run  \

see cheatsheet.md

Supported devices

For out of band updates, Flasher leverages bmclib and so supports firmware installs on devices that are supported by the library.

As of this writing, it supports Dell PowerEdge, Supermicro X11, X12, Asrockrack updates through their BMC.

Documentation

Documentation on development and flasher implementation can be found in docs

flasher's People

Contributors

doctorvin avatar jakeschuurmans avatar joelrebel avatar ofaurax avatar renovate[bot] avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

flasher's Issues

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Rate-Limited

These updates are currently rate-limited. Click on a checkbox below to force their creation now.

  • fix(deps): update module github.com/spf13/cobra to v1.8.1
  • fix(deps): update module github.com/metal-toolbox/rivets to v1.1.0
  • fix(deps): update module github.com/spf13/viper to v1.19.0
  • fix(deps): update module golang.org/x/net to v0.27.0
  • chore(deps): update anchore/scan-action action to v4
  • chore(deps): update goreleaser/goreleaser-action action to v6
  • fix(deps): update module github.com/metal-toolbox/fleetdb to v1
  • ๐Ÿ” Create all rate-limited PRs at once ๐Ÿ”

Pending Status Checks

These updates await pending status checks. To force their creation now, click the checkbox below.

  • chore(deps): update docker/build-push-action action to v6

Warning

Renovate failed to look up the following dependencies: Can't find version matching v0.0.0-20240416132216-a56a09c16f4e for go package github.com/bmc-toolbox/common, Can't find version matching v0.0.0-20240416160154-fe59bbe5cc7f for go package golang.org/x/exp.

Files affected: go.mod


Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Detected dependencies

dockerfile
Dockerfile
github-actions
.github/workflows/codeql-analysis.yml
  • actions/checkout v4
  • actions/setup-go v5
  • github/codeql-action v3
  • github/codeql-action v3
  • github/codeql-action v2
.github/workflows/push-pr-lint.yaml
  • actions/checkout v4
  • actions/setup-go v5
  • golangci/golangci-lint-action v3
  • actions/checkout v4
  • actions/setup-go v5
  • docker/setup-buildx-action v3
  • docker/build-push-action v5
  • anchore/scan-action v3
.github/workflows/release.yml
  • docker/login-action v3
  • actions/checkout v4
  • actions/setup-go v5
  • anchore/sbom-action v0.15.0
  • goreleaser/goreleaser-action v5
gomod
go.mod
  • go 1.22
  • github.com/banzaicloud/logrus-runtime-formatter v0.0.0-20190729070250-5ae5475bae5e@5ae5475bae5e
  • github.com/bmc-toolbox/bmclib/v2 v2.2.6
  • github.com/bmc-toolbox/common v0.0.0-20240416132216-a56a09c16f4e@a56a09c16f4e
  • github.com/bombsimon/logrusr/v2 v2.0.1
  • github.com/coreos/go-oidc v2.2.1+incompatible
  • github.com/emicklei/dot v1.6.2
  • github.com/equinix-labs/otel-init-go v0.0.9
  • github.com/google/uuid v1.6.0
  • github.com/hashicorp/go-multierror v1.1.1
  • github.com/hashicorp/go-retryablehttp v0.7.5
  • github.com/jeremywohl/flatten v1.0.1
  • github.com/jpillora/backoff v1.0.0
  • github.com/metal-toolbox/fleetdb v0.17.1
  • github.com/metal-toolbox/rivets v1.0.4
  • github.com/mitchellh/mapstructure v1.5.0
  • github.com/pkg/errors v0.9.1
  • github.com/prometheus/client_golang v1.19.0
  • github.com/sirupsen/logrus v1.9.3
  • github.com/spf13/cobra v1.8.0
  • github.com/spf13/viper v1.18.2
  • github.com/stretchr/testify v1.9.0
  • go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.50.0
  • go.opentelemetry.io/otel v1.25.0
  • go.opentelemetry.io/otel/trace v1.25.0
  • golang.org/x/exp v0.0.0-20240416160154-fe59bbe5cc7f@fe59bbe5cc7f
  • golang.org/x/net v0.25.0
  • golang.org/x/oauth2 v0.19.0

  • Check this box to trigger a request for Renovate to run again on this repository

Download all firmware artifacts beforehand

Flasher currently downloads the firmware to be installed on a case by case basis - instead it should download all the relevant firmware artifacts in a firmware-set beforehand so as to ensure that all the artifacts required are available and verified for install.

This will prevent compatibility issues as described here metal-toolbox/architecture#1 (comment)

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.