244 lines
5.8 KiB
ReStructuredText
244 lines
5.8 KiB
ReStructuredText
.. page:: titlePage
|
|
|
|
.. class:: centredtitle
|
|
|
|
Better deployments with Ansistrano
|
|
|
|
.. page:: standardPage
|
|
|
|
.. image:: images/ansistrano.png
|
|
:width: 24cm
|
|
|
|
.. page::
|
|
|
|
Features
|
|
========
|
|
|
|
- Multiple release directories
|
|
- Shared paths and files
|
|
- Customisable
|
|
- Multiple deployment strategies
|
|
- Multi-stage environments
|
|
- Prune old releases
|
|
- Rollbacks
|
|
|
|
.. page::
|
|
|
|
|
|
.. code-block:: yaml
|
|
|
|
# requirements.yml
|
|
|
|
---
|
|
- src: ansistrano.deploy
|
|
- src: ansistrano.rollback
|
|
|
|
.. raw:: pdf
|
|
|
|
TextAnnotation "to install Ansistrano, add the additional roles to the requirements.yml file"
|
|
|
|
.. page::
|
|
|
|
|
|
.. code-block:: yaml
|
|
|
|
# deploy.yml
|
|
|
|
---
|
|
- hosts: all
|
|
|
|
roles:
|
|
- ansistrano.deploy
|
|
|
|
.. raw:: pdf
|
|
|
|
TextAnnotation "add to roles within the playbook"
|
|
|
|
.. page::
|
|
|
|
.. code-block:: yaml
|
|
|
|
# deploy.yml
|
|
|
|
---
|
|
vars:
|
|
project_deploy_dir: /app
|
|
|
|
ansistrano_deploy_to: '{{ project_deploy_dir }}'
|
|
ansistrano_deploy_via: git
|
|
ansistrano_git_branch: master
|
|
ansistrano_git_repo: 'git@github.com:opdavies/dransible'
|
|
|
|
.. page::
|
|
.. code-block::
|
|
|
|
PLAY [webservers] ******************************************************************************************************
|
|
|
|
TASK [Gathering Facts] *************************************************************************************************
|
|
ok: [webservers]
|
|
|
|
TASK [ansistrano.deploy : include_tasks] *******************************************************************************
|
|
|
|
TASK [ansistrano.deploy : include_tasks] *******************************************************************************
|
|
included: /Users/opdavies/.ansible/roles/ansistrano.deploy/tasks/setup.yml for webservers
|
|
|
|
TASK [ansistrano.deploy : ANSISTRANO | Ensure deployment base path exists] *********************************************
|
|
ok: [webservers]
|
|
|
|
TASK [ansistrano.deploy : ANSISTRANO | Ensure releases folder exists] **************************************************
|
|
ok: [webservers]
|
|
|
|
TASK [ansistrano.deploy : ANSISTRANO | Ensure shared elements folder exists] *******************************************
|
|
ok: [webservers]
|
|
|
|
TASK [ansistrano.deploy : ANSISTRANO | Ensure shared paths exists] *****************************************************
|
|
ok: [webservers] => (item=web/sites/default/files)
|
|
|
|
.. page::
|
|
|
|
.. code-block::
|
|
|
|
TASK [ansistrano.deploy : Update file permissions] *********************************************************************
|
|
changed: [webservers]
|
|
|
|
TASK [ansistrano.deploy : include_tasks] *******************************************************************************
|
|
|
|
TASK [ansistrano.deploy : include_tasks] *******************************************************************************
|
|
included: /Users/opdavies/.ansible/roles/ansistrano.deploy/tasks/cleanup.yml for webservers
|
|
|
|
TASK [ansistrano.deploy : ANSISTRANO | Clean up releases] **************************************************************
|
|
changed: [webservers]
|
|
|
|
TASK [ansistrano.deploy : include_tasks] *******************************************************************************
|
|
|
|
TASK [ansistrano.deploy : include_tasks] *******************************************************************************
|
|
included: /Users/opdavies/.ansible/roles/ansistrano.deploy/tasks/anon-stats.yml for webservers
|
|
|
|
TASK [ansistrano.deploy : ANSISTRANO | Send anonymous stats] ***********************************************************
|
|
skipping: [webservers]
|
|
|
|
PLAY RECAP *************************************************************************************************************
|
|
webservers : ok=33 changed=14 unreachable=0 failed=0 skipped=7 rescued=0 ignored=0
|
|
|
|
.. page::
|
|
|
|
.. code-block::
|
|
|
|
vagrant@dransible:/app$ ls -l
|
|
total 8
|
|
|
|
lrwxrwxrwx 1 26 Jul 19 00:15 current -> ./releases/20190719001241Z
|
|
drwxr-xr-x 5 4096 Jul 22 20:30 releases
|
|
drwxr-xr-x 4 4096 Jul 19 00:00 shared
|
|
|
|
.. page::
|
|
|
|
.. code-block::
|
|
|
|
vagrant@dransible:/app/releases$ ls -l
|
|
total 20
|
|
|
|
drwxr-xr-x 5 4096 Jul 22 20:30 .
|
|
drwxr-xr-x 4 4096 Jul 19 00:15 ..
|
|
drwxr-xr-x 10 4096 Jul 19 00:02 20190719000013Z
|
|
drwxr-xr-x 10 4096 Jul 19 00:14 20190719001241Z
|
|
drwxr-xr-x 9 4096 Jul 22 20:30 20190722203038Z
|
|
|
|
.. page::
|
|
|
|
|
|
.. code-block:: yaml
|
|
|
|
# rollback.yml
|
|
|
|
---
|
|
- hosts: all
|
|
|
|
roles:
|
|
- ansistrano.rollback
|
|
|
|
vars:
|
|
ansistrano_deploy_to: '{{ project_deploy_dir }}'
|
|
|
|
.. page:: titlePage
|
|
|
|
.. class:: centredtitle
|
|
|
|
``ansible-playbook rollback.yml
|
|
-i hosts.yml``
|
|
|
|
.. page::
|
|
|
|
.. class:: centredtitle
|
|
|
|
Customising Ansistrano:
|
|
Build Hooks
|
|
|
|
.. page:: imagePage
|
|
|
|
.. image:: images/ansistrano-flow.png
|
|
:width: 18cm
|
|
|
|
.. raw:: pdf
|
|
|
|
TextAnnotation "Each step has a 'before' and 'after' step Ansistrano allows us to add more things by providing a path to a playbook and adding additional steps."
|
|
|
|
.. page:: standardPage
|
|
|
|
.. code-block:: yaml
|
|
|
|
# deploy.yml
|
|
|
|
---
|
|
vars:
|
|
ansistrano_after_symlink_shared_tasks_file: >
|
|
'{{ playbook_dir }}/deploy/after-symlink-shared.yml'
|
|
ansistrano_after_symlink_tasks_file: >
|
|
'{{ playbook_dir }}/deploy/after-symlink.yml'
|
|
ansistrano_after_update_code_tasks_file: >
|
|
'{{ playbook_dir }}/deploy/after-update-code.yml'
|
|
|
|
release_web_path: '{{ ansistrano_release_path.stdout }}/web'
|
|
release_drush_path: '{{ ansistrano_release_path.stdout }}/bin/drush'
|
|
|
|
.. page::
|
|
|
|
|
|
.. code-block:: yaml
|
|
|
|
# deploy/after-update-code.yml
|
|
|
|
---
|
|
- name: Install Composer dependencies
|
|
composer:
|
|
command: install
|
|
working_dir: '{{ ansistrano_release_path.stdout }}'
|
|
|
|
.. page::
|
|
|
|
|
|
.. code-block:: yaml
|
|
|
|
# deploy/after-symlink-shared.yml
|
|
|
|
---
|
|
- name: Run database updates
|
|
command: >
|
|
{{ release_drush_path }}
|
|
--root {{ release_web_path }}
|
|
updatedb
|
|
|
|
.. page::
|
|
|
|
.. code-block:: yaml
|
|
|
|
# deploy/after-symlink.yml
|
|
|
|
---
|
|
- name: Rebuild Drupal cache
|
|
command: >
|
|
{{ release_drush_path }}
|
|
--root {{ release_web_path }}
|
|
cache-rebuild
|
|
|