Giter Site home page Giter Site logo

sguzwf / blacksmith Goto Github PK

View Code? Open in Web Editor NEW

This project forked from cafebazaar/blacksmith

0.0 0.0 0.0 5.97 MB

Bare-Metal CoreOS Cluster Manager

License: GNU General Public License v2.0

Makefile 2.36% Go 72.57% Shell 6.21% CSS 2.43% HTML 7.12% JavaScript 9.30%

blacksmith's Introduction

Blacksmith, Bare-Metal CoreOS Cluster Manager

GoDoc Widget Travis Widget

Blacksmith is a collection of DHCP, PXE, TFTP, and HTTP servers, created with the purpose of booting CoreOS on bare-metal machines, configuring them by serving generated cloud-config and ignition files, and maintaining the cluster over the time. Blacksmith uses etcd to store the states, and to elect a leader. So You can run multiple instances of Blacksmith to provide a high available CoreOS over bare-metal infrastructure.

Warning: UNDER DEVELOPMENT. To be notified about the project getting more stable, please subscribe to this issue.

Screenshot of Nodes List page - Blacksmith

Workspace and Templating

The cloud-config and ignition files, and the bootparams string which is passed to the kernel at boot time, are provided by executing templates for each machine. These templates, along with CoreOS images and other binary files forms the runtime environment of your cluster. In Blacksmith, we call this folder Workspace. For more information on the structure of a workspace, check the workspace doc.

Running in Docker

Blacksmith is available as a Docker image called cafebazaar/blacksmith.

Because Blacksmith needs to listen for DHCP traffic, it has to run with the host network stack. You can use install-as-docker.sh to run blacksmith as a docker container. The script has made some assumptions to provide some of the required arguments of the blacksmith command. To customize it according to your network layout, currently you have to edit the script.

$ sudo ./install-as-docker.sh <workspace-path> <etcd-endpoints> <network-interface>

DNS

In some IaaS environments, machine names are resolvable in the internal network. Some softwares (Kubernetes?) count on it. To provide similar functionality, you need to run SkyDNS on the same instances you run Blacksmith on. Blacksmith will configure them through etcd.

Documentation

Check this.

Development

You can use Vagrant to quickly setup a test environment:

make blacksmith

### Clone and prepare workspace
mkdir workspaces
cd workspaces
git clone https://github.com/cafebazaar/blacksmith-workspace-kubernetes.git
cd blacksmith-workspace-kubernetes
make update
cd ..
ln -s blacksmith-workspace-kubernetes/workspace current

# Start 3 machines, which will be provisioned to serve a 3-node etcd cluster,
# 3 working instances of SkyDNS, and a 3-node Blacksmith cluster
vagrant up --provider=libvirt

### Check the logs
vagrant ssh pxeserver1 -c "docker logs -f blacksmith_docker"

### In another terminal, start a client machine
vagrant up --provider=libvirt pxeclient1

blacksmith's People

Contributors

danderson avatar remohammadi avatar farnasirim avatar alialaee avatar givia avatar jonboulle 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.