{"id":20263592,"url":"https://github.com/springerpe/ansible-cfsetup-boshrelease","last_synced_at":"2026-04-22T16:33:37.705Z","repository":{"id":80986832,"uuid":"75821023","full_name":"SpringerPE/ansible-cfsetup-boshrelease","owner":"SpringerPE","description":"Add-on for ansible-boshrelease to manage Cloud Foundry Organizations, Spaces, Users, Quotas, Security Groups, Environment variables and feature flags","archived":false,"fork":false,"pushed_at":"2017-02-02T18:58:38.000Z","size":28,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-10-19T11:35:03.887Z","etag":null,"topics":["ansible","bosh-release","cloud-foundry","cloudfoundry","errand"],"latest_commit_sha":null,"homepage":null,"language":"Shell","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/SpringerPE.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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":"2016-12-07T09:34:37.000Z","updated_at":"2017-02-02T18:55:21.000Z","dependencies_parsed_at":null,"dependency_job_id":"12d0085f-d0e4-4120-aad6-1f3bb5924b1c","html_url":"https://github.com/SpringerPE/ansible-cfsetup-boshrelease","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/SpringerPE/ansible-cfsetup-boshrelease","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SpringerPE%2Fansible-cfsetup-boshrelease","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SpringerPE%2Fansible-cfsetup-boshrelease/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SpringerPE%2Fansible-cfsetup-boshrelease/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SpringerPE%2Fansible-cfsetup-boshrelease/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SpringerPE","download_url":"https://codeload.github.com/SpringerPE/ansible-cfsetup-boshrelease/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SpringerPE%2Fansible-cfsetup-boshrelease/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32145725,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-22T15:33:03.595Z","status":"ssl_error","status_checked_at":"2026-04-22T15:30:42.712Z","response_time":58,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":["ansible","bosh-release","cloud-foundry","cloudfoundry","errand"],"created_at":"2024-11-14T11:35:38.926Z","updated_at":"2026-04-22T16:33:37.610Z","avatar_url":"https://github.com/SpringerPE.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Add-on BOSH Release for [ansible-boshrelease](https://github.com/SpringerPE/ansible-boshrelease)\n\nAdd-on release with ansible playbooks to manage Cloud Foundry resources:\nusers, security groups, quotas, feature flags, environment variables, organizations and spaces\n\nThe core functionality is provided by https://github.com/SpringerPE/ansible-cloudfoundry-role,\nthis is just an add-on to run the that ansible role in a Bosh errand.\n\n\n## Usage\n\nThis is and add-on release, it will work only if it is deployed together with the \n*ansible-boshrelease* on the nodes, in particular with **ansible-deploy** job.\nHave a look at [ansible-boshrelease](https://github.com/SpringerPE/ansible-boshrelease)\nfor the requirements and to see how it works.\n\nConsidering v2 manifest style, this could be an example:\n\n```\nname: cfsetup\n# replace with `bosh status --uuid`\ndirector_uuid: 1c799a52-154b-4fb3-b181-d81ec5f3c97b\n\nreleases:\n- name: ansible\n  version: latest\n- name: ansible-cfsetup\n  version: latest\n\nstemcells:\n- alias: trusty\n  name: bosh-vsphere-esxi-ubuntu-trusty-go_agent\n  version: latest\n\ninstance_groups:\n- name: ansible-cfsetup\n  lifecycle: errand\n  instances: 1\n  vm_type: medium\n  stemcell: trusty\n  vm_extensions: []\n  azs:\n  - Online\n  networks:\n  - name: online\n  jobs:\n  - name: ansible-deploy\n    release: ansible\n  - name: ansible-cfsetup\n    release: ansible-cfsetup\n  properties:\n    ansible_cfsetup:\n      credentials:\n      - name: test\n        api: \"https://api.test.cf.springer-sbm.com\"\n        admin: \"admin\"\n        password: \"password\"\n      feature_flags:\n      - name: user_org_creation\n        value: true\n      running_environment_variables:\n      - name: HOLA\n        value: hola\n      - name: ADIOS\n        value: bye\n      security_groups:\n      - name: sec1\n        state: present\n        context: running\n        context_state: present\n        rules:\n        - name: \"allow-proxy\"\n          protocol: tcp\n          destination: \"10.20.0.1/0\"\n          ports: \"8080\"\n      quotas:\n      - name: quota1\n        state: present\n        total_services: 100\n        total_routes: 1000\n        memory_limit: 1000\n      users:\n      - name: pepe@hola.com\n        state: present\n        password: hola\n        given_name: Pepe\n        family_name: Family\n      - name: claudio@hola.com\n        state: present\n        password: hola\n        given_name: Claudio\n        family_name: Family\n      orgs:\n      - name: org1\n        quota: quota1\n        state: present\n        users:\n        - name: pepe@hola.com\n        managers:\n        - name: claudio@hola.com\n        spaces:\n        - name: test\n        - name: second\n      - name: org2\n        state: present\n        quota: quota1\n        spaces:\n        - name: live\n          state: present\n          managers:\n          - name: claudio@hola.com\n          security_groups:\n          - name: sec1\n\nupdate:\n  canaries: 1\n  max_in_flight: 1\n  serial: false\n  canary_watch_time: 1000-60000\n  update_watch_time: 1000-60000\n```\n\nYou can add more Cloud Foundry environments in credentials to apply the same\nsettings to all of them (see also the `parallel` parameter to control the serialization/parallelism.\n\nand that's all!, run `bosh-deploy`. Once the release has been deployed, you can run it as a errand:\n\n```\n# bosh errands\nhttps://10.10.0.10:25555\n\n+-----------------+\n| Name            |\n+-----------------+\n| ansible-cfsetup |\n+-----------------+\n```\n\nAnd then run the errand:\n\n```\n# bosh run errand ansible-cfsetup\nhttps://10.10.0.10:25555\nActing as user 'admin' on deployment 'cfsetup' on 'pe-dogo-01'\n\nDirector task 2964\n  Started preparing deployment \u003e Preparing deployment. Done (00:00:00)\n\n  Started preparing package compilation \u003e Finding packages to compile. Done (00:00:00)\n\n  Started creating missing vms \u003e ansible-cfsetup/26fb59a0-2866-49f6-8644-fcd0e1d85b75 (0). Done (00:02:14)\n\n  Started updating instance ansible-cfsetup \u003e ansible-cfsetup/26fb59a0-2866-49f6-8644-fcd0e1d85b75 (0) (canary). Done (00:00:24)\n\n  Started running errand \u003e ansible-cfsetup/0. Done (00:00:07)\n\n  Started fetching logs for ansible-cfsetup/26fb59a0-2866-49f6-8644-fcd0e1d85b75 (0) \u003e Finding and packing log files. Done (00:00:01)\n\n  Started deleting errand instances ansible-cfsetup \u003e ansible-cfsetup/26fb59a0-2866-49f6-8644-fcd0e1d85b75 (0). Done (00:00:18)\n\nTask 2964 done\n\nStarted         2016-12-06 23:27:58 UTC\nFinished        2016-12-06 23:31:02 UTC\nDuration        00:03:04\n\n[stdout]\n* 6637: /var/vcap/packages/ansible/bin/ansible-playbook  -i /var/vcap/jobs/ansible-cfsetup/ansible/inventory /var/vcap/jobs/ansible-cfsetup/ansible/deploy.yml\n\nPLAY [Cloud Foundry settings playbook] *****************************************\n\nTASK [cf : Check PIP dependencies for ansible modules] *************************\nok: [api.test.cf.springer-sbm.com -\u003e localhost] =\u003e (item={'key': u'cfconfigurator', 'value': u'0.2.1'})\n\nTASK [cf : Config - Set global feature flags] **********************************\nok: [api.test.cf.springer-sbm.com -\u003e localhost] =\u003e (item={u'name': u'user_org_creation', u'value': True})\n\nTASK [cf : Config - Set global running environment variables group] ************\nok: [api.test.cf.springer-sbm.com -\u003e localhost] =\u003e (item={u'name': u'HOLA', u'value': u'hola'})\nok: [api.test.cf.springer-sbm.com -\u003e localhost] =\u003e (item={u'name': u'ADIOS', u'value': u'bye'})\n\nTASK [cf : Config - Set global staging environment variables group] ************\n\nTASK [cf : Config - Set global shared domains] *********************************\n\nTASK [cf : Secgroups - Setting global security groups] *************************\nincluded: /var/vcap/data/packages/ansible-cfsetup/130e121141cce7268e2651986b21eae4d6af91c9.1-bfdc6e9241b17fb425b68848d61379589ebb49e6/roles/cf/tasks/secgroup.yml for api.test.cf.springer-sbm.com\n\nTASK [cf : Secgroup - Procesing security group sec1] ***************************\nok: [api.test.cf.springer-sbm.com -\u003e localhost]\n\nTASK [cf : Secgroup - Facts] ***************************************************\nok: [api.test.cf.springer-sbm.com -\u003e localhost]\n\nTASK [cf : Secgroup - Managing security group sec1: present] *******************\nchanged: [api.test.cf.springer-sbm.com -\u003e localhost]\n\nTASK [cf : Secgroup - Setting up security group rules] *************************\nchanged: [api.test.cf.springer-sbm.com -\u003e localhost] =\u003e (item=(0, {u'destination': u'10.20.0.1/0', u'protocol': u'tcp', u'name': u'allow-proxy', u'ports': u'8080'}))\n\nTASK [cf : Secgroup - Managing sec1 in space] **********************************\n\nTASK [cf : Secgroups - Managing default security groups] ***********************\nchanged: [api.test.cf.springer-sbm.com -\u003e localhost] =\u003e (item={u'rules': [{u'destination': u'10.20.0.1/0', u'protocol': u'tcp', u'name': u'allow-proxy', u'ports': u'8080'}], u'state': u'present', u'name': u'sec1'\n, u'context': u'running', u'context_state': u'present'})\n\nTASK [cf : Quotas - Processing quota definitions] ******************************\nchanged: [api.test.cf.springer-sbm.com -\u003e localhost] =\u003e (item={u'memory_limit': 1000, u'state': u'present', u'total_routes': 1000, u'name': u'quota1', u'total_services': 100})\n\nTASK [cf : Users - Managing users] *********************************************\nchanged: [api.test.cf.springer-sbm.com -\u003e localhost] =\u003e (item={u'family_name': u'Family', u'state': u'present', u'password': u'hola', u'name': u'pepe@hola.com', u'given_name': u'Pepe'})\nchanged: [api.test.cf.springer-sbm.com -\u003e localhost] =\u003e (item={u'family_name': u'Family', u'state': u'present', u'password': u'hola', u'name': u'claudio@hola.com', u'given_name': u'Claudio'})\n\nTASK [cf : Orgs - Setting up organizations] ************************************\nincluded: /var/vcap/data/packages/ansible-cfsetup/130e121141cce7268e2651986b21eae4d6af91c9.1-bfdc6e9241b17fb425b68848d61379589ebb49e6/roles/cf/tasks/org.yml for api.test.cf.springer-sbm.com\nincluded: /var/vcap/data/packages/ansible-cfsetup/130e121141cce7268e2651986b21eae4d6af91c9.1-bfdc6e9241b17fb425b68848d61379589ebb49e6/roles/cf/tasks/org.yml for api.test.cf.springer-sbm.com\n\nTASK [cf : Org - Procesing organization org1] **********************************\nok: [api.test.cf.springer-sbm.com -\u003e localhost]\n\nTASK [cf : Org - Facts] ********************************************************\nok: [api.test.cf.springer-sbm.com -\u003e localhost]\n\nTASK [cf : Org - Defining organization org1] ***********************************\nchanged: [api.test.cf.springer-sbm.com -\u003e localhost]\n\nTASK [cf : Org - Managing spaces for org1] *************************************\nincluded: /var/vcap/data/packages/ansible-cfsetup/130e121141cce7268e2651986b21eae4d6af91c9.1-bfdc6e9241b17fb425b68848d61379589ebb49e6/roles/cf/tasks/space.yml for api.test.cf.springer-sbm.com\nincluded: /var/vcap/data/packages/ansible-cfsetup/130e121141cce7268e2651986b21eae4d6af91c9.1-bfdc6e9241b17fb425b68848d61379589ebb49e6/roles/cf/tasks/space.yml for api.test.cf.springer-sbm.com\n\nTASK [cf : Space - Procesing space test in org1 organization] ******************\nok: [api.test.cf.springer-sbm.com -\u003e localhost]\n\nTASK [cf : Space - Facts] ******************************************************\nok: [api.test.cf.springer-sbm.com -\u003e localhost]\n\nTASK [cf : Space - Managing space org1:test present] ***************************\nchanged: [api.test.cf.springer-sbm.com -\u003e localhost]\n\nTASK [cf : Space - Managing security groups for org1:test] *********************\n\nTASK [cf : Space - Assigning developers to org1:test] **************************\n\nTASK [cf : Space - Assigning managers to space org1:test] **********************\n\nTASK [cf : Space - Assigning auditors to space org1:test] **********************\n\nTASK [cf : Space - Procesing space second in org1 organization] ****************\nok: [api.test.cf.springer-sbm.com -\u003e localhost]\n\nTASK [cf : Space - Facts] ******************************************************\nok: [api.test.cf.springer-sbm.com -\u003e localhost]\n\nTASK [cf : Space - Managing space org1:second present] *************************\nchanged: [api.test.cf.springer-sbm.com -\u003e localhost]\n\nTASK [cf : Space - Managing security groups for org1:second] *******************\n\nTASK [cf : Space - Assigning developers to org1:second] ************************\n\nTASK [cf : Space - Assigning managers to space org1:second] ********************\n\nTASK [cf : Space - Assigning auditors to space org1:second] ********************\n\nTASK [cf : Org - Deleting spaces for org1] *************************************\n\nTASK [cf : Org - Deleting organization org1] ***********************************\n\nTASK [cf : Org - Create private domains to organization org1] ******************\n\nTASK [cf : Org - Assigning users to organization org1] *************************\nchanged: [api.test.cf.springer-sbm.com -\u003e localhost] =\u003e (item={u'name': u'pepe@hola.com'})\nchanged: [api.test.cf.springer-sbm.com -\u003e localhost] =\u003e (item={u'name': u'claudio@hola.com'})\n\nTASK [cf : Org - Assigning managers to organization org1] **********************\nchanged: [api.test.cf.springer-sbm.com -\u003e localhost] =\u003e (item={u'name': u'claudio@hola.com'})\n\nTASK [cf : Org - Assigning auditors to organization org1] **********************\n\nTASK [cf : Org - Assigning billing_managers to organization org1] **************\n\nTASK [cf : Org - Assigning default organization org1 for requested users] ******\n\nTASK [cf : Org - Procesing organization org2] **********************************\nok: [api.test.cf.springer-sbm.com -\u003e localhost]\n\nTASK [cf : Org - Facts] ********************************************************\nok: [api.test.cf.springer-sbm.com -\u003e localhost]\n\nTASK [cf : Org - Defining organization org2] ***********************************\nchanged: [api.test.cf.springer-sbm.com -\u003e localhost]\n\nTASK [cf : Org - Managing spaces for org2] *************************************\nincluded: /var/vcap/data/packages/ansible-cfsetup/130e121141cce7268e2651986b21eae4d6af91c9.1-bfdc6e9241b17fb425b68848d61379589ebb49e6/roles/cf/tasks/space.yml for api.test.cf.springer-sbm.com\n\nTASK [cf : Space - Procesing space live in org2 organization] ******************\nok: [api.test.cf.springer-sbm.com -\u003e localhost]\n\nTASK [cf : Space - Facts] ******************************************************\nok: [api.test.cf.springer-sbm.com -\u003e localhost]\n\nTASK [cf : Space - Managing space org2:live present] ***************************\nchanged: [api.test.cf.springer-sbm.com -\u003e localhost]\n\nTASK [cf : Space - Managing security groups for org2:live] *********************\nincluded: /var/vcap/data/packages/ansible-cfsetup/130e121141cce7268e2651986b21eae4d6af91c9.1-bfdc6e9241b17fb425b68848d61379589ebb49e6/roles/cf/tasks/secgroup.yml for api.test.cf.springer-sbm.com\n\nTASK [cf : Secgroup - Procesing security group sec1] ***************************\nok: [api.test.cf.springer-sbm.com -\u003e localhost]\n\nTASK [cf : Secgroup - Facts] ***************************************************\nok: [api.test.cf.springer-sbm.com -\u003e localhost]\n\nTASK [cf : Secgroup - Managing security group sec1: present] *******************\n\nTASK [cf : Secgroup - Setting up security group rules] *************************\n\nTASK [cf : Secgroup - Managing sec1 in space live] *****************************\nchanged: [api.test.cf.springer-sbm.com -\u003e localhost]\n\nTASK [cf : Space - Assigning developers to org2:live] **************************\n\nTASK [cf : Space - Assigning managers to space org2:live] **********************\nchanged: [api.test.cf.springer-sbm.com -\u003e localhost] =\u003e (item={u'name': u'claudio@hola.com'})\n\nTASK [cf : Space - Assigning auditors to space org2:live] **********************\n\nTASK [cf : Org - Deleting spaces for org2] *************************************\n\nTASK [cf : Org - Deleting organization org2] ***********************************\n\nTASK [cf : Org - Create private domains to organization org2] ******************\n\nTASK [cf : Org - Assigning users to organization org2] *************************\n\nTASK [cf : Org - Assigning managers to organization org2] **********************\n\nTASK [cf : Org - Assigning auditors to organization org2] **********************\n\nTASK [cf : Org - Assigning billing_managers to organization org2] **************\n\nTASK [cf : Org - Assigning default organization org2 for requested users] ******\n\nPLAY RECAP *********************************************************************\napi.test.cf.springer-sbm.com : ok=38   changed=14   unreachable=0    failed=0\n\nPlaybook run took 0 days, 0 hours, 0 minutes, 16 seconds\n\n[stderr]\nNone\n\nErrand 'ansible-cfsetup' completed successfully (exit code 0)\n```\n\nOf course, you can include the errand in the Cloud Foundry manifest, in the same\nway as the smoke tests.\n\n\n\n# Updating the role\n\nThe source code is a submodule of this repo, get it by running:\n\n```\ngit submodule init\ngit submodule update\n```\n\nAll the functionality is provided by: https://github.com/SpringerPE/ansible-cloudfoundry-role\nThe role is re-usable outside this release by re-defining a inventory with the variables\nand a group_vars folder. Have a look at the examples on its repository.\n\nAll actions/playbooks (thanks to ansible) are idempotent.\n\nTo create a final release run: `./bosh_final_release`\n\n\n# Author\n\nSpringerNature Platform Engineering, \nJosé Riguera López (jose.riguera@springer.com)\n\n\nCopyright 2017 Springer Nature\n\n\n\n# License\n\nApache 2.0 License\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspringerpe%2Fansible-cfsetup-boshrelease","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fspringerpe%2Fansible-cfsetup-boshrelease","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspringerpe%2Fansible-cfsetup-boshrelease/lists"}