{"id":38132045,"url":"https://github.com/bmc-toolbox/bmcbutler","last_synced_at":"2026-01-16T22:38:18.544Z","repository":{"id":45179508,"uuid":"135845519","full_name":"bmc-toolbox/bmcbutler","owner":"bmc-toolbox","description":"BMC configuration management tool","archived":false,"fork":false,"pushed_at":"2022-09-07T08:52:43.000Z","size":20624,"stargazers_count":78,"open_issues_count":5,"forks_count":10,"subscribers_count":10,"default_branch":"master","last_synced_at":"2024-06-18T23:14:04.455Z","etag":null,"topics":["bmc","bmc-configuration","c7000","configuration-management","idrac8","idrac9","ilo","ilo4","ilo5","m1000e","supermicrox10"],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bmc-toolbox.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-06-02T19:15:40.000Z","updated_at":"2024-05-27T23:33:45.000Z","dependencies_parsed_at":"2023-01-17T22:46:06.606Z","dependency_job_id":null,"html_url":"https://github.com/bmc-toolbox/bmcbutler","commit_stats":null,"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"purl":"pkg:github/bmc-toolbox/bmcbutler","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bmc-toolbox%2Fbmcbutler","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bmc-toolbox%2Fbmcbutler/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bmc-toolbox%2Fbmcbutler/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bmc-toolbox%2Fbmcbutler/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bmc-toolbox","download_url":"https://codeload.github.com/bmc-toolbox/bmcbutler/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bmc-toolbox%2Fbmcbutler/sbom","scorecard":{"id":245431,"data":{"date":"2025-08-11","repo":{"name":"github.com/bmc-toolbox/bmcbutler","commit":"cd3f6cd5970b8cb8e02d203d8464e181b1445ce2"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.6,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":0,"reason":"Found 1/28 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: goCommand not pinned by hash: vendor/github.com/pelletier/go-toml/benchmark.sh:10","Warn: goCommand not pinned by hash: vendor/github.com/pelletier/go-toml/fuzzit.sh:9","Warn: downloadThenRun not pinned by hash: vendor/github.com/pelletier/go-toml/fuzzit.sh:26","Info:   0 out of   2 goCommand dependencies pinned","Info:   0 out of   1 downloadThenRun dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 4 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"44 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GO-2020-0001 / GHSA-6vm3-jj99-7229","Warn: Project is vulnerable to: GHSA-869c-j7wc-8jqv","Warn: Project is vulnerable to: GO-2021-0052 / GHSA-h395-qcrw-5vmq","Warn: Project is vulnerable to: GHSA-3vp4-m3rf-835h","Warn: Project is vulnerable to: GO-2022-0536 / GHSA-39qc-96h7-956f / GHSA-hgr8-6h9x-f7q9","Warn: Project is vulnerable to: GO-2022-0236 / GHSA-h86h-8ppg-mxmh","Warn: Project is vulnerable to: GO-2021-0238 / GHSA-83g2-8m93-v3w7","Warn: Project is vulnerable to: GO-2022-0288","Warn: Project is vulnerable to: GO-2022-0969 / GHSA-69cg-p879-7622","Warn: Project is vulnerable to: GO-2022-1144 / GHSA-xrjj-mj9h-534m","Warn: Project is vulnerable to: GO-2023-1571 / GHSA-vvpx-j8f3-3w6h","Warn: Project is vulnerable to: GO-2023-1988 / GHSA-2wrh-6pvc-2jm9","Warn: Project is vulnerable to: GO-2023-2102 / GHSA-4374-p667-p6c8","Warn: Project is vulnerable to: GHSA-qppj-fm5r-hxr3","Warn: Project is vulnerable to: GO-2024-2687 / GHSA-4v7x-pqxf-cx7m","Warn: Project is vulnerable to: GO-2024-3333","Warn: Project is vulnerable to: GO-2025-3503 / GHSA-qxp5-gwg8-xv66","Warn: Project is vulnerable to: GO-2025-3595 / GHSA-vvgc-356p-c3xw","Warn: Project is vulnerable to: GO-2021-0061 / GHSA-r88r-gmrh-7j83","Warn: Project is vulnerable to: GO-2022-0956 / GHSA-6q6q-88xp-6f2r","Warn: Project is vulnerable to: GO-2020-0036 / GHSA-wxc4-f4m6-wwqv","Warn: Project is vulnerable to: GO-2022-0493 / GHSA-p782-xgp4-8hr8","Warn: Project is vulnerable to: GO-2022-0603 / GHSA-hp87-p4gw-j4gq","Warn: Project is vulnerable to: GO-2020-0015 / GHSA-5rcv-m4m3-hfh7","Warn: Project is vulnerable to: GO-2021-0113 / GHSA-ppp9-7jff-5vj2","Warn: Project is vulnerable to: GO-2022-1059 / GHSA-69ch-w2m2-3vjp","Warn: Project is vulnerable to: GO-2022-0762 / GHSA-3x58-xr87-2fcj","Warn: Project is vulnerable to: GO-2022-0588 / GHSA-x95h-979x-cf3j","Warn: Project is vulnerable to: GO-2022-0197 / GHSA-4r78-hx75-jjj2 / GHSA-mv93-wvcp-7m7r","Warn: Project is vulnerable to: GO-2020-0014 / GHSA-vfw5-hrgq-h5wf","Warn: Project is vulnerable to: GO-2024-2947 / GHSA-v6v8-xj6m-xwqh","Warn: Project is vulnerable to: GO-2024-2631 / GHSA-c5q2-7r4c-mv6g","Warn: Project is vulnerable to: GO-2022-0229 / GHSA-cjjc-xp8v-855w","Warn: Project is vulnerable to: GO-2020-0012 / GHSA-ffhg-7mh4-33c4","Warn: Project is vulnerable to: GO-2021-0227 / GHSA-3vm4-22fp-5rfm","Warn: Project is vulnerable to: GO-2022-0968 / GHSA-gwc9-m7rh-j2ww","Warn: Project is vulnerable to: GO-2021-0356 / GHSA-8c26-wmh5-6g9v","Warn: Project is vulnerable to: GO-2024-2961","Warn: Project is vulnerable to: GO-2023-2402 / GHSA-45x7-px36-x8w8","Warn: Project is vulnerable to: GO-2024-3321 / GHSA-v778-237x-gjrc","Warn: Project is vulnerable to: GO-2025-3487 / GHSA-hcg3-q754-cr77","Warn: Project is vulnerable to: GO-2020-0017 / GHSA-w73w-5m7g-f7qc","Warn: Project is vulnerable to: GO-2021-0053 / GHSA-c3h9-896r-86jm","Warn: Project is vulnerable to: GO-2022-0322 / GHSA-cg3q-j54f-5p7p"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-17T07:32:29.853Z","repository_id":45179508,"created_at":"2025-08-17T07:32:29.853Z","updated_at":"2025-08-17T07:32:29.853Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28485434,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T11:59:17.896Z","status":"ssl_error","status_checked_at":"2026-01-16T11:55:55.838Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["bmc","bmc-configuration","c7000","configuration-management","idrac8","idrac9","ilo","ilo4","ilo5","m1000e","supermicrox10"],"created_at":"2026-01-16T22:38:17.986Z","updated_at":"2026-01-16T22:38:18.534Z","avatar_url":"https://github.com/bmc-toolbox.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"### bmcbutler\n\n[![Status](https://api.travis-ci.org/bmc-toolbox/bmcbutler.svg?branch=master)](https://travis-ci.org/bmc-toolbox/bmcbutler)\n[![Go Report Card](https://goreportcard.com/badge/github.com/bmc-toolbox/bmcbutler)](https://goreportcard.com/report/github.com/bmc-toolbox/bmcbutler)\n[![Development/Support](https://img.shields.io/badge/chat-on%20freenode-brightgreen.svg)](https://kiwiirc.com/client/irc.freenode.net/##bmc-toolbox)\n\n##### About\n\nBmcbutler is a BMC (Baseboard Management Controller) configuration management tool that uses [bmclib](https://github.com/bmc-toolbox/bmclib).\n\n## Configuration support\n\nHardware      | User accounts | Syslog  |  NTP  | Ldap  | Ldap groups  | BIOS  | HTTPS Cert  |\n:-----------  | :-----------: | :-----: | :---: | :---: | :----------: | :--: | :---: |\nDell M1000e   | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | - | |\nDell iDRAC8   | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | :heavy_check_mark: |\nDell iDRAC9   | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |\nHP c7000      | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | - | |\nHP iLO4       | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | :heavy_check_mark: |\nHP iLO5       | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | :heavy_check_mark: |\nSupermicro X10 | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | :heavy_check_mark: |\n\n\nNeed help? See kiwiirc link above/find us on the freenode IRC channel `##bmc-toolbox`.\n\n##### Build\n`go get github.com/bmc-toolbox/bmcbutler`\n\n###### Build with vendored modules (\u003e= go 1.11)\n`GO111MODULE=on go build -mod vendor -v`\n\n###### Notes on working with go mod\n\nTo point to a local copy of bmclib, add to the bottom of the `go.mod` file\n\n`replace github.com/bmc-toolbox/bmclib =\u003e ../bmclib`\n\nTo pick a specific bmclib SHA.\n\n`GO111MODULE=on go get github.com/bmc-toolbox/bmclib@2d1bd1cb`\n\nTo add/update the vendor dir.\n\n`GO111MODULE=on go mod vendor`\n\n##### Setup\nThere's two parts to setting up configuration for bmcbutler,\n\n* Bmcbutler configuration\n* Configuration for BMCs\n\nThis document assumes the Bmcbutler configuration directory is ~/.bmcbutler.\n\n###### Bmcbutler configuration\nSetup configuration Bmcbutler requires to run.\n\n```\n# create a configuration directory for ~/.bmcbutler\nmkdir ~/.bmcbutler/\n```\nCopy the sample config into ~/.bmcbutler/\n[bmcbutler.yml sample](../master/samples/bmcbutler.yml)\n\n###### BMC configuration\nConfiguration to be applied to BMCs.\n\n```\n# create a directory for BMC config\nmkdir ~/.bmcbutler/cfg\n```\nadd the BMC yaml config definitions in there, for sample config see [configuration.yml sample](../master/samples/cfg/configuration.yml)\n\n###### bmc configuration templating\nconfiguration.yml supports templating, for details see [configTemplating](../master/docs/configTemplating.md)\n\n###### inventory\nBmcbutler was written with the intent of sourcing inventory assets and configuring their bmcs,\na csv inventory example is provided to play with.\n\n[inventory.csv sample](../master/samples/inventory.csv.sample)\n\nThe 'inventory' parameter points Bmcbutler to the inventory source.\n\n###### BMC HTTPS cert signing\nBmcbutler can manage certs for BMCs,\nIt compares the current HTTPS cert Subject attributes of a BMC with the ones declared in its configuration,\nif the attributes don't match, it proceeds to,\n\n1. Generate a CSR on the BMC using the Subject attributes declared in its configuration.\n2. Pass the CSR to the signer executable, read the signed cert.\n3. Upload the signed cert to the BMC.\n4. Reset the BMC if required.\n\nTo have this setup,\n\n1. Declare a `https_cert` configuration section in the BMC config template, see [configuration.yml sample](../master/samples/cfg/configuration.yml)\n2. Declare a signer executable in the bmcbutler config, see [bmcbutler.yml sample](../master/samples/bmcbutler.yml)\n\nThe signer executable is required to accept a CSR through STDIN and spit out the signed cert through STDOUT.\nAn example signer that uses [lemur](https://github.com/Netflix/lemur) can be found under [helpers](../master/helpers)\n\n###### Load credentials from [Vault](https://www.vaultproject.io)\n\nCredentials to login to BMCs and configure them can be declared in the configuration file,\nor can be looked up from Vault.\n\nTo setup secrets lookup from Vault,\n\n- enable `secretsFromVault: true` in [bmcbutler.yml](../master/samples/bmcbutler.yml)\n- Use the `lookup_secret::Administrator` parameter in place of the credential in [bmcbutler.yml](../master/samples/bmcbutler.yml)\n- Use the `\u003c%= lookup_secret(\"Administrator\") %\u003e` YAML templating parameter in place of credentials in [configuration.yml sample](../master/samples/cfg/configuration.yml)\n- See the sample bmcbutler.yml for options to set the vault token.\n\nExamples\n\nSet credentials in Vault, using `--config` and command substitution to prevent leaking the vault token\nto other processes (command line arguments are visible to all processes).\n```\ncurl --config \u003c( builtin printf 'header = \"X-Vault-Token: %s\"' \"${VAULT_TOKEN}\" ) \\\n    -H \"Content-Type: application/json\" \\\n    -X POST -d '{\"Administrator\": \"hunter2\", \"Ops\": \"foobar\"}' https://vault.example.com/v1/secret/baremetal/bmc\n```\n\nCheck credentials were set\n```\ncurl --config \u003c( builtin printf 'header = \"X-Vault-Token: %s\"' \"${VAULT_TOKEN}\" ) \\\n      -X GET https://vault.example.com/v1/secret/baremetal/bmc\n```\n\nbmcbutler.yml - declare Vault config and replace credentials\n```\nsecretsFromVault: true\nvault:\n  hostAddress: \"http://172.18.0.2:8200\"\n  tokenFromFile: \"samples/vault-token.test\"\n  secretsPath: /secret/baremetal/bmc\ncredentials:\n  - Administrator: lookup_secret::Administrator\n  - Administrator: lookup_secret::Admin2\n  - root: lookup_secret::dell_default\n  - ADMIN: lookup_secret::sm_default\n```\n\nconfiguration.yml - declare BMC user account config with `lookup_secrets` template method.\n```\nuser:\n  - name: Administrator\n    # lookup_secret - requires 'secretsFromVault: true' in bmcbutler.yml\n    # note - double quotes required\n    password: \u003c%= lookup_secret(\"Administrator\") %\u003e\n    role: admin\n    enable: true\n  - name: Ops\n    password: \u003c%= lookup_secret(\"Ops\") %\u003e\n    role: user\n    enable: false\n```\n\n##### Run\n\nConfigure Blades/Chassis/Discretes\n\n```\n#configure all BMCs in inventory, dry run with debug output\nbmcbutler configure --all --dryrun --debug\n\n#configure all servers in given locations\nbmcbutler configure --servers --locations ams2\n\n#configure all chassis in given locations\nbmcbutler configure --chassis --locations ams2,lhr3\n\n#configure all servers in given location, spawning given butlers\nbmcbutler configure --servers --locations lhr5 --butlers 200\n\n#configure one or more BMCs identified by IP(s)\nbmcbutler configure --ips 192.168.0.1,192.168.0.2,192.168.0.2\n\n#configure one or more BMCs identified by serial(s) and trace log\nbmcbutler configure --serials \u003cserial1\u003e,\u003cserial2\u003e --trace\n\nbmcbutler configure --serial \u003cserial1\u003e,\u003cserial2\u003e --debug\nbmcbutler configure  --serial \u003cserial\u003e --debug\n\n#Apply specific configuration resource(s) and trace log\nbmcbutler configure --ips 192.168.1.4 --resources ntp,syslog,user --trace\n```\n\n#### Acknowledgment\n\nbmcbutler was originally developed for [Booking.com](http://www.booking.com).\nWith approval from [Booking.com](http://www.booking.com), the code and\nspecification were generalized and published as Open Source on github, for\nwhich the authors would like to express their gratitude.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbmc-toolbox%2Fbmcbutler","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbmc-toolbox%2Fbmcbutler","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbmc-toolbox%2Fbmcbutler/lists"}