{"id":18792962,"url":"https://github.com/blacksmith-community/rabbitmq-forge-boshrelease","last_synced_at":"2025-04-13T14:31:44.418Z","repository":{"id":39707652,"uuid":"89749034","full_name":"blacksmith-community/rabbitmq-forge-boshrelease","owner":"blacksmith-community","description":"A Blacksmith Forge for deploying dedicated standalone and clustered RabbitMQ instances","archived":false,"fork":false,"pushed_at":"2024-09-07T18:30:37.000Z","size":66775,"stargazers_count":0,"open_issues_count":0,"forks_count":8,"subscribers_count":9,"default_branch":"master","last_synced_at":"2024-09-07T21:18:57.141Z","etag":null,"topics":["bosh","forge","rabbitmq"],"latest_commit_sha":null,"homepage":"","language":"Shell","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/blacksmith-community.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-04-28T22:24:16.000Z","updated_at":"2024-09-07T18:27:08.000Z","dependencies_parsed_at":"2024-01-18T12:41:51.701Z","dependency_job_id":"918daf4e-e8c5-4d29-8c6e-3b136ed75610","html_url":"https://github.com/blacksmith-community/rabbitmq-forge-boshrelease","commit_stats":null,"previous_names":[],"tags_count":153,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blacksmith-community%2Frabbitmq-forge-boshrelease","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blacksmith-community%2Frabbitmq-forge-boshrelease/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blacksmith-community%2Frabbitmq-forge-boshrelease/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blacksmith-community%2Frabbitmq-forge-boshrelease/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/blacksmith-community","download_url":"https://codeload.github.com/blacksmith-community/rabbitmq-forge-boshrelease/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223590175,"owners_count":17170094,"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":["bosh","forge","rabbitmq"],"created_at":"2024-11-07T21:22:29.910Z","updated_at":"2024-11-07T21:22:30.982Z","avatar_url":"https://github.com/blacksmith-community.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Blacksmith RabbitMQ Forge\n\nThis Blacksmith Forge teaches a [Blacksmith Broker][broker] how to\ndeploy standalone and clustered [RabbitMQ][rabbitmq] service\ndeployments for message bus applications.\nContinue below on how to deploy and configure the forge or check\na quick how to [Access Rabbitmq Instances](docs/rmq_access.md) if \nyou've done so already. \n\n## Deploying\n\nTo deploy this forge, you will need to add it to your existing\nBlacksmith Broker manifest deployment, co-locating the\n`rabbitmq-blacksmith-plans` job on the Blacksmith instance group.\n\nHere's an example to get you started (clipped for brevity):\n\n```yaml\nreleases:\n  - name:    rabbitmq-forge\n    version: latest\n\ninstance_groups:\n  - name: blacksmith\n    jobs:\n      - name:    rabbitmq-blacksmith-plans\n        release: rabbitmq-forge\n        properties:\n          plans:\n            # your plans here\n            # (see below)\n```\n\nThe RabbitMQ Forge deploys rabbitmq by using jobs that are found\n_inside_ the `rabbitmq-forge` BOSH release, which means that your\nBlacksmith BOSH director also needs that release.  Blacksmith is\nable to upload that release for you, if you want.\n\nFor the Spruce users out there:\n\n```\n---\ninstance_groups:\n  - name: blacksmith\n    jobs:\n      - name: blacksmith\n        properties:\n          releases:\n            - (( append ))\n            - (( grab releases.rabbitmq-forge ))\n```\n\nFinally, you'll need to define plans for Blacksmith to deploy.\nThe following sections discuss those ad nauseum.\n\n## Standalone Topology\n\nThe `standalone` topology is as straightforward as they come: a\nsinge dedicated VM that runs a single RabbitMQ process, bound on\nall interfaces, to port 5672, with a management UI on 15672.\n\nHere's a diagram to clear things up:\n\n![Standalone Topology Diagram](docs/diag/topology-standalone.png)\n\n### Configuration Options\n\n- *vm_type* - The name of a BOSH `vm_type` from your cloud-config.\n  You can use this to size your RabbitMQ appropriate to your workload\n  requirements, in terms of RAM and CPU. Increasing the disk size\n  via the VM type is not going to net you much of a gain (see\n  the `disk`, `disk_type`, and `persist` options instead.\n\n- *network* - The name of the network to deply these instances to.\n  This network should be defined in your cloud-config, and should\n  be large enough to handle your anticipated service footprint.\n  It does not need any static IP addresses.\n\n  By default, VMs will be deployed into a network named\n  `rabbitmq-service`.\n\n- *persist* - Whether or not the data stored in this RabbitMQ\n  instance should be written to disk or not.\n\n- *disk* - If you specify `persist` to get data persistence, you can\n  also specify this configuration value to change the size of the\n  persistent disk.\n\n- *disk_type* - If you specify `persist` to get data persistence, you\n  can also specify this configuration value to change the persistent\n  disk type. If both _disk_ and _disk_type_ are defined, the _disk_\n  configuration value will be ignored.\n\n### Example Configuration\n\nA single standalone plan:\n\n```\ninstance_groups:\n  - name: blacksmith\n    jobs:\n      - name:    rabbitmq-blacksmith-plans\n        release: rabbitmq-forge\n        properties:\n          plans:\n            dedicated:\n              type: standalone\n```\n\n## Clustered Topology\n\nThe `cluster` topology scales up the RabbitMQ instances and sets\nthem up in a message bus cluster, striping across BOSH\navailability zones.\n\nHere's a diagram:\n\n![Cluster Topology Diagram](docs/diag/topology-cluster.png)\n\n### Configuration Options\n\n- *vm_type* - The name of a BOSH `vm_type` from your cloud-config.\n  You can use this to size your RabbitMQ appropriate to your workload\n  requirements, in terms of RAM and CPU.\n\n- *azs* - A list of BOSH availability zone names (per\n  cloud-config), across which to stripe the nodes.  By default,\n  nodes will be put in `z1` and `z2`.\n\n- *network* - The name of the network to deply these instances to.\n  This network should be defined in your cloud-config, and should\n  be large enough to handle your anticipated service footprint.\n  It does not need any static IP addresses.\n\n  By default, VMs will be deployed into a network named\n  `rabbitmq-service`.\n\n## Example Configuration\n\nHere's the configuration for the cluster pictured in the topology\ndigram above:\n\n```\ninstance_groups:\n  - name: blacksmith\n    jobs:\n      - name:    rabbitmq-blacksmith-plans\n        release: rabbitmq-forge\n        properties:\n          plans:\n            clustered:\n              type:      cluster\n              instances: 3\n```\n\nHere, we provide two different clustered configurations, one with\nlots of nodes, and another with very large (per cloud-config)\nnodes.\n\n```\ninstance_groups:\n  - name: blacksmith\n    jobs:\n      - name:    rabbitmq-blacksmith-plans\n        release: rabbitmq-forge\n        properties:\n          plans:\n            wide:\n              type:      cluster\n              instances: 7\n\n            large:\n              type:     cluster\n              vm_type:  very-large\n```\n\n## Service Credentials\n\nThe **standalone topology** returns the following credentials\nstructure, for consumption by Cloud Foundry 12-factor\napplications:\n\n```\n{\n  \"dashboard_url\" : \"http://10.x.x.x:15672/#/login/username/sekrit\",\n  \"host\"          : \"10.x.x.x\",\n  \"hostname\"      : \"10.x.x.x\",\n  \"mgmt_port\"     : 15672,\n  \"password\"      : \"sekrit\",\n  \"protocols\"     : {\n    \"amqp\"        : {\n    \"host\"        : \"10.x.x.x\",\n    \"password\"    : \"sekrit\",\n    \"port\"        : 5672,\n    \"uri\"         : \"amqp://some-user:sekrit@10.x.x.x:5672\",\n    \"username\"    : \"some-user\",\n    \"vhost\"       : \"/\"\n   },\n    \"management\": {\n    \"host\"        : \"10.x.x.x\",\n    \"password\"    : \"sekrit\",\n    \"path\"        : \"/api\",\n    \"port\"        : 15672,\n    \"ssl\"         : false,\n    \"uri\"         : \"http://some-user:sekrit@10.x.x.x:15672/api\",\n    \"username\"    : \"some-user\"\n   }\n  },\n  \"rmq_port\"      : 5672,\n  \"uri\"           : \"amqp://some-user:sekrit@10.x.x.x:5672\",\n  \"username\"      : \"some-user\",\n  \"vhost\"         : \"/\"\n}\n\n```\n- `dashboard_url` - The URL to access the RabbitMQ management GUI.\n\n- `host` - The IP address of the standalone RabbitMQ host. `hostname` and \n   `host` are interchangeable.\n\n- `vhost` - The name of the virtual host that the user's permissions apply to.\n\n- `mgmt_port` - The TCP port that the RabbitMQ management web\n  interface can be accessed via.\n\n- `rmq_port` - The TCP port that RabbitMQ's AMQP interface is\n  bound to and listening for inbound connections on.\n\n- `username` - The administrator account username.\n\n- `password` - The administrator account password.\n\n- `uri` - An `amqp://...` URL that can be used for accessing\n  RabbitMQ.  It contains all of the other values, in a URL / DSN\n  for easier integration with libraries / SDKs.\n\nThe section in the protocols block is to provide Pivotal RabbitMQ equivalent\ncredentials formatting to applications. Please check [Pivotal documentation on RMQ Credentials format](https://docs.pivotal.io/rabbitmq-cf/1-14/reference.html) for more details.\n\nThe **clustered topology** returns the following credentials\nstructure, for consumption by Cloud Foundry 12-factor\napplications:\n\n```\n{\n  \"dashboard_url\" : \"http://10.x.x.x:15672/#/login/username/sekrit\",\n  \"hostname\"      : \"10.x.x.x\",\n  \"hostnames\"     : [\"10.x.x.x\", \"10.x.x.y\", \"10.x.x.z\"],\n  \"hosts\"         : [\"10.x.x.x\", \"10.x.x.y\", \"10.x.x.z\"],\n  \"mgmt_port\"     : 15672,\n  \"password\"      : \"sekrit\",\n  \"protocols\"     : {\n    \"amqp\"        : {\n    \"host\"        : \"10.x.x.x\",\n    \"hosts\"       : [\"10.x.x.x\", \"10.x.x.y\", \"10.x.x.z\"],\n    \"password\"    : \"sekrit\",\n    \"port\"        : 5672,\n    \"uri\"         : \"amqp://some-user:sekrit10.x.x.x:5672\",\n    \"uris\"        : [\"amqp://some-user:sekrit@10.x.x.x:5672\",\n                     \"amqp://some-user:sekrit@10.x.x.y:5672\",\n                     \"amqp://some-user:sekrit@10.x.x.z:5672\"]\n    \"username\"    : \"some-user\",\n    \"vhost\"       : \"/\"\n   },\n    \"management\": {\n    \"host\"        : \"10.x.x.x\",\n    \"password\"    : \"sekrit\",\n    \"path\"        : \"/api\",\n    \"port\"        : 15672,\n    \"ssl\"         : false,\n    \"uri\"         : \"http://some-user:sekrit@10.x.x.x:15672/api\",\n    \"uris\"        : [\"http://some-user:sekrit@10.x.x.x:15672/api\",\n                     \"http://some-user:sekrit@10.x.x.y:15672/api\",\n                     \"http://some-user:sekrit@10.x.x.z:15672/api\"]\n    \"username\"    : \"some-user\"\n   }\n  },\n  \"rmq_port\"      : 5672,\n  \"uri\"           : \"amqp://some-user:sekrit10.x.x.x:5672\",\n  \"username\"      : \"some-user\",\n   \"vhost\"        : \"/\"\n}\n```\n- `dashboard_url` - The URL to access the RabbitMQ management GUI.\n\n- `rmq_port` - The TCP port that RabbitMQ's AMQP interface is\n  bound to and listening for inbound connections on.\n\n- `mgmt_port` - The TCP port that the RabbitMQ management web\n  interface can be accessed via.\n\n- `hosts` - A list of the IP addresses of all cluster nodes. `hostnames` and \n   `hosts` are interchangeable.\n\n- `vhost` - The name of the virtual host that the user's permissions apply to.\n\n- `username` - The administrator account username.\n\n- `password` - The administrator account password.\n\n- `uri` - An `amqp://...` URL that can be used for accessing\n  the first (arbitrary) cluster node member.  This is provided\n  mainly for backwards compatibility with applications that want\n  to upgrade from the standalone topology, but don't (yet) support\n  multiple RMQ URLs.\n\n- `uris` - A list of `amqp://...` URLs that can be used for\n  accessing each cluster node individually.  Resilient\n  applications should use this list to failover on node failure.\n\n\nThe section in the protocols block is to provide Pivotal RabbitMQ equivalent\ncredentials formatting to applications. Please check [Pivotal documentation on RMQ Credentials format](https://docs.pivotal.io/rabbitmq-cf/1-14/reference.html) for more details.\n\n## Contributing\n\nIf you find a bug, please raise a [Github Issue][1] first,\nbefore submitting a PR.\n\n\n\n\n[1]: https://github.com/blacksmith-community/rabbitmq-forge-boshrelease/issues\n[broker]: https://github.com/cloudfoundry-community/blacksmith\n[rabbitmq]:  https://rabbitmq.com\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblacksmith-community%2Frabbitmq-forge-boshrelease","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fblacksmith-community%2Frabbitmq-forge-boshrelease","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblacksmith-community%2Frabbitmq-forge-boshrelease/lists"}