{"id":28578247,"url":"https://github.com/digitalocean/digitalocean-ceph-lab","last_synced_at":"2025-06-11T01:09:19.745Z","repository":{"id":34403665,"uuid":"153310238","full_name":"digitalocean/digitalocean-ceph-lab","owner":"digitalocean","description":"Terraform and Ansible automation to provision and configure a Ceph test environment on DigitalOcean.","archived":false,"fork":false,"pushed_at":"2022-02-16T19:26:06.000Z","size":37,"stargazers_count":11,"open_issues_count":2,"forks_count":5,"subscribers_count":142,"default_branch":"master","last_synced_at":"2025-01-15T00:22:23.580Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"HCL","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/digitalocean.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}},"created_at":"2018-10-16T15:34:32.000Z","updated_at":"2024-10-04T07:13:20.000Z","dependencies_parsed_at":"2022-08-08T01:00:28.299Z","dependency_job_id":null,"html_url":"https://github.com/digitalocean/digitalocean-ceph-lab","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/digitalocean%2Fdigitalocean-ceph-lab","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/digitalocean%2Fdigitalocean-ceph-lab/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/digitalocean%2Fdigitalocean-ceph-lab/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/digitalocean%2Fdigitalocean-ceph-lab/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/digitalocean","download_url":"https://codeload.github.com/digitalocean/digitalocean-ceph-lab/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/digitalocean%2Fdigitalocean-ceph-lab/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259178544,"owners_count":22817388,"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":"2025-06-11T01:09:18.801Z","updated_at":"2025-06-11T01:09:19.703Z","avatar_url":"https://github.com/digitalocean.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"# digitalocean-ceph-lab\n\n[![Build Status](https://travis-ci.org/digitalocean/digitalocean-ceph-lab.svg?branch=master)](https://travis-ci.org/digitalocean/digitalocean-ceph-lab)\n\nThis repository contains terraform and ansible automation for setting up a\ncomplete ceph test environment using DigitalOcean Droplets and Volumes. Once\nprovisioned, the environment can be used to run tests\nwith [teuthology](https://github.com/ceph/teuthology).\n\nThe provisioned test environment consists of:\n\n* One node running [paddles](https://github.com/ceph/paddles)\n  and [pulpito](https://github.com/ceph/pulpito), along with a dnsmasq server to\n  allow the test nodes to connect to each other via names instead of by IP.\n    - The paddles server listens only on the private network.\n    - The pulpito server listens is available on the public network.\n    - The dnsmasq server listens on all networks, and forwards requests to\n      systemd-resolved, allowing resolution of names listed in /etc/hosts.\n* One \"head node\", with teuthology installed, running the job queue and worker.\n* A configurable number of test nodes (default: 10), each with a configurable\n  number of volumes attached (default: 4).\n\nThe paddles/pulpito node and head node run Ubuntu 18.04. The image used for the\ntest nodes is configurable, defaulting to Ubuntu 14.04. Note that using a\nnon-Ubuntu image is unlikely to work.\n\nNote that the ansible portion of this repository can, with appropriate inventory\nfiles, be used on its own to set up a teuthology lab without the use of\nterraform. Terraform is used simply to create and bootstrap droplets for use in\nthe lab environment.\n\n## Dependencies\n\nYou will need:\n* [terraform](https://www.terraform.io/)\n* [ansible](https://www.ansible.com/)\n* [terraform-provisioner-ansible](https://github.com/radekg/terraform-provisioner-ansible) v2.0.1 or later\n\nThe provided Dockerfile will create a container image containing all of the\nabove.\n\n## Usage\n\nCreating a lab environment takes three simple steps:\n\n1. Create a terraform variables file containing the configuration for your lab\n   setup. It should set at least the following:\n    * `do_token` - A DigitalOcean API access token.\n    * `lab_name` - A unique name for your lab setup. This name will be used in\n      the names of resources created, allowing multiple lab setups to co-exist\n      within a single DO account, and also as the `lab_domain` for teuthology.\n    * `region` - The DigitalOcean region in which to create the lab setup.\n    * `ssh_pub_key` and `ssh_priv_key` - An SSH keypair to use for the lab\n      setup. This will be used both to connect to created droplets for\n      provisioning and for the droplets to connect to each other when running\n      tests. The key must not have a passphrase.\n        - NOTE: Both the public and private parts of the key end up on various\n          nodes in the created system. You may want to create a key specifically\n          for this purpose rather than using a key that can access other\n          important resources.\n2. Run `terraform init` to initialize the terraform environment.\n3. Run `terraform apply -var-file=\u003cyour vars file\u003e` to set up the environment.\n\nOnce the above have been run, you should be able to access pulpito on port 8081\nof the paddles/pulpito node, and submit tests as described in the next section.\n\nIf, at some point, one of your test nodes becomes unusable (e.g., due to a test\nperforming a bad kernel upgrade or config change), you can easily re-spin it\nusing terraform. For example, to re-create test node 2, you would run:\n\n```console\n$ terraform taint digitalocean_droplet.test_node.2\n$ terraform apply -var-file=\u003cyour-vars-file\u003e`\n```\n\nThis will destroy the existing test node, create a new one, and configure it to\ntake the old node's place in the test system, including updating DNS and the\nnode's entry in paddles.\n\n## Running Tests\n\nThe easiest way to submit jobs is from the head node:\n\n1. SSH to the head node.\n2. Become the teuthology user: `sudo -u teuthology -i`\n3. Use `teuthology-suite` to submit jobs.\n\nOf course, with an appropriate teuthology configuration one should also be able\nto submit jobs remotely.\n\n## Contributing\n\nContributions are welcome, in the form of either issues or pull requests. Plesae\nsee the [contribution guidelines](CONTRIBUTING.md) for details.\n\n## License\n\nCopyright 2018 DigitalOcean\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at:\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdigitalocean%2Fdigitalocean-ceph-lab","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdigitalocean%2Fdigitalocean-ceph-lab","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdigitalocean%2Fdigitalocean-ceph-lab/lists"}