{"id":50324842,"url":"https://github.com/uq-rcc/ansible-swarm-clowder","last_synced_at":"2026-05-29T05:04:18.541Z","repository":{"id":124109399,"uuid":"356239160","full_name":"UQ-RCC/ansible-swarm-clowder","owner":"UQ-RCC","description":"Set up swarm and clowder using ansible","archived":false,"fork":false,"pushed_at":"2026-04-23T21:26:12.000Z","size":164,"stargazers_count":2,"open_issues_count":10,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-04-23T23:28:09.995Z","etag":null,"topics":["ansible","clowder","pitschi","swarm"],"latest_commit_sha":null,"homepage":"","language":"Jinja","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/UQ-RCC.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-04-09T11:01:31.000Z","updated_at":"2026-04-23T21:26:16.000Z","dependencies_parsed_at":null,"dependency_job_id":"efac8c2c-7084-4b00-82f2-07d6d6974629","html_url":"https://github.com/UQ-RCC/ansible-swarm-clowder","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/UQ-RCC/ansible-swarm-clowder","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UQ-RCC%2Fansible-swarm-clowder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UQ-RCC%2Fansible-swarm-clowder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UQ-RCC%2Fansible-swarm-clowder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UQ-RCC%2Fansible-swarm-clowder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/UQ-RCC","download_url":"https://codeload.github.com/UQ-RCC/ansible-swarm-clowder/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UQ-RCC%2Fansible-swarm-clowder/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33637487,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-29T02:00:06.066Z","response_time":107,"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":["ansible","clowder","pitschi","swarm"],"created_at":"2026-05-29T05:04:01.922Z","updated_at":"2026-05-29T05:04:18.530Z","avatar_url":"https://github.com/UQ-RCC.png","language":"Jinja","funding_links":[],"categories":[],"sub_categories":[],"readme":"This repository performs a complete deployment of Clowder in Docker Swarm on Openstack using Ansible. \nOnce deployed, the following services are going to be created: \n\n* a mongodb cluster spanning across the slave nodes\n* an elasticearch cluster spanning across the slave nodes\n* clowder instances spanning across the slave nodes\n* traefik instances spanning across master nodes\n* a glusterfs shared amongst slave nodes for uploads, thumbnails and previews\n\nMakefile is used to control all the steps. \nThis is the simplified version of github.com/UQ-RCC/ansible-swarm-clowder. \n\nThanks to Zane Van Iperen for his work on Makefile and templates. \n\n# Deployment steps\n\n## Requirements\n\n* You need to have openstack 5.2.0 installed (apt install python3-openstackclient)\n* Download the Openstack RC file\n* Ansible version 2.9 \n* Make installed, in ubuntu: sudo apt-get install build-essential\n* Python 3\n* Create vars/secrets.yml based on vars/secrets.yml.example\n\n## Create HEAT stack for Docker Swarm\n\n* edit setupenv-openstack. Make sure you get the IMAGE_ID and OS_PROJECT_NAME right.The IMAGE_ID should be a Ubuntu image.  \n\n* **make stack**\n* Create a FQDN that points to the first master node, this FQDN should match clowder_host field in vars/secrets.yml\n\n## Deploy Docker swarm\n\n* edit Clowder's custom.conf and custom.play.plugin at roles/clowder-swarm-setup/templates. \n* **make init-swarm**\n* To inspect swarm cluster: **make inspect-swarm**\n\n\n## Deploy Clowder in swarm\n\n* **make deploy-clowder**\n\n## Destroy Clowder in swarm\n\n* **make destroy-clowder**\n\n## Destroy swarm cluster\n\n* **make destroy-swarm**\n\n## Restart glusterd and autofs\n\n* **make reloadautofs**\n\n## Check/restart gluster volumes\n\nOn worker/slave nodes\n\n* **sudo gluster volume status all**\n* **sudo gluster volume stop gfs**\n* **sudo gluster volume start gfs**\n\ngfs volume status should show 3 bricks and 3 daemons online\n\n## Check clowder overlay network\n\n* Network should be okay if each traefik/xapi container has an IP address and 6 peers\n\n  * **make inspect-network**\n\n## Docker system prune\n\n* Prune orphaned docker images, containers, networks, build cache, and restart\n  docker daemon. Cleans up orphaned resources in docker system on each node.\n\n  * **make prune-docker**\n\n## Redeploy xxapi1 and xxapi2\n\n1. remove xapi stack on xxapi1 and xxapi2\n\n   * **make xxapi-destroy**\n\n   optional\n\n   * **docker service ls**\n   * **docker stack rm xapi**\n   * **docker ps**\n   * **docker system prune -f**\n   * **docker network create clowder --driver overlay --scope swarm**\n\n2. deploy from github/ansible-swarm-clowder\n\n   * **make xxapi-deploy**\n\n## Delete stack\n\n* **make destroy-stack**\n\n# Deployment approaches\n\n## Set target environment\n\nTo change the target environment for deployment steps (requires soft-links to\ninventory.yml and secrets.yml)\n\n* For production deployments use\n\n  * **make setenv-prod**\n\n* For development deployments use\n\n  * **make setenv-dev**\n\n  To do Clowder ingest testing in dev, the test collections also need to be\n  mounted\n\n  * **make mount**\n\n## App redeploy only\n\n1. Remove app\n\n   * **make destroy-clowder**\n\n2. Deploy app\n\n   * **make deploy-clowder**\n\n## App and swarm redeploy\n\n1. Remove app\n\n   * **make destroy-clowder**\n\n2. Remove swarm cluster\n\n   * **make destroy-swarm**\n\n3. Build swarm cluster\n\n   * **make init-swarm**\n\n4. Deploy app\n\n   * **make deploy-clowder**\n\n## Full redeploy with docker prune\n\n1. Remove app\n\n   * **make destroy-clowder**\n\n2. Remove swarm cluster\n\n   * **make destroy-swarm**\n\n3. Prune docker\n\n   * **make prune-docker**\n\n4. Restart gluster and autofs\n\n   * **make reloadautofs**\n\n5. Build swarm cluster\n\n   * **make init-swarm**\n\n6. Deploy app\n\n   * **make deploy-clowder**\n\n# Node apt-updates and reboots\n\nRemove app, swarm cluster, then stop gfs volume\n\n   * **make gfs-stop**\n   * **make gfs-status**\n   * **make apt-update**\n   * **make reboot**\n   * **mark uptime**\n   * **make gfs-start**\n   * **make gfs-status**\n\nThen build swarm and deploy app\n\nFor xxapi apt-update and reboot\n\n   * **make xxapi-apt-update**\n   * **make xxapi-reboot**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fuq-rcc%2Fansible-swarm-clowder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fuq-rcc%2Fansible-swarm-clowder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fuq-rcc%2Fansible-swarm-clowder/lists"}