{"id":21357826,"url":"https://github.com/rcbops/ansible-swift-private-cloud","last_synced_at":"2025-10-07T06:42:14.082Z","repository":{"id":11294292,"uuid":"13707395","full_name":"rcbops/ansible-swift-private-cloud","owner":"rcbops","description":"Provision and configure swift private cloud cookbooks.","archived":false,"fork":false,"pushed_at":"2014-02-14T21:26:53.000Z","size":249,"stargazers_count":8,"open_issues_count":0,"forks_count":6,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-03-16T06:15:28.871Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rcbops.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-10-19T19:32:17.000Z","updated_at":"2016-04-05T20:06:12.000Z","dependencies_parsed_at":"2022-09-01T10:51:25.737Z","dependency_job_id":null,"html_url":"https://github.com/rcbops/ansible-swift-private-cloud","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/rcbops/ansible-swift-private-cloud","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rcbops%2Fansible-swift-private-cloud","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rcbops%2Fansible-swift-private-cloud/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rcbops%2Fansible-swift-private-cloud/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rcbops%2Fansible-swift-private-cloud/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rcbops","download_url":"https://codeload.github.com/rcbops/ansible-swift-private-cloud/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rcbops%2Fansible-swift-private-cloud/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278734435,"owners_count":26036404,"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-07T02:00:06.786Z","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-11-22T05:12:33.499Z","updated_at":"2025-10-07T06:42:14.038Z","avatar_url":"https://github.com/rcbops.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"Ansible Swift Install\n=====================\n\nThis repo contains a set of Ansible playbooks to fire up the [Swift Private Cloud](https://github.com/rcbops-cookbooks/swift-private-cloud) Chef cookbooks in the reference implementation.\n\nQuick Install\n=============\n\nInstall Ansible and PyRax\n-------------------------\n\n    $ [sudo] pip install ansible\n    $ [sudo] pip install markupsafe\n    $ [sudo] pip install pyrax\n\nCreate a default hosts file for ansible.\n\n    # file: /etc/ansible/hosts\n\t[local]\n\tlocalhost\n\t\nProvision Servers in Rackspace Public Cloud\n-------------------------------------------\n\nThis repo includes a playbook to provision a set of Rackspace Cloud Servers. It will create:\n\n* Isolated Network ( \"swift_management\", \"192.168.122.0/24\" )\n* Chef Server x 1\n* Management Server x 1\n* Storage Servers x 3\n* Proxy Servers x 2\n\nEach server will belong to PublicNet, ServiceNet and the swift_management network.\n\nFirst, ensure you have a credentials file configured with your `username` and `api_key`:\n\n    # file: ~/.rackspace_cloud_credentials\n    [rackspace_cloud]\n    username = yourusername\n    api_key = yourapikey\n\nWe're assuming you have an `~/.ssh/id_rsa.pub` and it will be uploaded to the root account.\n\nThen run the `rackspace.yml` playbook:\n\n    $ ansible-playbook rackspace.yml\n\nWhen this completes, it will create a hosts inventory file called `rackapace-swift`:\n\n    [management-server]\n    192.0.2.2\n\n    [storage-servers]\n    192.0.2.3\n    192.0.2.4\n    192.0.2.5\n\n    [proxy-servers]\n    192.0.2.6\n    192.0.2.7\n\n    [chef-server]\n    192.0.2.1\n\n    [chef-clients:children]\n    management-server\n    proxy-servers\n    storage-servers\n\nBy default this will spin up CentOS images. To use Ubuntu instead, override the image variable:\n\n    $ ansible-playbook rackspace.yml -e image=25de7af5-1668-46fb-bd08-9974b63a4806\n\nThe following options can be overriden using `-e`:\n\n* `image`: Set the glance image to be used. Default: e0ed4adb-3a00-433e-a0ac-a51f1bc1ea3d (CentOS 6.4)\n* `flavor`: Set the flavor to be used. Default: 4  (2GB Standard Instance)\n* `region`: Set the region to operate in. Default: IAD\n* `prefix`: Set the prefix when naming servers/inventory files. Default: \"\"\n\nOnce complete, ensure you can ssh to each instance properly:\n\n    $ ansible all -i rackspace-swift -m command -a \"whoami\"\n\nAdditional provision playbooks will be created on an as needed basis.\n\nYou can also create your own hosts inventory file and point it to already existing servers as long as the following are true:\n\n* the group names match the above names\n* you've already configured ssh public key access for the root account\n\nProvision Servers in Vagrant\n----------------------------\n\nThis repo includes a playbook to provision a set of servers locally using Vagrant/VirtualBox. It will create:\n\n* Chef Server x 1\n* Management Server x 1\n* Storage Servers x 3\n* Proxy Servers x 2\n\nEach server will have 3 interfaces: eth0 (NAT), eth2 (Host Only 10.10.122.x), and eth3 (Host Only 192.168.122.x)\n\nFirst, ensure you have a working VirtualBox/Vagrant install.\nWe're assuming you have an `~/.ssh/id_rsa.pub` and it will be uploaded to the root account.\n\nThen run the `vagrant.yml` playbook:\n\n    $ ansible-playbook vagrant.yml\n\nThis will create an inventory file with the same groups specified above and wil be named `vagrant-swift`.\n\nBy default, servers will be created usingthe Puppet Labs CentOS 6.4 base image. To use Ubuntu instead, override the `box` and `box_url` variables:\n\n    $ ansible-playbook vagrant.yml -e box=\"Puppetlabs Ubuntu 12.04 x86_64\" box_url=\"http://puppet-vagrant-boxes.puppetlabs.com/ubuntu-server-12042-x64-vbox4210-nocm.box\"\n\nConfigure Servers\n-----------------\n\nTo configure the servers in the inventory file, run the `site.yml`:\n\n    $ ansible-playbook -i rackspace-swift site.yml\n\nThis will:\n\n* Install Chef Server on any servers in the `chef-server` group.\n* Install Chef Client on any servers in the `chef-clients` group, including configuring and registering nodes to talke to the chef server.\n* Run the `spc-starter-controller` chef role on server in the `management-server` group.\n* Run the `spc-starter-storage` chef role on the servers in the `storage-servers` group.\n* Run the `spc-starter-proxy` chef role on the servers in the `proxy-severs` group.\n* Re-run the `spc-starter-controller` chef role on server in the `management-server` group to gather all the other nodes.\n* Re-run the `spc-starter-proxy` chef role on the proxy servers again to propgate all memcached servers addresses.\n\nWhile running `site.yml` runs everything, you can also run them role by role:\n\n    $ ansible-playbook -i rackspace-swift chef-server.yml\n    $ ansible-playbook -i rackspace-swift chef-clients.yml\n    $ ansible-playbook -i rackspace-swift management-server.yml\n    ...\n\n...and even server by server:\n\n    $ ansible-playbook -i rackspace-swift storage-servers.yml --limit 192.0.2.3\n\nRunning Tests\n-------------\n\nThis repository includes a `test.yml` playbook/role that runs all of the tests that are being run in Jenkins against the current inventory/cluster.\n\n    $ ansible-playbook -i rackspace-swift test.yml\n\nCaveat Executor\n===============\n\nThis is just a first pass. Batteries not included. We are making some assumptions:\n\n* The isolated network being created matches the swift environment file: `192.168.122.0/24`\n* If you use your own servers instead, you have one network interface matching `192.168.122.0/24`\n* You can root ssh to these machines using ssh public keys. (This can probably be changed via `ansible.cfg` or command line args)\n* You're running CentOS 6.4. Ubuntu 12.04 needs to be cussed out.\n\nMany things are hard coded but will become more flexible in the future as they slowly move from cookbooks into playbooks. Not responsible if your dog catches fire or your significant other files for divorce.\n\nRepository Structure\n====================\n\nThis repository is configured close to the [Ansible Best Practices](http://www.ansibleworks.com/docs/playbooks_best_practices.html#directory-layout) with the exception of the `provision` folder. This may become a role in the future, but I didn't want to intermingle it and cause confusion right now.\n\nThe roles in this repo mimic the top level recipes in the Chef cookbooks. If we move forward with Ansible, we can just move things from the recipes into the exists top level roles without having to change the site/role playbooks.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frcbops%2Fansible-swift-private-cloud","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frcbops%2Fansible-swift-private-cloud","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frcbops%2Fansible-swift-private-cloud/lists"}