syntro_gmbh.silverstripe

Ansible 角色:silverstripe

Ansible 角色 最新 GitHub 发布 Molecule 测试 Ansible 质量得分 Ansible 角色

描述

Silverstripe 是一个多功能的开源网站框架。此角色可以将你选择的 Silverstripe 安装部署到 LAMP 服务器。

此角色的主要特性包括:

  • 最小部署要求 -> 任何地方都可以部署
  • 版本保留 -> 在出错时可以快速回滚
  • 无停机部署 -> 部署时不影响使用
  • 支持持续集成 -> 指定标签或保持分支最新
  • 支持备份 -> 在刷新和构建之前运行备份脚本

无停机部署

默认情况下,此角色以无停机的方式部署任何版本。这意味着,构建和刷新过程会在实际代码库与 html/index.php 连接之前完成。这带来了一些好处,因为没有用户会被锁定,可以在关键时间进行部署。Silverstripe 在大多数情况下能够以这种方式部署,因为数据库结构大多向后兼容。撰写此说明时,可能会遇到问题的唯一情况有:

  • 删除数据对象
    • Silverstripe 不会删除表,而是前缀加上 deprecated_
  • 更改枚举值

这些场景是非常特定的,理论上不应该发生,因为这意味着开发者的规划存在问题。

然而,这也可能导致数据库备份出现问题,因为需要额外小心,以确保一致的备份!这个责任由使用此角色的用户承担。

安装

ansible-galaxy install syntro_gmbh.silverstripe

需求

  • Composer
  • Git

依赖

无,但请确保在你要部署的主机上安装 Composer 和 Git。

用法

除了几个必需的变量,此角色可以简单地用于任何 Silverstripe 项目。查看 defaults 文件以了解你可以自定义的内容。

webroot 和生成的文件

此角色使用以下目录结构来服务你的应用程序:

{{ WorkingDir }}/
├── {{ current }}
│   ├── .htaccess
│   ├── index.php
│   ├── assets --> ../shared/assets
│   └── _resources --> ../releases/<current sha>/_resources
├── releases/
│   ├── <current sha>/
│   │   ├── .git
│   │   └── ...
│   └── <other sha>/
│       ├── .git
│       └── ...
├── shared/
│   └── assets/
└── logs/

你的 webroot 应该指向 {{ WorkingDir }}/{{ current }}/ 目录。你可以分别使用 silverstripe_working_dirsilverstripe_current_dir_name 配置这些目录。

构建和更新数据库以及运行备份

为了使 Silverstripe 在新安装中运行,必须构建或更新数据库。默认情况下,此角色在更新任何文件之前执行标准构建任务,并结合 flush=1 参数。

你可以添加更多命令,但不要忘记重新添加 使用 silverstripe_provisioning_cmds 的构建命令。这里也是添加你可能需要的任何备份命令的地方。(你可以使用我们的 restic 角色 来安装备份工具并自动创建脚本。)在构建步骤之前添加这些脚本,可以在需要回滚时获取你最新的安装版本。

无停机部署

此角色以无停机的方式部署 Silverstripe 版本。这意味着,构建和刷新的过程将在实际代码库与 index.php 连接之前完成。这带来了一些好处,因为没有用户会被锁定,可以在任何时间进行部署。Silverstripe 在大多数情况下能够以这种方式部署,因为数据库结构大多向后兼容。撰写此说明时,可能会遇到问题的唯一情况有:

  • 删除数据对象
    • Silverstripe 不会删除表,而是前缀加上 deprecated_
  • 更改枚举值

这些场景是非常特定的,理论上不应发生,因为这意味着开发者的规划存在问题。尽管如此,在更新之前你仍然应该始终备份数据库。

角色变量

查看 defaults 文件以了解你可以控制的内容。

最小示例剧本

- 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

作者

  • Matthias Leutenegger

许可证

MIT

版权

(c) 2020, Syntro GmbH

关于项目

Role to deploy a Silverstripe installation.

安装
ansible-galaxy install syntro_gmbh.silverstripe
许可证
mit
下载
1.1k