{"id":18750737,"url":"https://github.com/cafebazaar/blacksmith","last_synced_at":"2025-06-28T01:34:04.354Z","repository":{"id":94400151,"uuid":"44250826","full_name":"cafebazaar/blacksmith","owner":"cafebazaar","description":"Bare-Metal CoreOS Cluster Manager","archived":false,"fork":false,"pushed_at":"2017-05-03T12:26:06.000Z","size":6442,"stargazers_count":70,"open_issues_count":10,"forks_count":15,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-04-20T00:55:34.133Z","etag":null,"topics":["bare-metal","cluster","coreos","ignition"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cafebazaar.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-10-14T13:54:20.000Z","updated_at":"2025-04-17T17:13:31.000Z","dependencies_parsed_at":null,"dependency_job_id":"d6568633-453a-47a0-bf6b-84b1fcedc6a3","html_url":"https://github.com/cafebazaar/blacksmith","commit_stats":null,"previous_names":["cafebazaar/aghajoon"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/cafebazaar/blacksmith","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cafebazaar%2Fblacksmith","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cafebazaar%2Fblacksmith/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cafebazaar%2Fblacksmith/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cafebazaar%2Fblacksmith/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cafebazaar","download_url":"https://codeload.github.com/cafebazaar/blacksmith/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cafebazaar%2Fblacksmith/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262361551,"owners_count":23299082,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bare-metal","cluster","coreos","ignition"],"created_at":"2024-11-07T17:12:56.400Z","updated_at":"2025-06-28T01:34:04.303Z","avatar_url":"https://github.com/cafebazaar.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Blacksmith, Bare-Metal CoreOS Cluster Manager\n\n[![Travis widget]][Travis] [![wercker widget]][wercker] [![Quay widget]][Quay]\n![Status](https://img.shields.io/badge/status-under%20development-orange.svg)\n\n[Travis]: https://travis-ci.org/cafebazaar/blacksmith \"Continuous Integration\"\n[Travis widget]: https://travis-ci.org/cafebazaar/blacksmith.svg?branch=master\n[wercker]: https://app.wercker.com/project/bykey/3f1066d1d6886dfc62a9469da691c1c3 \"Container Build System\"\n[wercker widget]: https://app.wercker.com/status/3f1066d1d6886dfc62a9469da691c1c3/s/master\n[Quay]: https://quay.io/repository/cafebazaar/blacksmith \"Docker Repository on Quay\"\n[Quay widget]: https://quay.io/repository/cafebazaar/blacksmith/status\n\nBlacksmith is a collection of DHCP, PXE, TFTP, and HTTP servers,\ncreated with the purpose of booting CoreOS on bare-metal machines,\nconfiguring them by serving generated [cloud-config] and [ignition] files, and\nmaintaining the cluster over time.\nBlacksmith uses [etcd](https://coreos.com/etcd/) to store the states, and to elect a leader. So you can run\nmultiple instances of Blacksmith to provide a high available CoreOS over bare-metal\ninfrastructure.\n\n**Warning:** This project is under development. To be notified about the project becoming more stable,\nplease subscribe to [this issue](https://github.com/cafebazaar/blacksmith/issues/5).\n\n![Screenshot of Nodes List page - Blacksmith][screenshot]\n\n[cloud-config]: https://github.com/coreos/coreos-cloudinit\n[ignition]: https://github.com/coreos/ignition\n[screenshot]: https://github.com/cafebazaar/blacksmith/raw/master/docs/NodesList.png \"Nodes List - Blacksmith\"\n\n## Workspace and Templating\n\nThe cloud-config and ignition files, and the bootparams string which is passed\nto the kernel at boot time, are provided by executing templates for each machine.\nThese templates, along with CoreOS images and other binary files, form the\nruntime environment of your cluster. In Blacksmith, we call this folder *Workspace*.\nFor more information on the structure of a workspace, check the [workspace doc].\n\n[workspace doc]: docs/Workspace.md\n\n## Running in Docker\n\nBlacksmith is available as a Docker image called `cafebazaar/blacksmith`.\n\nBecause Blacksmith needs to listen for DHCP traffic, it has to run with\nthe host network stack. You can use `install-as-docker.sh` to run\nblacksmith as a docker container. The script has made some assumptions to\nprovide some of the required arguments of the `blacksmith` command.\nTo customize it according to your network layout, currently you have to edit\nthe script.\n\n```shell\n$ sudo ./install-as-docker.sh \u003cworkspace-path\u003e \u003cetcd-endpoints\u003e \u003cnetwork-interface\u003e\n```\n\n## DNS\nIn some IaaS environments, machine names are resolvable in the internal network.\nSome software (Kubernetes?) count on it. To provide similar functionality, you\nneed to run [SkyDNS] on the same instances you run Blacksmith on. Blacksmith will\nconfigure them through etcd.\n\n[SkyDNS]: https://github.com/skynetservices/skydns\n\n## Documentation\nCheck [this](docs/README.md).\n\n## Test\nFor test you can use our ```blacksmith-kubernetes``` workspace.\n\n### Cluster Setup\n```bash\n# Get the packages (ignore the warnings):\ngo get -v github.com/cafebazaar/blacksmith\ngo get -v github.com/cafebazaar/blacksmith-kubernetes\n\n# Download the needed binaries of kubernetes workspace of blacksmith:\ncd $GOPATH/src/github.com/cafebazaar/blacksmith-kubernetes/binaries\n./download-all.sh\n\ncd $GOPATH/src/github.com/cafebazaar/blacksmith-kubernetes\n# Edit config.sh there and make it to suit your needs,\n#\n# If you happen to need a proxy config, you should edit the following lines:\n# export CONTAINER_HTTP_PROXY=http://\u003cyour http proxy ip\u003e:\u003cport\u003e\n# export CONTAINER_HTTPS_PROXY=http://\u003cyour https proxy ip\u003e:\u003cport\u003e\n# Note: Referring localhost and 127.0.0.1 won't work here, good idea\n# would be to make your local proxy server to listen on 0.0.0.0 and\n# use your LAN IP here.\n#\n# You need to edit config.sh internal/external interface names to this:\n# (or a real cluster scenario, according to your machines)\n# export INTERNAL_INTERFACE_NAME=enp0s8\n# export EXTERNAL_INTERFACE_NAME=enp0s9\n\n# put your ssh keys into the cluster\necho \"  - $(cat ~/.ssh/id_rsa.pub)\" \u003e ssh-keys.yaml\n\n# Build workspace:\n./build.sh\n\n# Enter blacksmith\ncd $GOPATH/src/github.com/cafebazaar/blacksmith\nmkdir workspaces\n\n# Initialize the cluster using VirtualBox\n./dev_run.sh\n\n# On blacksmith-kubernetes, once machines reached \"installed\" state, (click\n# you can terminate BoB (local instance of blacksmith that has provisioned\n# master machines with blacksmith-kubernetes workspace)\n\n# Once download of blacksmith container and its requironments finished which\n# takes minutes of even hours, for poor Internet connections\n# (login with IP of third interface of boostrapper1 with `ssh core@IP`\n# and enter `journalctl -f` to check that) you can add 5 workers to your\n# just created virtual cluster. \n./dev_run.sh worker 5\n\n# Append this line to your /etc/hosts\n# \u003cbootstrapper1 ip address\u003e  test.cafecluster\n#\nkubectl --kubeconfig $GOPATH/src/github.com/cafebazaar/blacksmith-kubernetes/Takeaways/kubeconfig get nodes\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcafebazaar%2Fblacksmith","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcafebazaar%2Fblacksmith","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcafebazaar%2Fblacksmith/lists"}