{"id":31474354,"url":"https://github.com/cray-hpe/metal-basecamp","last_synced_at":"2026-02-25T22:32:42.395Z","repository":{"id":37583269,"uuid":"327371285","full_name":"Cray-HPE/metal-basecamp","owner":"Cray-HPE","description":"A cloud-init data source server written in Go.","archived":false,"fork":false,"pushed_at":"2025-08-11T10:33:34.000Z","size":11455,"stargazers_count":7,"open_issues_count":1,"forks_count":1,"subscribers_count":23,"default_branch":"main","last_synced_at":"2025-08-11T12:26:18.224Z","etag":null,"topics":["cloud-init","golang","hpc-cluster","hpcaas"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Cray-HPE.png","metadata":{"files":{"readme":"README.adoc","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-01-06T16:40:02.000Z","updated_at":"2025-05-08T13:27:29.000Z","dependencies_parsed_at":"2023-01-31T07:30:48.389Z","dependency_job_id":"f8fb66d1-3b26-4e20-a5f4-3a99a2f77a87","html_url":"https://github.com/Cray-HPE/metal-basecamp","commit_stats":{"total_commits":92,"total_committers":9,"mean_commits":"10.222222222222221","dds":0.7173913043478262,"last_synced_commit":"272c106005f1cb8f0e2cc098ae20f8ab34ae7640"},"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/Cray-HPE/metal-basecamp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cray-HPE%2Fmetal-basecamp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cray-HPE%2Fmetal-basecamp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cray-HPE%2Fmetal-basecamp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cray-HPE%2Fmetal-basecamp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Cray-HPE","download_url":"https://codeload.github.com/Cray-HPE/metal-basecamp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cray-HPE%2Fmetal-basecamp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":277920089,"owners_count":25899482,"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","status":"online","status_checked_at":"2025-10-01T02:00:09.286Z","response_time":88,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["cloud-init","golang","hpc-cluster","hpcaas"],"created_at":"2025-10-01T22:05:54.178Z","updated_at":"2025-10-01T22:05:55.344Z","avatar_url":"https://github.com/Cray-HPE.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"= Metal Basecamp\n:toc:\n:toclevels: 3\n\nimage:https://github.com/Cray-HPE/metal-basecamp/actions/workflows/ci.yml/badge.svg[Continuous Integration,link=https://github.com/Cray-HPE/metal-basecamp/actions/workflows/ci.yml]\n\nThis repo provides the metadata datasource for cloud-init during bootstrap and recovery.\n\nThe sister-service, CRAY-BSS, provides this same capability to scale through Kubernetes. Baecamp can be\nused in Docker or Podman quickly for bootstrapping a kubernetes cluster. The data served by Basecamp\nis compatible with Cray-BSS, and is handed-off as part of the deployment process.\n\n== Usage - Server\n\nBasecamp can be ran multiple ways. For the full experience, we suggest using the Docker image.\nDevelopers should use whichever environment they like, whether that's the Docker container\nor their local Go-lang env.\n\n=== Podman (or Docker)\n\n. Create configuration directories\n+\n[source,bash]\n----\nmkdir -p configs\ntouch configs/server.yaml # fill this in\ntouch configs/data.json # fill this in\n----\n\n. Run the container:\n+\n[source,bash]\n----\nimage='arti.dev.cray.com/csm-docker-master-local/metal-basecamp'\npodman create --net host --volume $(pwd)/configs:/app/configs --name basecamp \"$image\"\n----\n\n. You should now be able to run queries against the container:\n+\n[source,bash]\n----\ncurl http://localhost:8888/meta-data\ncurl http://localhost:8888/user-data\n----\n\n=== Daemon\n\nThere is a systemd-daemon in this repo for running the Basecamp container in the background. The \ndaemon can be obtained through linux package managers.\n\nThe daemon will setup `configs/data.json` and `configs/server.yaml` if they do not already exist.\n\n[source,bash]\n----\nsystemctl enable basecamp\nsystemctl start basecamp\n----\n\n====  Logs\n\nBasecamp outputs logs in two places; container logs and daemon logs.\n\n===== Container logs\n\n[source,bash]\n----\npodman logs -f basecamp\n----\n\n==== Daemon logs\n\n[source,bash]\n----\njournalctl -xeu basecamp -f\n----\n\n== Usage - Client\n\nTwo steps for usage.\n\n. Install cloud-init\n+\n[source,bash]\n----\nzypper install cloud-init\nsystemctl enable cloud-configs cloud-init-local cloud-init cloud-final\n----\n\n. Configure cloud-init\n\n.. Option 1: Add the following to `/etc/cloud/cloud.cfg`\n+\n[source,yaml]\n----\ndatasource:\n  NoCloud:\n    seedfrom: http://{IP OF METADATA SERVER}:{PORT}/\n----\n\n.. Option 2: Boot the server with the `ds` kernel parameter set to `nocloud-net`\n+\n[source]\n----\nds=nocloud-net;s=http://{IP OF METADATA SERVER}:{PORT}/\n----\n+\n.For scripts such as iPXE scripts or GRUB config files, the `;` must be escaped with a `\\`.\n+\n[source]\n----\nds=nocloud-net\\;s=http://{IP OF METADATA SERVER}:{PORT}/\n----\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcray-hpe%2Fmetal-basecamp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcray-hpe%2Fmetal-basecamp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcray-hpe%2Fmetal-basecamp/lists"}