cbrunnkvist.ansistrano-symfony-deploy

ansistrano-symfony-deploy

构建状态

这是一个用于将使用Symfony框架(包括flex)开发的PHP应用程序部署到*nix服务器上的Ansible任务集合,采用"Capistrano"样式(发布、共享、当前->发布/X)。

这个角色基本上只是最常见的安装后设置任务的集合(例如,获取Composer可执行文件,安装依赖项和自动加载器,执行缓存预热,部署迁移等)。它本身不处理设置目录结构或将文件放到服务器上的工作——这些由更通用的ansistrano-deploy角色来处理。

实现方式是定义几个ansistrano_(before|after)_X变量(有关详细信息,请参见ansistrano文档)。

要求

由于当前版本的Ansible存在一些不足,ansistrano-symfony-deployansistrano-deploy必须共享同一父目录。这将是正常情况,因此只要通过ansible-galaxy安装就不应该成为问题。

这些任务可能无法在Windows目标主机上工作(未测试)。

角色变量

在此模块中声明的defaults变量:

symfony_env: prod
symfony_php_path: php # 所有命令行任务使用的PHP可执行文件

symfony_console_path: 'app/console' # 如果使用Symfony 3+,应该是'bin/console'

symfony_run_composer: true
symfony_composer_path: "{{ ansistrano_deploy_to }}/composer.phar"
symfony_composer_options: '--no-dev --optimize-autoloader --no-interaction'
symfony_composer_self_update: true # 始终尝试自我更新 Composer
symfony_composer_version: 1.10.1 # 安装指定的 Composer 版本。如果未设置此变量,则安装最新稳定版本

symfony_run_assets_install: true
symfony_assets_options: '--no-interaction'

symfony_run_assetic_dump: true
symfony_assetic_options: '--no-interaction'

symfony_run_cache_clear_and_warmup: true
symfony_cache_options: ''

###############################################################################
symfony_run_doctrine_migrations: false
symfony_doctrine_options: '--no-interaction'

symfony_run_mongodb_schema_update: false
symfony_mongodb_options: ''

钩子

此角色支持在每个任务之前和之后使用ansistrano样式的钩子

ansistrano_symfony_before_composer_tasks_file
ansistrano_symfony_after_composer_tasks_file

ansistrano_symfony_before_assets_tasks_file
ansistrano_symfony_after_assets_tasks_file

ansistrano_symfony_before_assetic_tasks_file
ansistrano_symfony_after_assetic_tasks_file

ansistrano_symfony_before_cache_tasks_file
ansistrano_symfony_after_cache_tasks_file

ansistrano_symfony_before_doctrine_tasks_file
ansistrano_symfony_after_doctrine_tasks_file

ansistrano_symfony_before_mongodb_tasks_file
ansistrano_symfony_after_mongodb_tasks_file

此外,请参阅ansistrano使用的变量列表

关于ORM/ODM模式迁移的说明

数据库模式迁移通常不能在多个主机上并行运行!因此,symfony_run_doctrine_migrationssymfony_run_mongodb_schema_update选项默认均关闭。

为了规避并行执行的问题,您可以执行以下操作:

  1. 指定自己的ansistrano_before_symlink_tasks_file,可以使用本项目中的文件作为模板(查看cbrunnkvist.ansistrano-symfony-deploy/config/steps/)。
  2. 选择以下方法之一:
  • (a) 将主机组织成组,使任务仅在某组中的第一个主机上运行: when: groups['www-production'][0] == inventory_hostname
  • (b) 使用run_once: true,可能与delegate_to: some_primary_host一起使用(文档:Playbook 委托

依赖关系

通过命令行使用ansible-galaxy install cbrunnkvist.ansistrano-symfony-deploy安装时,将自动拉取外部角色作为依赖,因此无需额外步骤。

示例剧本

至少,您可能需要在剧本中声明ansistrano_deploy_fromansistrano_deploy_to变量。Ansistrano默认使用rsync从本地目录(再次,请参见ansistrano文档)。

假设有一个my-app-infrastructure/deploy.yml

---
- hosts: all
  gather_facts: false
  vars:
    ansistrano_deploy_from: ../my-project-checkout
    ansistrano_deploy_to: /home/app-user/my-project-deploy/
    ansistrano_before_symlink_tasks_file: "{{playbook_dir}}/config/app_specific_setup.yml"
  roles:
    - cbrunnkvist.ansistrano-symfony-deploy

这个剧本应该像其他剧本一样执行,即ansible-playbook -i some_hosts_file deploy.yml

将一次性的系统准备任务保存在单独的剧本中是合理的,例如my-app-infrastructure/setup.yml

许可证

MIT

作者信息

  • ansistrano-symfony-deploy,作者:Conny Brunnkvist cbrunnkvist@gmail.com
  • 基础角色由ansistrano-deploy团队维护
  • 部分代码来自/受Servergrove团队的symfony2-deploy角色的启发
关于项目

Common post-deploy tasks for Symfony projects

安装
ansible-galaxy install cbrunnkvist.ansistrano-symfony-deploy
许可证
mit
下载
43.6k
拥有者