Установка Composer и Drush
Drupal имеет спутника командной строки в форме Drush. Drush разрабатывается независимо от Drupal и предоставляет полный набор команд CLI для управления Drupal. Drush, как и большинство современных инструментов PHP, интегрируется с внешними зависимостями, определенными в файле composer.json, описывающем зависимости от Composer.
Мы могли бы просто загрузить Drupal и выполнить некоторую настройку в браузере вручную, но наша цель состоит в том, чтобы иметь полностью автоматизированную и идемпотентную установку Drupal. Итак, нам нужно установить Composer, затем Drush:
- name: Download Composer installer.
get_url:
url: https://getcomposer.org/installer
dest: /tmp/composer-installer.php
mode: 0755
- name: Run Composer installer.
command: >
php composer-installer.php
chdir=/tmp
creates=/usr/local/bin/composer
- name: Move Composer into globally-accessible location.
shell: >
mv /tmp/composer.phar /usr/local/bin/composer
creates=/usr/local/bin/composer
Первые две команды загружают и запускают установщик на основе PHP, который генерирует архив приложения "composer.phar" PHP в /tmp. Затем этот архив копируется (с помощью shell команды - mv) в директорию /usr/local/bin/composer, поэтому мы можем использовать команду composer для установки всех зависимостей Drush. Последние команды последних двух задач срабатывают только в том случае, если файл /usr/local/bin/composer еще не существует (с помощью параметра creates).
Теперь мы установим Drush через git:
- name: Check out drush master branch.
git:
repo: https://github.com/drush-ops/drush.git
dest: /opt/drush
- name: Install Drush dependencies with Composer.
shell: >
/usr/local/bin/composer install
chdir=/opt/drush
creates=/opt/drush/vendor/autoload.php
- name: Create drush bin symlink.
file:
src: /opt/drush/drush
dest: /usr/local/bin/drush
state: link
После загрузки Drush в /opt/drush мы используем Composer для установки всех необходимых зависимостей. В этом случае мы хотим, чтобы Ansible запустил composer install
в каталоге /opt/drush
, поэтому мы перейдем в этот каталог с помощью параметра chdir=/opt/drush
. По окончанию процесса файл /opt/drush/vendor/autoload.php будет создан, поэтому мы используем параметр creates.
Наконец, мы создаем символическую ссылку от /usr/local/bin/drush к исполняемому файлу в /opt/drush/drush, поэтому мы можем вызвать команду drush в любом месте системы.