Giter Club home page Giter Club logo

bergenholm's Introduction

Bergenholm

Bergenholm is a simple kickstart install server like Cobbler or MAAS.

Japanese version of this document is README.ja.md.

Features

  • Using iPXE efficiently; iPXE is a PXE boot loader for x86/ x86-64. iPXE has many features. Bergenholm uses some of them like HTTP downloading, iPXE scripting and per-host parameters.

  • No Repository Inside; while Cobbler and MAAS have local repositories they manage, Bergenholm doesn't need them. Of course, you can build local repositories manually and make Bergenholm using them.

  • REST APIs; Bergenholm has RESTful APIs for templates, hosts, groups and iPXE. No GUI/WebUI now.

  • Parameter Inheritance; Bergenholm can handle JSON-style paraeters for host and group. host parameters can inherit group(s) parameters and group parameters can do too. No restriction for group definition.

  • Jinja2 Templating; Bergenholm can handle Jinja2-style template files and parameters. You can use templates with host/group parameters for Kickstart/Preseed files, iPXE scripts, and so on. Additionally, you can use parameters in parameters. No restriction for parameter usage except reserved parameters .

  • Streaming Remote Images; Bergenholm can fetch kernel/initrd images on remote sites and fowarding (streaming) them to installing targets.

  • Power Management; Bergenholm can retrieve and change power status of installing targets. Supported power type are IPMI, VMware and Libvirt.

  • Written in Flask-PyMongo and Flask-Action; So backend database is MongoDB. You can develop Bergenholm with Python.

Structure

Figure: Structure

Boot Sequence

(IT=Install Target, KS=Kickstart Install Server)

Common part:

  1. IT: powered on (by pressing power button, IPMI, etc)
  2. IT: sends DHCP request (by nic BIOS)
  3. KS: sends DHCP response with next image information (by DHCP server)
  4. IT: sends TFTP request for next image (by nic BIOS)
  5. KS: sends iPXE image via TFTP (by TFTP server)
  6. IT: sends HTTP request for iPXE script (by iPXE)
  7. KS: sends iPXE script via HTTP (by Bergenholm)

Case-by-Case part:

(for installation)

  1. IT: sends HTTP request to fetch boot images (by iPXE)
  2. KS: fetches remote images via web proxy (by Bergenholm)
  3. KS: sends images to IT via HTTP (by Bergenholm)

or (for local boot)

  1. IT: boots from local storage (by iPXE)

or (for registration)

  1. IT: sends HTTP request to register IT itself to Bergenholm (by iPXE)
  2. KS: registers IT (by Bergenholm)
  3. IT: boots from local storage (by iPXE)

Install

See INSTALL.md for details.

Usage

See USAGE.md for details. If you have bergenholmclient installed, you will like USAGE_CLI.md.

Client

APIs

See API.md for details.

FAQs

See FAQ.md.

Notes

License

Apache License ver.2.0. See LICENSE for details.

Note: dhcp_server.py and centos6.kickstart are under GNU GPL ver.2. ubuntu1404.preseed has no license displayed.

bergenholm's People

Contributors

yosshy avatar yuuichi-fujioka avatar

Stargazers

しお avatar Eugeny Gorobtsov avatar  avatar Takaaki Furukawa avatar

Watchers

James Cloos avatar  avatar  avatar

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.