{"id":13558022,"url":"https://github.com/signalfx/maestro-ng","last_synced_at":"2025-12-16T19:03:44.738Z","repository":{"id":11724820,"uuid":"14247166","full_name":"signalfx/maestro-ng","owner":"signalfx","description":"Orchestration of Docker-based, multi-host environments","archived":false,"fork":false,"pushed_at":"2022-07-13T18:42:42.000Z","size":951,"stargazers_count":684,"open_issues_count":24,"forks_count":84,"subscribers_count":99,"default_branch":"main","last_synced_at":"2025-07-25T10:02:12.442Z","etag":null,"topics":["docker","maestro","maestro-ng","orchestration"],"latest_commit_sha":null,"homepage":"https://signalfx.com","language":"Python","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/signalfx.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}},"created_at":"2013-11-08T23:24:30.000Z","updated_at":"2025-01-05T15:34:05.000Z","dependencies_parsed_at":"2022-09-06T03:42:12.962Z","dependency_job_id":null,"html_url":"https://github.com/signalfx/maestro-ng","commit_stats":null,"previous_names":[],"tags_count":54,"template":false,"template_full_name":null,"purl":"pkg:github/signalfx/maestro-ng","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/signalfx%2Fmaestro-ng","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/signalfx%2Fmaestro-ng/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/signalfx%2Fmaestro-ng/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/signalfx%2Fmaestro-ng/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/signalfx","download_url":"https://codeload.github.com/signalfx/maestro-ng/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/signalfx%2Fmaestro-ng/sbom","scorecard":{"id":823056,"data":{"date":"2025-08-18","repo":{"name":"github.com/signalfx/maestro-ng","commit":"1931b6062dc328bbbe2f1242dae91b491e13cbac"},"scorecard":{"version":"v5.2.1-41-g40576783","commit":"40576783fda6698350fcbbeaea760ff827433034"},"score":2.1,"checks":[{"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/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#token-permissions"}},{"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/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#packaging"}},{"name":"Code-Review","score":4,"reason":"Found 10/25 approved changesets -- score normalized to 4","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/40576783fda6698350fcbbeaea760ff827433034/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/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#dangerous-workflow"}},{"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/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#maintained"}},{"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/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#binary-artifacts"}},{"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/40576783fda6698350fcbbeaea760ff827433034/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/40576783fda6698350fcbbeaea760ff827433034/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/40576783fda6698350fcbbeaea760ff827433034/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/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#license"}},{"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/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#signed-releases"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: containerImage not pinned by hash: Dockerfile:1: pin your Docker image by updating alpine:3.10 to alpine:3.10@sha256:451eee8bedcb2f029756dc3e9d73bab0e7943c1ac55cff3a4861c52a0fdd3e98","Warn: pipCommand not pinned by hash: Dockerfile:8","Warn: pipCommand not pinned by hash: release.sh:36","Info:   0 out of   1 containerImage dependencies pinned","Info:   0 out of   2 pipCommand 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/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#pinned-dependencies"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":0,"reason":"15 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2019-217 / GHSA-462w-v97r-4m45","Warn: Project is vulnerable to: PYSEC-2014-8 / GHSA-8r7q-cvjq-x353","Warn: Project is vulnerable to: GHSA-cpwx-vrp4-4pq7","Warn: Project is vulnerable to: PYSEC-2014-82 / GHSA-fqh9-2qgg-h84h","Warn: Project is vulnerable to: PYSEC-2021-66 / GHSA-g3rq-g295-4j3m","Warn: Project is vulnerable to: GHSA-h5c8-rqwp-cp95","Warn: Project is vulnerable to: GHSA-h75v-3vvj-5mfj","Warn: Project is vulnerable to: PYSEC-2019-220 / GHSA-hj2j-77xm-mc5v","Warn: Project is vulnerable to: GHSA-q2x7-8rv6-6q7h","Warn: Project is vulnerable to: PYSEC-2021-142 / GHSA-8q59-q68h-6hv4","Warn: Project is vulnerable to: PYSEC-2018-49 / GHSA-rprw-h62v-c2w7","Warn: Project is vulnerable to: GHSA-9hjg-9r4m-mvj7","Warn: Project is vulnerable to: GHSA-9wx4-h78v-vm56","Warn: Project is vulnerable to: PYSEC-2023-74 / GHSA-j8r2-6x86-q33q","Warn: Project is vulnerable to: PYSEC-2018-28 / GHSA-x84v-xcm2-53pg"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 15 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-23T16:04:43.658Z","repository_id":11724820,"created_at":"2025-08-23T16:04:43.659Z","updated_at":"2025-08-23T16:04:43.659Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":27769802,"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-12-16T02:00:10.477Z","response_time":57,"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":["docker","maestro","maestro-ng","orchestration"],"created_at":"2024-08-01T12:04:41.470Z","updated_at":"2025-12-16T19:03:44.720Z","avatar_url":"https://github.com/signalfx.png","language":"Python","funding_links":[],"categories":["Python","docker","orchestration"],"sub_categories":[],"readme":"# MaestroNG\n\n[![Build Status](https://travis-ci.org/signalfx/maestro-ng.png)](https://travis-ci.org/signalfx/maestro-ng) [![Docs](https://readthedocs.org/projects/maestro-ng/badge/?version=main)](http://maestro-ng.readthedocs.io)\n\n_MaestroNG is an orchestrator of Docker-based, multi-hosts environments._\n\nThe original [Maestro](http://github.com/toscanini/maestro) was developed\nas a single-host orchestrator for Docker-based deployments. Given the\nstate of Docker at the time of its writing, it was a great first step\ntowards orchestration of deployments using Docker containers as the unit\nof application distribution.\n\nDocker having made significant advancements since then, deployments and\nenvironments spanning across several hosts are becoming more and more\ncommon and are in the need for some orchestration.\n\nBased off ideas from the original Maestro and taking inspiration from\nDocker's _links_ feature, MaestroNG makes the deployment and control of\ncomplex, multi-host environments using Docker containers possible and\neasy to use. Maestro of course supports declared dependencies between\nservices and makes sure to honor those during environment bring up.\n\n## What is Maestro?\n\nMaestroNG is, for now, a command-line utility that allows for\nautomatically managing the orchestrated deployment and bring up of a set\nof service instance containers that compose an environment on a set of\ntarget host machines.\n\nEach host machine is expected to run a Docker daemon. Maestro will then\ncontact the Docker daemon of each host in the environment to figure out\nthe status of the environment and what actions to take based on the\nrequested command.\n\n## Dependencies\n\nMaestroNG requires Docker 0.6.7 or newer on the hosts as it makes use of\nthe container naming feature and bug fixes in NAT port forwarding.\n\nYou'll also need the following Python modules, although these will be\nautomatically installed by `setuptools` if you follow the instructions\nbelow.\n\n* A recent [docker-py](http://github.com/dotcloud/docker-py)\n* PyYAML (you may need to install this manually, e.g. `apt-get install python-yaml`)\n* Jinja2\n* Python Requests\n* `bgtunnel`\n* `six`\n\nIf you plan on using the HipChat auditor, you'll also need\n`python-simple-hipchat`.\n\n## Installation\n\nMaestro is distributed on the Python Package Index. You can install\nMaestro via _Pip_:\n\n```\n$ pip install --user --upgrade maestro-ng\n```\n\nIf you want the bleeding edge, you can install directly from the Git\nrepository:\n\n```\n$ pip install --user --upgrade git+git://github.com/signalfx/maestro-ng\n```\n\n### Note for MacOS users\n\nThe above command may fail if you installed Python and `pip` via\nHomebrew, usually with the following error message:\n\n```\nerror: can't combine user with prefix, exec_prefix/home, or install_(plat)base\n```\n\nThis is because the Homebrew formula for `pip` configures distutils with\nan installation prefix, and this cannot be combined with the use of the\n`--user` flag, as describe in https://github.com/Homebrew/homebrew/wiki/Homebrew-and-Python#note-on-pip-install---user.\n\nIf you encounter this problem, simply install the package without the\n`--user` flag:\n\n```\n$ pip install --upgrade git+git://github.com/signalfx/maestro-ng\n```\n\n### Use as a Docker container\n\nFirst, build your maestro-ng image using :\n```\ndocker build -t maestro-ng .\n```\n\nThen say you have a maestro-ng configuration named /fu/bar/myconf.yml\n\nIf you want to start this on a docker host without install python and its pip modules :\n```\ndocker run --rm -t -i -v /fu/bar/myconf.yml:/maestro.yaml maestro-ng \u003cstart/stop/status/clean\u003e\n```\nor, if the myconf.yml is in the current dir :\n```\ndocker run --rm -t -i -v $(pwd)/myconf.yml:/maestro.yaml maestro-ng \u003cstart/stop/status/clean\u003e\n```\n\n## Documentation\n\nThe [MaestroNG documentation](http://maestro-ng.readthedocs.io/) is\navailable on ReadTheDocs. For a overview of recent changes, see the\n[ChangeLog](docs/changes.md).\n\n## License\n\nMaestroNG is licensed under the Apache License, Version 2.0. See LICENSE for\nfull license text.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsignalfx%2Fmaestro-ng","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsignalfx%2Fmaestro-ng","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsignalfx%2Fmaestro-ng/lists"}