{"id":21280828,"url":"https://github.com/consensysmesh/storm","last_synced_at":"2025-07-11T10:32:55.410Z","repository":{"id":57423339,"uuid":"49479517","full_name":"ConsenSysMesh/storm","owner":"ConsenSysMesh","description":"Cluster deployment and cloud management tool with docker-machine","archived":false,"fork":false,"pushed_at":"2016-02-29T16:18:05.000Z","size":226,"stargazers_count":9,"open_issues_count":5,"forks_count":4,"subscribers_count":27,"default_branch":"master","last_synced_at":"2024-11-05T08:49:15.612Z","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":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ConsenSysMesh.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-01-12T06:19:42.000Z","updated_at":"2020-09-03T21:37:54.000Z","dependencies_parsed_at":"2022-09-06T07:11:46.818Z","dependency_job_id":null,"html_url":"https://github.com/ConsenSysMesh/storm","commit_stats":null,"previous_names":["consensys/storm"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ConsenSysMesh%2Fstorm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ConsenSysMesh%2Fstorm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ConsenSysMesh%2Fstorm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ConsenSysMesh%2Fstorm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ConsenSysMesh","download_url":"https://codeload.github.com/ConsenSysMesh/storm/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225715945,"owners_count":17512908,"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-21T10:41:18.598Z","updated_at":"2024-11-21T10:41:19.409Z","avatar_url":"https://github.com/ConsenSysMesh.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"docker-storm\n============\n[![Build Status](https://travis-ci.org/ConsenSys/storm.svg?branch=master)](https://travis-ci.org/ConsenSys/storm) [![PyPI](https://img.shields.io/pypi/v/docker-storm.svg)](https://pypi.python.org/pypi/docker-storm) [![](https://badge.imagelayers.io/caktux/storm:alpine.svg)](https://imagelayers.io/?images=caktux/storm:latest,caktux/storm:alpine 'Get your own badge on imagelayers.io')\n\nMulti-cloud load-balanced deployments.\n\n[![asciicast](https://asciinema.org/a/4rn6431m27q8l8vkr1dbox80x.png)](https://asciinema.org/a/4rn6431m27q8l8vkr1dbox80x)\n\n### Installation\n\n#### With `pip`\n```\npip install docker-storm\n```\n\n#### With Docker\n\n##### Using images from Docker Hub\nAlpine-based (~50 MB download / ~170 MB virtual size):\n```\ndocker pull caktux/storm:alpine\n```\n\nUbuntu-based (~155 MB download / ~400 MB virtual size):\n```\ndocker pull caktux/storm\n```\n\n##### Building with `docker-compose`\n```\ngit clone https://github.com/ConsenSys/storm.git\ncd storm\ndocker-compose build\n```\n\n#### Bare-metal install\n```\nsudo apt-get install build-essential pkg-config python python-dev\ngit clone https://github.com/ConsenSys/storm.git\ncd storm\nvirtualenv venv  # optional\nsource venv/bin/activate  # optional\npip install .\n```\nYou will also need the latest releases of [docker-machine](https://docs.docker.com/machine/), [docker-compose](https://docs.docker.com/compose/install/) and [docker](https://docs.docker.com/installation/ubuntulinux/).\n\n### Configuration\n#### Credentials\nCreate and add your credentials in the `~/.storm` folder with proper permissions.\n\n##### AWS\nStandard credentials in `~/.storm/aws/credentials`\n```\n[Credentials]\naws_access_key_id = \u003cACCESS_KEY_ID\u003e\naws_secret_access_key = \u003cSECRET_ACCESS_KEY\u003e\n```\n\n##### Azure\nAdd your subscription ID in `~/.storm/azure/subscription-id`\n```\nmkdir -p ~/.storm/azure\necho \"YOUR_SUBSCRIPTION_ID\" \u003e ~/.storm/azure/subscription-id\n```\nAnd your certificate as `~/.storm/azure/certificate.pem`\n\n##### DigitalOcean\nAdd your token in `~/.storm/digitalocean/token`\n```\nmkdir -p ~/.storm/digitalocean\necho \"YOUR_TOKEN\" \u003e ~/.storm/digitalocean/token\n```\n\n#### Networking\n`docker-machine` opens the ports it needs to function, but more ports are needed for the overlay networks and the services you will deploy.\n\n`docker-storm` will also open the following ports for overlay networks and Consul to function properly:\n\n| Protocol | Port                           | Description        |\n| -------- | ------------------------------ | ------------------ |\n| udp      | 4789                           | Data plane (VXLAN) |\n| tcp/udp  | 7946                           | Control plane      |\n| tcp      | 8300, 8301+udp, 8302+udp, 8500 | Consul             |\n\nUntil automated port opening is implemented for deployed services, a few other default ports get opened (`80`, `443`, `8545`) and you'll have to open custom services' ports manually.\n\n#### Certificate for HTTPS\nAdd your SSL/TLS certificate for HAProxy in `~/.storm/certificate.pem`\n\n### Running with Docker\n\n##### Using `docker-compose`\n```\ndocker-compose run storm\n```\n\n##### Using `docker`\n```\ndocker build -t storm .\ndocker run -v ~/.storm:/root/.storm -it storm\n```\n\n### Usage\n```\n$ docker-storm --help\nusage: docker-storm [-h] [-v] [--debug DEBUG]\n                    [{launch,deploy,repair,env,ls,ps,up,scale,stop,rm,teardown}]\n                    [parameters [parameters ...]]\n\npositional arguments:\n  {launch,deploy,repair,env,ls,ps,up,scale,stop,rm,teardown}\n                        Storm commands for deployments and maintenance\n  parameters            Optional parameters per command\n\noptional arguments:\n  -h, --help            show this help message and exit\n  -v, --version         show program's version number and exit\n  --debug DEBUG         Debug (default: False)\n```\n\n#### Deployments\n\n- Create a `storm.yml` file\n- Create a `deploy` folder, with your services in sub-folders along with their `docker-compose.yml` file:\n\n        ./\n        storm.yml\n        deploy/\n            hello/\n                docker-compose.yml\n            redis/\n                docker-compose.yml\n            ...\n\n- Run `docker-storm deploy`\n\nExample `storm.yml`:\n```\nhostname: storm.consensys.net\nload_balancers: 2\n\ndiscovery:\n  azure:\n    scale: 1\n    size: Small\n  aws:\n    scale: 1\n    size: t2.micro\n    vpc: vpc-c2cb97a7\n  digitalocean:\n    scale: 1\n    size: 512mb\n\nhosts:\n  azure:\n    -\n      scale: 1\n      size: Small\n      location: West Europe\n    -\n      scale: 1\n      size: Small\n      location: East US\n  aws:\n    scale: 3\n    size: t2.small\n    vpc: vpc-c2cb97a7\n  digitalocean:\n    scale: 3\n    size: 1gb\n\ndeploy:\n  hello:\n    services:\n      app:\n        scale: 5\n  geth:\n    services:\n      geth:\n        scale: 5\n```\n\n#### Repairing cluster\n**Not implemented yet**\n\nThis command will compare currently running instances with your `storm.yml` definitions, launch missing instances and containers, and repair the state of your cluster.\n```\ndocker-storm repair\n```\n\n#### Quick instance launch\n```\ndocker-storm launch aws quick-instance-name\n```\n\n#### Environment shortcuts\nJust like with `docker-machine`, you can set your Docker environment variables but much more easily, using the index of launched instances instead of their full names.\n\nFor single instances:\n```\neval $(docker-storm env 0)\n```\nWith swarm flag:\n```\neval $(docker-storm env swarm)\n```\nFor discovery instances:\n```\neval $(docker-storm env discovery 0)\n```\n\n#### `ps` shortcut for Swarm\n```\ndocker-storm ps [-- -a]\n```\n\n#### `ls` shortcut\nThis is really just an alias for `docker-machine ls --filter label=com.storm.managed=true` which filters for machines managed by `docker-storm`.\n```\ndocker-storm ls\n```\n\n#### Cleanup\n\n##### Stopping machines\n```\ndocker-storm stop \u003cmachine\u003e [\u003cmachines\u003e, ...]\n```\n\n##### Removing instances\n```\ndocker-storm rm [instance]\n```\n\n##### Removing all instances\nAdd `all` to also remove discovery instances.\n```\ndocker-storm teardown [all]\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fconsensysmesh%2Fstorm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fconsensysmesh%2Fstorm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fconsensysmesh%2Fstorm/lists"}