syntro_gmbh.silverstripe
Rol de Ansible: silverstripe
Descripción
Silverstripe es un marco de trabajo de código abierto versátil para sitios web. Este rol despliega una instalación de Silverstripe de tu elección en un servidor LAMP.
Las características clave de este rol incluyen:
- Requisitos mínimos para el despliegue -> despliega en cualquier lugar
- Retención de versiones -> retrocede rápidamente en caso de un error
- Despliegue sin tiempo de inactividad -> despliega sin interrumpir el uso
- Listo para CI -> especifica etiquetas o mantiene ramas actualizadas
- Amigable con copias de seguridad -> ejecuta scripts de copia de seguridad antes de actualizar y construir
Despliegue Sin Tiempo de Inactividad
Por defecto, este rol despliega cualquier versión sin tiempo de inactividad. Esto significa que los procesos de construcción y actualización se realizarán antes de que la base de código se enlace para ser utilizada por html/index.php
. Esto tiene algunas ventajas ya que ningún usuario queda excluido de usar el sitio, lo que hace que los despliegues sean posibles en momentos críticos de tiempo de actividad. Silverstripe, en la mayoría de los casos, puede ser desplegado de esta manera, ya que la estructura de la base de datos es en su mayoría compatible hacia atrás. Los únicos casos en el momento de escribir este archivo donde esto podría llevar a problemas son:
- Eliminación de DataObjects
- Silverstripe no elimina la tabla, pero la prefija con
deprecated_
- Silverstripe no elimina la tabla, pero la prefija con
- Cambio de valores de Enum
Estos escenarios son muy específicos y, en teoría, no deberían ocurrir, ya que sería un signo de una mala planificación por parte del desarrollador.
Sin embargo, esto también puede llevar a problemas en las copias de seguridad de la base de datos, ya que se debe tener un cuidado adicional para obtener copias consistentes. Esta responsabilidad recae en el usuario de este rol.
Instalación
ansible-galaxy install syntro_gmbh.silverstripe
Requisitos
- Composer
- Git
Dependencias
Ninguna, pero asegúrate de tener Composer y Git instalados en el host donde vas a desplegar.
Uso
Aparte de algunas variables requeridas, este rol puede ser utilizado para cualquier proyecto de Silverstripe. Echa un vistazo al archivo de defaults para tener una idea de lo que puedes personalizar.
La raíz web y los archivos generados
Este rol utiliza la siguiente estructura de directorios para servir tu aplicación:
{{ WorkingDir }}/
├── {{ current }}
│ ├── .htaccess
│ ├── index.php
│ ├── assets --> ../shared/assets
│ └── _resources --> ../releases/<current sha>/_resources
├── releases/
│ ├── <current sha>/
│ │ ├── .git
│ │ └── ...
│ └── <other sha>/
│ ├── .git
│ └── ...
├── shared/
│ └── assets/
└── logs/
Tu raíz web debería apuntar al directorio {{ WorkingDir }}/{{ current }}/
. Puedes configurar estos directorios usando silverstripe_working_dir
y silverstripe_current_dir_name
, respectivamente.
Construyendo y actualizando la base de datos y ejecutando copias de seguridad
Para que Silverstripe funcione con una nueva instalación, es necesario construir o actualizar la base de datos. Por defecto, este rol ejecuta la tarea estándar de construcción combinada con el parámetro flush=1
antes de actualizar cualquier archivo en la raíz web.
Puedes añadir más comandos, pero no olvides volver a añadir el comando de construcción usando silverstripe_provisioning_cmds
. Este es también el lugar para añadir cualquier comando de copia de seguridad que necesites. (Puedes usar nuestro rol de restic para instalar una utilidad de copia de seguridad y crear los scripts automáticamente). Al añadir estos scripts antes del paso de construcción, obtienes la versión más reciente de tu instalación en caso de que necesites retroceder.
Despliegue Sin Tiempo de Inactividad
Este rol despliega Silverstripe sin tiempo de inactividad. Esto significa que los procesos de construcción y actualización se realizarán antes de que la base de código se enlace para ser utilizada por index.php
. Esto ofrece algunas ventajas, ya que ningún usuario queda excluido del uso del sitio, lo que hace que los despliegues sean posibles en cualquier momento. Silverstripe, en la mayoría de los casos, puede ser desplegado de esta manera, ya que la estructura de la base de datos es en su mayoría compatible hacia atrás. Los únicos casos en el momento de escribir este archivo donde esto podría llevar a problemas son:
- Eliminación de DataObjects
- Silverstripe no elimina la tabla, sino que la prefija con
deprecated_
- Silverstripe no elimina la tabla, sino que la prefija con
- Cambio de valores de Enum
Estos escenarios son muy específicos y, en teoría, no deberían ocurrir, ya que sería un signo de mala planificación por parte del desarrollador. No obstante, siempre debes crear una copia de seguridad de la base de datos antes de actualizar.
Variables del Rol
Consulta el archivo de defaults para tener una idea de lo que puedes controlar.
Ejemplo mínimo de playbook
- hosts: all
vars:
silverstripe_project_repository: https://github.com/silverstripe/demo.silverstripe.org
silverstripe_project_version: master
silverstripe_ss_database_name: silverstripe
silverstripe_ss_database_username: root
silverstripe_ss_database_password: root
roles:
- silverstripe
Autor
- Matthias Leutenegger
Licencia
MIT
Copyright
(c) 2020, Syntro GmbH
ansible-galaxy install syntro_gmbh.silverstripe