{"id":22529477,"url":"https://github.com/test-kitchen/kitchen-openstack","last_synced_at":"2026-04-08T01:00:29.515Z","repository":{"id":670635,"uuid":"8614070","full_name":"test-kitchen/kitchen-openstack","owner":"test-kitchen","description":"OpenStack Compute driver for Test-Kitchen","archived":false,"fork":false,"pushed_at":"2026-04-03T16:33:23.000Z","size":1130,"stargazers_count":55,"open_issues_count":20,"forks_count":76,"subscribers_count":20,"default_branch":"main","last_synced_at":"2026-04-03T18:56:57.666Z","etag":null,"topics":["hacktoberfest","managed-by-terraform","ruby","ruby-gem","test-kitchen","testing"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/test-kitchen.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2013-03-06T21:53:08.000Z","updated_at":"2026-04-03T16:33:26.000Z","dependencies_parsed_at":"2025-04-19T06:22:03.911Z","dependency_job_id":"5af6556f-e30f-4e6d-89b8-32c415769fb0","html_url":"https://github.com/test-kitchen/kitchen-openstack","commit_stats":{"total_commits":314,"total_committers":48,"mean_commits":6.541666666666667,"dds":0.7261146496815287,"last_synced_commit":"a645e1f09cceb28dedd2081b8213114baa198345"},"previous_names":[],"tags_count":68,"template":false,"template_full_name":null,"purl":"pkg:github/test-kitchen/kitchen-openstack","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/test-kitchen%2Fkitchen-openstack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/test-kitchen%2Fkitchen-openstack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/test-kitchen%2Fkitchen-openstack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/test-kitchen%2Fkitchen-openstack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/test-kitchen","download_url":"https://codeload.github.com/test-kitchen/kitchen-openstack/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/test-kitchen%2Fkitchen-openstack/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31491097,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-06T17:22:55.647Z","status":"ssl_error","status_checked_at":"2026-04-06T17:22:54.741Z","response_time":112,"last_error":"SSL_read: 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":["hacktoberfest","managed-by-terraform","ruby","ruby-gem","test-kitchen","testing"],"created_at":"2024-12-07T07:14:52.876Z","updated_at":"2026-04-08T01:00:29.484Z","avatar_url":"https://github.com/test-kitchen.png","language":"Ruby","readme":"# Kitchen::OpenStack\n\n![Gem Version](https://img.shields.io/gem/v/kitchen-openstack.svg)\n![CI](https://github.com/test-kitchen/kitchen-openstack/actions/workflows/lint.yml/badge.svg)\n\nA Test Kitchen Driver for OpenStack.\n\nThis driver uses the fog gem to provision and destroy nova instances. Use an OpenStack cloud for your infrastructure testing!\n\nShamelessly copied from [Fletcher Nichol](https://github.com/fnichol)'s awesome work on an [EC2 driver](https://github.com/test-kitchen/kitchen-ec2), and [Adam Leff](https://github.com/adamleff)'s amazing work on an [VRO driver](https://github.com/chef-partners/kitchen-vro).\n\n## Status\n\nThis software project is actively maintained by the [OSU Open Source Lab](https://osuosl.org/).\n\n## Requirements\n\nThere are **no** external system requirements for this driver. However you will need access to an OpenStack cloud.\n\n## Installation and Setup\n\nThis plugin ships out of the box with Chef Workstation, which is the easiest way to make sure you always have the latest testing dependencies in a single package.\n\n[Download Chef Workstation](https://downloads.chef.io/tools/workstation) to get started\n\n### Manual Installation\n\nAdd this line to your application's Gemfile:\n\n```ruby\ngem 'kitchen-openstack'\n```\n\nAnd then execute:\n\n```bash\nbundle\n```\n\nOr install it yourself as:\n\n```bash\ngem install kitchen-openstack\n```\n\n## Usage\n\nSee \u003chttps://kitchen.ci/docs/drivers/openstack/\u003e for documentation.\n\n### Using `clouds.yaml`\n\nThis driver supports OpenStack's standard\n[`clouds.yaml`](https://docs.openstack.org/python-openstackclient/latest/configuration/index.html)\nclient configuration file. This allows you to use the same credentials and\nendpoint configuration that other OpenStack tools (like the `openstack` CLI)\nalready use, instead of duplicating them in `kitchen.yml`.\n\nThe driver searches for `clouds.yaml` in the standard locations:\n\n1. `OS_CLIENT_CONFIG_FILE` environment variable (if set)\n2. `clouds_yaml_path` driver config option (if set)\n3. Current directory (`./clouds.yaml`)\n4. `~/.config/openstack/clouds.yaml`\n5. `/etc/openstack/clouds.yaml`\n\nThe first file found is used. A `secure.yaml` file in the same search\nlocations is also loaded and merged, so you can split secrets out of\n`clouds.yaml` following the\n[standard convention](https://docs.openstack.org/openstacksdk/latest/user/config/configuration.html#splitting-secrets).\n\n#### Selecting a cloud\n\nSpecify which cloud entry to use in one of two ways:\n\n- Set `openstack_cloud` in `kitchen.yml` (takes precedence)\n- Set the `OS_CLOUD` environment variable\n\n#### Example `kitchen.yml`\n\n```yaml\ndriver:\n  name: openstack\n  openstack_cloud: mycloud\n  image_ref: ubuntu-22.04\n  flavor_ref: m1.small\n  key_name: my-keypair\n```\n\nOr, relying entirely on `OS_CLOUD`:\n\n```bash\nexport OS_CLOUD=mycloud\n```\n\n```yaml\ndriver:\n  name: openstack\n  image_ref: ubuntu-22.04\n  flavor_ref: m1.small\n  key_name: my-keypair\n```\n\nSettings specified in `kitchen.yml` always take precedence over values from\n`clouds.yaml`. For example, you can override just the region:\n\n```yaml\ndriver:\n  name: openstack\n  openstack_cloud: mycloud\n  openstack_region: RegionTwo\n```\n\n#### Using `OS_*` environment variables\n\nThe driver recognizes the standard OpenStack `OS_*` environment variables\n(e.g. from an `openrc` file). This means you can source your OpenStack\ncredentials and use them directly without any extra configuration in\n`kitchen.yml`:\n\n```bash\nsource openrc.sh\n```\n\n```yaml\ndriver:\n  name: openstack\n  image_ref: ubuntu-22.04\n  flavor_ref: m1.small\n  key_name: my-keypair\n```\n\nThe supported environment variables are:\n\n| Env var | Maps to |\n|---|---|\n| `OS_AUTH_URL` | `openstack_auth_url` |\n| `OS_USERNAME` | `openstack_username` |\n| `OS_PASSWORD` | `openstack_api_key` |\n| `OS_PROJECT_NAME` | `openstack_project_name` |\n| `OS_PROJECT_ID` | `openstack_project_id` |\n| `OS_USER_DOMAIN_NAME` | `openstack_user_domain` |\n| `OS_USER_DOMAIN_ID` | `openstack_user_domain_id` |\n| `OS_PROJECT_DOMAIN_NAME` | `openstack_project_domain` |\n| `OS_PROJECT_DOMAIN_ID` | `openstack_project_domain_id` |\n| `OS_DOMAIN_ID` | `openstack_domain_id` |\n| `OS_DOMAIN_NAME` | `openstack_domain_name` |\n| `OS_REGION_NAME` | `openstack_region` |\n| `OS_INTERFACE` | `openstack_endpoint_type` |\n| `OS_IDENTITY_API_VERSION` | `openstack_identity_api_version` |\n| `OS_APPLICATION_CREDENTIAL_ID` | `openstack_application_credential_id` |\n| `OS_APPLICATION_CREDENTIAL_SECRET` | `openstack_application_credential_secret` |\n| `OS_CACERT` | `ssl_ca_file` |\n\n#### Configuration precedence\n\nThe driver follows the upstream OpenStack SDK precedence order:\n\n1. **`kitchen.yml`** — explicit driver config always wins\n2. **`OS_*` env vars** — override `clouds.yaml` values\n3. **`clouds.yaml`** (merged with `secure.yaml`) — base configuration\n\n#### New driver config options\n\n| Option | Default | Description |\n|---|---|---|\n| `openstack_cloud` | `nil` | Name of the cloud entry in `clouds.yaml`. Falls back to the `OS_CLOUD` env var. |\n| `clouds_yaml_path` | `nil` | Explicit path to a `clouds.yaml` file, inserted into the search path. |\n\n## Development\n\nPull requests are very welcome! Make sure your patches are well tested.\nIdeally create a topic branch for every separate change you make. For\nexample:\n\n1. Fork the repo\n2. Create your feature branch (`git checkout -b my-new-feature`)\n3. Run the tests and rubocop, `bundle exec rake spec` and `bundle exec rake rubocop`\n4. Commit your changes (`git commit -am 'Added some feature'`)\n5. Push to the branch (`git push origin my-new-feature`)\n6. Create new Pull Request\n\n## Authors\n\nCreated by Jonathan Hartman\n\n## License\n\nApache 2.0 (see LICENSE.txt file)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftest-kitchen%2Fkitchen-openstack","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftest-kitchen%2Fkitchen-openstack","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftest-kitchen%2Fkitchen-openstack/lists"}