{"id":19040814,"url":"https://github.com/cloudfoundry/bbl-state-resource","last_synced_at":"2025-04-23T21:23:12.407Z","repository":{"id":41337397,"uuid":"121701906","full_name":"cloudfoundry/bbl-state-resource","owner":"cloudfoundry","description":"a concourse resource for manipulating bbl states","archived":false,"fork":false,"pushed_at":"2022-07-08T14:49:16.000Z","size":9094,"stargazers_count":8,"open_issues_count":0,"forks_count":7,"subscribers_count":19,"default_branch":"master","last_synced_at":"2025-04-18T05:54:18.749Z","etag":null,"topics":["bbl","bosh","concourse","concourse-ci","concourse-resource","golang"],"latest_commit_sha":null,"homepage":"","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/cloudfoundry.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":"2018-02-16T00:55:22.000Z","updated_at":"2025-04-08T02:54:36.000Z","dependencies_parsed_at":"2022-09-02T00:42:02.369Z","dependency_job_id":null,"html_url":"https://github.com/cloudfoundry/bbl-state-resource","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudfoundry%2Fbbl-state-resource","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudfoundry%2Fbbl-state-resource/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudfoundry%2Fbbl-state-resource/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudfoundry%2Fbbl-state-resource/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cloudfoundry","download_url":"https://codeload.github.com/cloudfoundry/bbl-state-resource/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250515463,"owners_count":21443417,"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":["bbl","bosh","concourse","concourse-ci","concourse-resource","golang"],"created_at":"2024-11-08T22:25:31.968Z","updated_at":"2025-04-23T21:23:12.391Z","avatar_url":"https://github.com/cloudfoundry.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# the bbl state dir concourse resource\nThis is a concourse resource for provisioning bosh directors and using [bbl](https://github.com/cloudfoundry/bosh-bootloader) to manipulate cloud-stored bbl-states.\n\nIt's built to play nice with [bosh-deployment-resource](https://github.com/cloudfoundry/bosh-deployment-resource) and [pool-resource](https://github.com/concourse/pool-resource).\n\nto bring this in to your concourse pipeline:\n```yaml\nresource_types:\n- name: bbl-state-resource\n  type: docker-image\n  source:\n    repository: cfinfrastructure/bbl-state-resource\n```\n\n## Source Configuration\n#### Example:\n```yaml\nresources:\n- name: bbl-state\n  type: bbl-state-resource\n  source:\n    bucket: bbl-state\n    iaas: gcp\n    gcp_region: us-east1\n    gcp_service_account_key: {{bbl_gcp_service_account_key}}\n```\n#### Parameters:\n`bucket`: **required**: the name of the bucket where you'd like your state-dir tarballs to be stored.\n\n`iaas`: **required**: gcp, for now, but we'll take aws soon. This is the iaas where you want your new bosh directors.\n\n`lb_type`: optional: `cf` or `concourse`, denotes the varietals of the load balancers you'd like to deploy with your director\n\n`lb_domain`: optional: for cf, the system domain, for concourse, the web domain. NOTE: randomly named bosh directors will share a single domain at the moment and that will not go well. these features don't mix.\n\n`gcp_service_account_key`: **required**: your gcp service account key, formatted as JSON.\n\n`gcp_region`: **required**: the gcp region where you'd like your environments.\n\n## Behaviour\n### `put`: Deploy, upgrade, and destroy BOSH directors and its containing environment\n\nThere are two primary modes of operation for bbl-state puts:\n1. By default, without a name configured, we'll generate random environment names for each `put: { command: up }`.\n1. If you've configured a name, name_file, or a state_dir, the resource will manipulate that environment.\n\n#### Examples:\n```yaml\njobs:\n- name: bbl-up-a-specifically-named-environment\n  plan:\n  - put: bbl-state\n    params:\n      command: up\n      name: my-lonely-bosh-director\n\n- name: bbl-up-a-randomly-named-environment\n  plan:\n  - put: bbl-state\n    params:\n      command: up\n\n- name: bbl-update-that-randomly-named-env\n  plan:\n  - get: bbl-state\n    passed: [bbl-up-a-randomly-named-environment]\n  - put: bbl-state\n    params:\n      command: up\n      name_file: bbl-state/name\n\n- name: bbl-delete-that-env-you-just-updated\n  plan:\n  - get: bbl-state-resource\n    passed: [bbl-update-that-env-from-before]\n  - put: bbl-state\n    params:\n      command: down\n      state_dir: bbl-state\n```\n#### Parameters:\n\n`command`: **required**: `up`, `down`, `destroy`, `rotate`, or `cleanup-leftovers`. Any top-level command available to bbl.\n\n`args`: optional: a yaml hash containing additional flags as key-value pairs. these might be load balancer options or `filter: env-name` for leftovers. note that these use dashes, not underscores.\n\n`name`: optional: the name of the environment you'd like to manipulate. overrides name_file and state_dir.\n\n`name_file`: optional: a file you'd like to load name from, useful if you're manipulating an env stored in a pool-resource. overrides state_dir.\n\n`state_dir`: optional: an already-fetched bbl state directory containing the state for the environment you'd like to manipulate.\n\n### `get`: Download bbl states\n\n`get`s download bbl-states, directories generated by bbl that contain information about a BOSH director and its associated iaas environment.\n\n#### Examples:\n```yaml\njobs:\n- name: get-from-previous-put-and-add-it-to-a-pool\n  plan:\n  - get: bbl-state\n    trigger: true\n    passed: [bbl-up-a-randomly-named-environment]\n  - put: concourse-pool-of-bbl-states\n    params:\n      add: bbl-state\n\n- name: delete-a-random-unclaimed-env-nightly\n  plan:\n  - get: time-resource-nightly\n    trigger: true\n  - put: lock\n    resource: concourse-pool-of-bbl-states\n    params:\n      acquire: true\n  - put: bbl-state\n    params:\n      name_file: lock/name\n      command: down\n    on_success:\n      put: lock\n      resource: concourse-pool-of-bbl-states\n      params:\n        remove: lock\n```\n#### Parameters:\nnone! names, checksums, and timestamps are encoded in our concourse versions, so we've got to fetch those specific ones.\n\u003e note: `get`s don't have access to the file system for dynamic configuration, anyways, so name_files and state_dirs can't be reached.\nIf you want to get a specific state-dir, you'll have to use concourse primitives like `passed` to filter things down or do a put with a noop-ish bbl command like `env-id`.\n\nSpecial outputs that you wouldn't find in a normal bbl-state include:\n1. `bbl-state/name`, which contains the environment name\n1. `bbl-state/metadata`, which is useful for plugging in to concourse/pool-resource\n\n## Development:\n\nthings happen via the Makefile:\n\nmake help\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudfoundry%2Fbbl-state-resource","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcloudfoundry%2Fbbl-state-resource","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudfoundry%2Fbbl-state-resource/lists"}