syntro_gmbh.silverstripe
Ansible 角色:silverstripe
描述
Silverstripe 是一个多功能的开源网站框架。此角色可以将你选择的 Silverstripe 安装部署到 LAMP 服务器。
此角色的主要特性包括:
- 最小部署要求 -> 任何地方都可以部署
- 版本保留 -> 在出错时可以快速回滚
- 无停机部署 -> 部署时不影响使用
- 支持持续集成 -> 指定标签或保持分支最新
- 支持备份 -> 在刷新和构建之前运行备份脚本
无停机部署
默认情况下,此角色以无停机的方式部署任何版本。这意味着,构建和刷新过程会在实际代码库与 html/index.php
连接之前完成。这带来了一些好处,因为没有用户会被锁定,可以在关键时间进行部署。Silverstripe 在大多数情况下能够以这种方式部署,因为数据库结构大多向后兼容。撰写此说明时,可能会遇到问题的唯一情况有:
- 删除数据对象
- Silverstripe 不会删除表,而是前缀加上
deprecated_
- Silverstripe 不会删除表,而是前缀加上
- 更改枚举值
这些场景是非常特定的,理论上不应该发生,因为这意味着开发者的规划存在问题。
然而,这也可能导致数据库备份出现问题,因为需要额外小心,以确保一致的备份!这个责任由使用此角色的用户承担。
安装
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_dir
和 silverstripe_current_dir_name
配置这些目录。
构建和更新数据库以及运行备份
为了使 Silverstripe 在新安装中运行,必须构建或更新数据库。默认情况下,此角色在更新任何文件之前执行标准构建任务,并结合 flush=1
参数。
你可以添加更多命令,但不要忘记重新添加 使用 silverstripe_provisioning_cmds
的构建命令。这里也是添加你可能需要的任何备份命令的地方。(你可以使用我们的 restic 角色 来安装备份工具并自动创建脚本。)在构建步骤之前添加这些脚本,可以在需要回滚时获取你最新的安装版本。
无停机部署
此角色以无停机的方式部署 Silverstripe 版本。这意味着,构建和刷新的过程将在实际代码库与 index.php
连接之前完成。这带来了一些好处,因为没有用户会被锁定,可以在任何时间进行部署。Silverstripe 在大多数情况下能够以这种方式部署,因为数据库结构大多向后兼容。撰写此说明时,可能会遇到问题的唯一情况有:
- 删除数据对象
- Silverstripe 不会删除表,而是前缀加上
deprecated_
- Silverstripe 不会删除表,而是前缀加上
- 更改枚举值
这些场景是非常特定的,理论上不应发生,因为这意味着开发者的规划存在问题。尽管如此,在更新之前你仍然应该始终备份数据库。
角色变量
查看 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
ansible-galaxy install syntro_gmbh.silverstripe