{"id":44698012,"url":"https://github.com/syntro-opensource/ansible.silverstripe","last_synced_at":"2026-02-15T08:35:42.885Z","repository":{"id":39892330,"uuid":"300694516","full_name":"syntro-opensource/ansible.silverstripe","owner":"syntro-opensource","description":"Ansible role to deploy silverstripe","archived":false,"fork":false,"pushed_at":"2024-06-13T05:08:48.000Z","size":67,"stargazers_count":1,"open_issues_count":4,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-08T19:02:16.220Z","etag":null,"topics":["ansible","ci","deployment-automation","silverstripe"],"latest_commit_sha":null,"homepage":"","language":"Jinja","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/syntro-opensource.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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}},"created_at":"2020-10-02T17:50:44.000Z","updated_at":"2024-05-15T17:22:58.000Z","dependencies_parsed_at":"2024-05-16T04:27:12.821Z","dependency_job_id":"8c078578-12ff-42e1-9943-43eb2afdc5a3","html_url":"https://github.com/syntro-opensource/ansible.silverstripe","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/syntro-opensource/ansible.silverstripe","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/syntro-opensource%2Fansible.silverstripe","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/syntro-opensource%2Fansible.silverstripe/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/syntro-opensource%2Fansible.silverstripe/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/syntro-opensource%2Fansible.silverstripe/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/syntro-opensource","download_url":"https://codeload.github.com/syntro-opensource/ansible.silverstripe/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/syntro-opensource%2Fansible.silverstripe/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29473718,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-15T06:58:05.414Z","status":"ssl_error","status_checked_at":"2026-02-15T06:58:05.085Z","response_time":118,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":["ansible","ci","deployment-automation","silverstripe"],"created_at":"2026-02-15T08:35:40.628Z","updated_at":"2026-02-15T08:35:42.877Z","avatar_url":"https://github.com/syntro-opensource.png","language":"Jinja","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Ansible Role: silverstripe\n\n[![Ansible Role](https://img.shields.io/ansible/role/51272?logo=ansible)](https://galaxy.ansible.com/syntro_gmbh/silverstripe)\n![GitHub release (latest by date)](https://img.shields.io/github/v/release/syntro-opensource/ansible.silverstripe)\n![Molecule test](https://github.com/syntro-opensource/ansible.silverstripe/workflows/Molecule%20test/badge.svg)\n[![Ansible Quality Score](https://img.shields.io/ansible/quality/51272?logo=ansible)](https://galaxy.ansible.com/syntro_gmbh/silverstripe)\n[![Ansible Role](https://img.shields.io/ansible/role/d/51272?color=success\u0026logo=ansible)](https://galaxy.ansible.com/syntro_gmbh/silverstripe)\n\n## Description\n\n[Silverstripe](https://www.silverstripe.org) is a versatile open source framework\nfor websites. This role deploys a Silverstripe installation of your choice to a\nLAMP server.\n\nKey features of this role include:\n* **Minimal reqiurements for deployment** *-\u003e deploy anywhere*\n* **Release retention** *-\u003e roll back quickly in the case of an error*\n* **Downtimeless deployment** *-\u003e deploy without interrupting usage*\n* **CI ready** *-\u003e specify tags or keep branches up to date*\n* **Backup friendly** *-\u003e run backup scripts before flushing and building*\n\n\n### Downtimeless Deployment\n\nBy default, this role deploys any version downtimeless. This means, that the\nbuild and flush processes will happen before the actual codebase is linked to\nbe used by `html/index.php`. This brings some advantages as no user is locked\nout from using the site which makes deployments possible during uptime-crucial\ntimes. Silverstripe is in most cases capable of being deployed this way, as the\ndatabase structure is mostly backwards compatible. The only times at the time of\nwriting this readme where this could lead to problems are:\n\n* Removing DataObjects\n  * Silvertripe dosen't remove the Table, but prefixes it with `deprecated_`\n* Changing Enum values\n\nThese scenarios are very specific and should in theory not happen as it would\nbe a sign of bad planning on the developer side.\n\nHowever, this may also lead to problems database backups, as additional care\nhas to be taken in order to get consistent backups! This responsibility is\nto be taken by the user of this role.\n\n\n## Installation\n```\nansible-galaxy install syntro_gmbh.silverstripe\n```\n\n## Requirements\n\n* Composer\n* Git\n\n## Dependencies\n\nNone, but make sure to have composer and git installed on the host you are deploying to.\n\n## Usage\nApart from a few required variables, this role can simply be used for any\nsilverstripe project. Have a look on the [defaults](defaults/main.yml) file\nto get an idea of what you can customize.\n\n### The webroot and the files generated\nThis role uses the following directory structure to serve your application:\n\n```\n{{ WorkingDir }}/\n├── {{ current }}\n│   ├── .htaccess\n│   ├── index.php\n│   ├── assets --\u003e ../shared/assets\n│   └── _resources --\u003e ../releases/\u003ccurrent sha\u003e/_resources\n├── releases/\n│   ├── \u003ccurrent sha\u003e/\n│   │   ├── .git\n│   │   └── ...\n│   └── \u003cother sha\u003e/\n│       ├── .git\n│       └── ...\n├── shared/\n│   └── assets/\n└── logs/\n```\n\nyour webroot should point to the `{{ WorkingDir }}/{{ current }}/` directory.\nYou can configure these directories using [`silverstripe_working_dir`](defaults/main.yml)\nand [`silverstripe_current_dir_name`](defaults/main.yml), respectively.\n\n\n### Building and updating the database and running backups\nIn order to get Silverstripe working with a new install, one has to build or\nupdate the database. By default, this role executes the standard build\ntask combined with the `flush=1` parameter before updating any files in the\nwebroot.\n\nYou can add more commands, but **don't forget to re-add** the build command\nusing the [`silverstripe_provisioning_cmds`](defaults/main.yml). This is also\nthe place to add any backup commands you might need. (You might use our\n[restic role](https://github.com/arillso/ansible.restic) to install a backup\nutility and create the scripts automatically.) by adding these scripts before\nthe build step, you get the most recent version of your installation in case\nyou need to roll back.\n\n### Downtimeless deployment\nThis role deploys silverstripe version downtimeless. This means, that the\nbuild and flush processes will happen before the actual codebase is linked to\nbe used by `index.php`. This brings some advantages as no user is locked\nout from using the site which makes deployments possible at any time.\nSilverstripe is in most cases capable of being deployed this way, as the\ndatabase structure is mostly backwards compatible. The only times at the time of\nwriting this readme where this could lead to problems are:\n\n* Removing DataObjects\n  * Silvertripe dosen't remove the Table, but prefixes it with `deprecated_`\n* Changing Enum values\n\nThese scenarios are very specific and should in theory not happen as it would\nbe a sign of bad planning on the developer side. Nevertheless, you should always\ncreate a backup of the database before updating.\n\n\n## Role Variables\nCheck the [defaults](defaults/main.yml) file to get an idea of what you can\ncontrol.\n\n## Minimal example playbook\n\n```yaml\n- hosts: all\n  vars:\n    silverstripe_project_repository: https://github.com/silverstripe/demo.silverstripe.org\n    silverstripe_project_version: master\n    silverstripe_ss_database_name: silverstripe\n    silverstripe_ss_database_username: root\n    silverstripe_ss_database_password: root\n  roles:\n    - silverstripe\n```\n\n\n## Author\n\n- Matthias Leutenegger\n\n## License\n\nMIT\n\n## Copyright\n\n(c) 2020, Syntro GmbH\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsyntro-opensource%2Fansible.silverstripe","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsyntro-opensource%2Fansible.silverstripe","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsyntro-opensource%2Fansible.silverstripe/lists"}