bmeme.drupal
Ansible 角色: Drupal
创建、安装和构建一个 Drupal 项目。
这是 Bmeme 发布的第一个 Ansible 角色,实际上在我们的 Drupal 开发过程中使用。 它受到了我们通常使用的其他优秀角色的启发:
要求
要正确使用此角色,您需要一个经典的 LAMP/LEMP 堆栈:
- 一个标准的 Web 服务器(推荐使用 Apache 或 Nginx)
- MySQL/PostgreSQL 数据库
- PHP 解释器(7.x 或最新版本)
- Composer(推荐使用
geerlingguy.composer
)
Drush 是此角色在您的 Drupal 项目中需要的依赖。
依赖
community.mysql
集合community.general
集合
安装
这是一个通过 Ansible Galaxy 分发的 Ansible 角色。 要安装此角色,您可以使用以下命令。
$ ansible-galaxy install bmeme.drupal
更新
如果您想更新角色,在安装时需要传递 --force 参数。请查看以下命令:
$ ansible-galaxy install --force bmeme.drupal
预发布版本
这个角色有一个预发布版本(称为 0.5-beta1),使用不同的工作流程和变量方案。 此版本是 完全不推荐使用 的,仅在 Bmeme 中用于向后兼容,__请不要使用它__!
角色变量
可用的变量:
变量名称 | 描述 | 默认值 |
---|---|---|
drupal_project_dir |
Drupal 项目的绝对路径 | /var/www/html |
drupal_project_owner |
拥有项目的系统用户 | www-data |
drupal_project_group |
拥有项目的系统组 | www-data |
drupal_project_composer_project |
您想用于全新安装的 Drupal composer 项目 | drupal/recommended-project |
drupal_project_web_root |
存储 Drupal 核心的目录,可能依赖于 Drupal 发行版 | web |
drupal_site_name |
Drupal 站点名称。由 drush 在 Drupal 安装期间使用。 | 您的新 Drupal 实例 |
drupal_site_mail |
Drupal 站点邮件。由 drush 在 Drupal 安装期间使用。 | [email protected] |
drupal_site_lang |
Drupal 站点默认语言。由 drush 在 Drupal 安装期间使用。 | en |
drupal_account_mail |
Drupal 帐户邮件。由 drush 在 Drupal 安装期间使用。 | 与 drupal_site_mail 相同 |
drupal_account_name |
Drupal 帐户名称。由 drush 在 Drupal 安装期间使用。 | admin |
drupal_account_pass |
Drupal 帐户密码。由 drush 在 Drupal 安装期间使用。 | admin |
drupal_db_schema |
Drupal 将使用的数据库模式。可用选项: mysql 或 pgsql |
mysql |
drupal_db_name |
数据库名称。由 drush 在 Drupal 安装期间使用。 | drupal |
drupal_db_user |
数据库用户。由 drush 在 Drupal 安装期间使用。 | drupal |
drupal_db_pass |
数据库用户密码。由 drush 在 Drupal 安装期间使用。 | drupal |
drupal_db_host |
数据库主机地址。由 drush 在 Drupal 安装期间使用。 | 127.0.0.1 |
drupal_db_port |
数据库主机端口。由 drush 在 Drupal 安装期间使用。 | 3306 |
drupal_profile |
Drupal 安装配置文件。请参见 此问题 | minimal |
drupal_composer_nodev |
Composer "nodev" 选项。布尔值 | false |
drupal_composer_prefer_dist |
Composer "prefer-dist" 选项。布尔值 | false |
drupal_composer_scaffold_nonamespace |
使用无命名空间的 composer 安装 Drupal Scaffold。布尔值 | false |
工作流程
此角色执行三项主要任务:
- create: 使用 composer 创建一个全新的 Drupal 项目:您可以使用
drupal_project_composer_project
变量自定义 composer 项目。 此角色会自动识别 Drupal 项目是否已经存在,并跳过此任务集。 - install: 使用 drush 安装 Drupal 实例。在过程结束时,Drupal 配置会自动导出到
{{ drupal_project_dir }}/config/sync
目录。 此角色会自动识别是否已存在 Drupal 安装,并跳过此任务集。 - build: 通过 drush 根据现有导出配置构建 Drupal 实例。 它会自动识别配置并执行构建任务集。
从零开始时,仅会执行 create 和 install 任务。
钩子
您可以使用可用的钩子添加自定义任务:
drupal_before_create
: 在 create 任务集之前执行。如果已经存在 Drupal 项目,则跳过此钩子。drupal_after_create
: 在 create 任务集之后执行。如果已经存在 Drupal 项目,则跳过此钩子。drupal_before_install
: 在 install 任务集之前执行。如果已经有 Drupal 配置,则跳过此钩子。drupal_after_install
: 在 install 任务集之后执行。如果已经有 Drupal 配置,则跳过此钩子。drupal_before_build
: 在 build 任务集之前执行。如果没有可用的 Drupal 配置,则跳过此钩子。drupal_after_build
: 在 build 任务集之后执行。如果没有可用的 Drupal 配置,则跳过此钩子。
Bmeme 的工作方式
Bmeme 使用此角色自动化 Drupal 项目的创建/安装/构建操作,在其开发过程中。我们使用 docker 作为开发环境,包括本地和远程测试实例。
该角色在我们的 docker 镜像 php
中执行,链接 这里。
相同的镜像也被 molecule 测试角色使用。
依赖
无
示例剧本
- hosts: webserver
vars_files:
- vars/main.yml
roles:
- geerlingguy.apache
- geerlingguy.mysql
- geerlingguy.php-versions
- geerlingguy.php
- geerlingguy.php-mysql
- geerlingguy.composer
- bmeme.drupal
在 vars/main.yml
中
drupal_project_dir: /path/to/my/project
drupal_site_name: 我很棒的 Drupal 实例
drupal_after_build: "tasks/my-after-build-tasks.yml"
如果您想使用此角色安装特定的 Drupal 发行版(例如:Lightning):
- hosts: webserver
vars_files:
- vars/main.yml
roles:
- geerlingguy.apache
- geerlingguy.mysql
- geerlingguy.php-versions
- geerlingguy.php
- geerlingguy.php-mysql
- geerlingguy.composer
- bmeme.drupal
drupal_project_composer_project: "acquia/lightning-project:8.8.1"
许可证
MIT/BSD
作者信息
此角色由 Bmeme 于 2020 年创建。