{"id":15321508,"url":"https://github.com/zsais/ursula","last_synced_at":"2025-10-09T08:31:24.363Z","repository":{"id":34736555,"uuid":"38714867","full_name":"zsais/ursula","owner":"zsais","description":"Ansible playbooks for operating OpenStack - Powers Blue Box Cloud.","archived":false,"fork":true,"pushed_at":"2016-10-25T09:44:53.000Z","size":5871,"stargazers_count":1,"open_issues_count":3,"forks_count":1,"subscribers_count":20,"default_branch":"master","last_synced_at":"2025-01-27T05:33:51.995Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://www.blueboxcloud.com","language":"Python","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"scoop206/ursula","license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zsais.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2015-07-07T21:06:44.000Z","updated_at":"2016-10-25T09:44:58.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/zsais/ursula","commit_stats":null,"previous_names":[],"tags_count":34,"template":false,"template_full_name":null,"purl":"pkg:github/zsais/ursula","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zsais%2Fursula","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zsais%2Fursula/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zsais%2Fursula/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zsais%2Fursula/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zsais","download_url":"https://codeload.github.com/zsais/ursula/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zsais%2Fursula/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279001064,"owners_count":26082991,"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","status":"online","status_checked_at":"2025-10-09T02:00:07.460Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2024-10-01T09:11:16.542Z","updated_at":"2025-10-09T08:31:23.895Z","avatar_url":"https://github.com/zsais.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\u003cimg src=\"./ursula.png\" alt=\"Ursula\"\u003e\u003c/div\u003e\u003chr /\u003e\n\nUrsula provides a series of Ansible playbooks for installing, managing, and\nmaintaining OpenStack powered clouds.\n\nUrsula was originally created by a team at [Blue Box](https://www.blueboxcloud.com) and is\nreleased under the MIT License (MIT).\n\nThe `ceph-common`, `ceph-monitor`, and `ceph-osd` roles were originally taken from\n[ceph/ceph-ansible](https://github.com/ceph/ceph-ansible), but have since been\nmodified. `ceph/ceph-ansible` is released under the Apache License.\n\n# Installation\n\n## System Dependencies\n\nThe following system packages ( or their equivalents for your OS ) are\nrequired to run `ursula`:\n\n* python-pip\n* python-dev\n* libxml2-dev\n* libxslt-dev\n* libffi-dev\n* libssl-dev\n\n## Python Environment\n\nWe recommend using [virtualenv](http://virtualenv.readthedocs.org/en/latest/) or\n[virtualenvwrapper](https://virtualenvwrapper.readthedocs.org/en/latest/)\nto isolate your Python environment.\n\nIf you're new to python, the following will install `virtualenvwrapper` and set\nup a `virtualenv` for ursula:\n\n```bash\n$ pip install virtualenvwrapper\n$ source /usr/local/bin/virtualenvwrapper.sh\n$ mkvirtualenv ursula\n```\n\nNote: If you're using OSX El Capitan, you need to use ```pip install --ignore-installed six virtualenvwrapper``` to get pip to not attempt to uninstall the existing version of six which the system will not allow.\n\nYou will want to add `source /usr/local/bin/virtualenvwrapper.sh` to your shell startup file, changing the path to virtualenvwrapper.sh\ndepending on where it was installed by pip.\n\n```bash\necho \" \" \u003e\u003e .bash_profile (for OSX; .bashrc for various linux flavors)\necho \"#sourcing statement for virtualenvwrapper\" \u003e\u003e .bash_profile\necho \"source /usr/local/bin/virtualenvwrapper.sh\" \u003e\u003e .bash_profile\n```\n\nFrom now on to work with ursula you can run `$ workon ursula` to\nenter the `virtualenv`\n\n## Install ursula and dependencies:\n\nNow that your python environment is ready, you can clone ursula and install\nits prerequisites.\n\nYou'll need a modern version of pip, so if you're using a version \u003c7,\nrun:\n\n```\n$ pip install -U pip\n```\n\nNow you can continue cloning and installing ursula:\n\n```bash\n$ cd ~/development\n$ git clone git@github.com:blueboxgroup/ursula.git\n$ cd ursula\n$ pip install -r requirements.txt\n```\n\nThese steps will have installed `ursula-cli`, the various openstack clients, and our\npatched fork of `Ansible`.\n\n# ursula-cli\n\nUrsula was designed by [Blue Box](https://www.bluebox.net) to manage a large\nnumber of OpenStack deployments. In order to do this efficiently we've made\nsome changes to how `ansible` works. As part of these changes we have a\nwrapper tool called `ursula-cli` which was installed during the\n`pip install -r requirements.txt` above.\n\nMake sure `ursula-cli` is installed in your environment:\n\n```\nursula -h\nusage: ursula [-h] [--ursula-forward] [--ursula-test] [--ursula-debug]\n              environment playbook\n\nA CLI wrapper for ansible\n...\n...\n```\n\nThere are two mandatory fields required by `ursula-cli`.  The first is\n`environment` which will require some further explanation.\nThe second is `playbook` which will almost always be `site.yml`.\n\n## openstack-envs\n\nOne of the modifications that we have made to `Ansible` is the ability to have\na seperate path that includes all of the configuration options for your\nOpenStack deployment(s).   An example of this can be found in `/envs/example`\n\nIf you look in the `/envs/example` path, you'll see a `defaults.yml` file and a\nseries of directories each representing a different OpenStack deployment.\n\nWe then utilize the standard `Ansible` features by having `group_vars`,\n`host_vars`, and a `hosts` file.\n\nThere are also some `vagrant.yml` files scattered around.  These are helper\nfiles to make using `Vagrant` even easier with `ursula` to test your\nenvironments in VMs.\n\n### allinone\n\nThe simplest example deployment is `allinone` which is a single server\ndeployment that acts as both a `controller` and a `compute` node.\n\nWhether or not you're using `Vagrant` if you look in the\n`envs/example/allinone/vagrant.yml` file it will give you some hints on what\nyour server should look like.  If you do not wish to use `Vagrant` then you\nshould install Ubuntu 12.04 on a server and configure its networking as\ndescribed in the `vagrant.yml` file.\n\nNext, look in the `hosts` file.  It's very simple in this case due to the fact\nwe have only a single server.  This file combined with the `site.yml` playbook\ntells Ansible what roles to apply to which servers.\n\nFinally, we have the `group_vars/all.yml` file.  This contains values that will\noverride the `defaults.yml` in the parent directory.  For example, we're\ndisabling Percona replication by setting `percona.replication: False`.\n\n## Performing a deployment:\n\nFor the sake of simplicity, I recommend using `Vagrant` rather than `Manual` for your first install. \n\nIf you want to install manually, do not use `envs/examples/*` without modifications as it contains several circuit breakers such\nas invalid certificates and your installs will fail.\n\n### Manually\n\nIf you're not running `Vagrant` and have installed ubuntu onto a server and\nconfigured the networking then we need to tell our system how to talk to this\nnew server.  The easiest way is via an entry in your ssh config file in\n`~/.ssh/config`.\n\n```\nHost allinone\n  HostName 172.16.0.100\n  User ubuntu\n  IdentityFile ~/.ssh/private_key\n```\n\n```bash\n$ ursula envs/example/allinone site.yml\n```\n\n### Vagrant\n\nIf you're running `Vagrant`, we have a wrapper script that stands up the\nappropriate vagrant environment, saves it as an ssh config, and then calls\n`ursula` for you.\n\nTo deploy your `allinone` environment via `Vagrant` simply run:\n\n```bash\n$ ursula --provisioner=vagrant envs/example/allinone site.yml\n```\n\nNote: The default OS for ursula is Ubuntu Trusty. If you want Precise, set\nthe env var `URSULA_BOX_NAME` to the name of your precise vagrant\nbox before running vagrant.\n\n# More Docs\n\nSee the [/doc](https://github.com/blueboxgroup/ursula/tree/master/doc) directory of this repo.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzsais%2Fursula","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzsais%2Fursula","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzsais%2Fursula/lists"}