{"id":18832641,"url":"https://github.com/datto/maasterblaster","last_synced_at":"2026-01-25T18:30:19.247Z","repository":{"id":184335742,"uuid":"666192691","full_name":"datto/maasterblaster","owner":"datto","description":"A tool designed for rapid deployment of bare metal machines anywhere where Canonical's MaaS has a presence.","archived":false,"fork":false,"pushed_at":"2023-07-28T12:13:55.000Z","size":56,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-12-30T07:21:07.571Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/datto.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-07-13T23:57:12.000Z","updated_at":"2023-07-27T23:57:24.000Z","dependencies_parsed_at":"2023-07-28T02:28:20.495Z","dependency_job_id":null,"html_url":"https://github.com/datto/maasterblaster","commit_stats":null,"previous_names":["datto/maasterblaster"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datto%2Fmaasterblaster","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datto%2Fmaasterblaster/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datto%2Fmaasterblaster/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datto%2Fmaasterblaster/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/datto","download_url":"https://codeload.github.com/datto/maasterblaster/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239768927,"owners_count":19693763,"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":[],"created_at":"2024-11-08T01:58:35.837Z","updated_at":"2026-01-25T18:30:19.208Z","avatar_url":"https://github.com/datto.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# Who run Bartertown?\n\n##     Two Sysadmins Enter, One Sysadmin leaves....\n\n\nWelcome to MaaSterblaster a tool designed for rapid deployment of \nbare metal machines anywhere where Canonical's MaaS has a presence. \n\nPrerequisites:\n - Ubuntu Desktop (tested on 18.04 and 20.04)\n - https://github.com/dandruczyk/python-libmaas  (lightly modified fork of upstream to fix a bug for performance) Follow installation instructions from README within that repo\n - python3\n - API Key from MAAS\n - CSV file describing your machines\n\n### Input CSV\n**NOTE: The input CSV must have a header**\n`shortname,domain,machine_profile,macs,power,poweruser,powerpass,powerip,netcfg,foreman_hostgroup_id`\n\nFields:\n\n| Field | Description |\n| ----- | ----------- |\n| shortname | Short hostname for the host (use1-foobar-1) |\n| domain | Domain name (example.lan, example.com, example.net, etc) |\n| machine_profile | See below |\n| macs | Space separated list of MAC addresses for the host (1 min) |\n| power | ipmi until we use hardware with redfish or other OOB mgmt |\n| poweruer | IPMI username |\n| powerpass | IPMI password |\n| powerip | IPMI IP |\n| netcfg | See below for this structure |\n| foreman_hostgroup_id | The numerical ID of the hostgroup to pre-create this host in |\n\n### Caveats\nMaasterblaster uses PXE to boot and image machines, thus each subnet that is \ncurrently MAAS capable has a pool set aside for this purpose, thus the number\nof machines per subnet that can be commssioned, deployed or put into rescue \nmode at any one time is limited to the size of the DHCP pool allocated to MAAS\nwithin that subnet (see the subnets tab in the GUI).  It's recommended to limit\nthe number of simultaneous commissions/deploys in any one subnet to 10 at a\ntime. \n\n### Machine Profiles\nThese refer to a stanza within config.yml which gives maasterblaster guidance\non how to configure disk and network layouts.  This yaml file uses anchors\nand aliases. Anchors define a chunk of configuration,  aliases are used to\nrefer to it elsewhere, it's a way to reduce repetition.\n\n  Anchors are marked with a `\u0026anchorname`  \n  Plain aliases (no overrides) are just `*anchorname`  \n  Aliases  that allow overrides are `\u003c\u003c: *anchorname`  \nsee https://yaml.org/spec/1.2/spec.html#id2765878\n\nSee the USAGE.md page for details on machine profiles and usage\n\n### Setup\n```\ncd ~/git ; git clone https://github.com/datto/maasterblaster.git\ncd maasterblaster\npipenv shell\npipenv install\n```\nSetup ~/.config/maasterblaster.conf\n```\n      ---\n      maas-api-key: \"\u003cPERSONAL_MAAS_API_KEY\u003e\"\n      maas-server: maas.example.com\n      maas-proto: https\n      maas-port: 443\n      rundeck-api-key: \u003cPERSONAL_RUNDECK_API_KEY\u003e\n      rundeck-clear-puppet-key-jobid: \u003cRUNDECK_KEY_TO_CLEAR_PUPPET_KEY\u003e\n      rundeck-clear-salt-key-jobid: \u003cRUNDECK_KEY_TO_CLEAR_SALT_KEY\u003e\n      foreman-user: \u003cFOREMAN_USER\u003e\n      foreman-server: puppet.example.com\n      parallelism: 5\n\n```\nYou may wish to set the following params in maasterblaster.py to suit your environment:\n```\nDEFAULT_MAAS_SERVER = \"maas.example.com\"\nDEFAULT_RUNDECK_SERVER = \"rundeck.example.com\"\nDEFAULT_FOREMAN_SERVER = \"puppet.example.com\"\n```\n\nThese will just set the defaults so you won't need to put them into a config file (above) or on the command line\n\nIf using foreman pairing set the foreman password associated with your account\n`read -s -p \"Foreman Password: \" FOREMAN_PASS ; export FOREMAN_PASS`\n\nTo commission and deploy nodes in your CSV file:\n`./maasterblaster -d DEBUG -i /path/to/csv -C -D`\n\n# License\nLicensed under the GNU General Public License Version 3  \nCopyright Datto, Inc.  \nAuthored by David Andruczyk\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdatto%2Fmaasterblaster","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdatto%2Fmaasterblaster","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdatto%2Fmaasterblaster/lists"}