Назад | Перейти на главную страницу

Установите drush, используя композитор как бродячий пользователь

Я использую Vagrant с Ubuntu Trusty x64. Я хочу автоматизировать установку определенных пакетов, поэтому я использовал Ansible в качестве инициатора (я новичок). Drush - один из тех пакетов, которые я хочу установить, и рекомендуемый способ установки Drush - использование Composer. У меня правильно установлен Composer, но нет Drush. Я хочу, чтобы он был установлен в домашнем каталоге пользователя vagrant (где установлены пакеты global composer), но он устанавливается в домашний каталог пользователя root.

Мой playbook.yml выглядит так:

- hosts: all
  gather_facts: yes
  sudo: yes

  roles:
   - composer
   - drush

Мой друш main.yml задача выглядит так:

---
- name: Install Drush
  remote_user: vagrant
  shell: composer global require drush/drush

Мой композитор main.yml задача выглядит так:

---
- name: Download Composer installer
  get_url: url=https://getcomposer.org/installer dest=/tmp/composer-installer.php mode=0755

- name: Run Composer installer
  shell: php composer-installer.php chdir=/tmp creates=/usr/local/bin/composer

- name: Make Composer accessible globally
  shell: mv /tmp/composer.phar /usr/local/bin/composer creates=/usr/local/bin/composer

- name: Add Composer's global packages to path
  copy: src=composer_envvar.sh dest=/etc/profile.d

Где composer_envvar.sh содержит ff:

export PATH="~/.composer/vendor/bin:$PATH"

Должен быть способ сообщить ansible, что нужно запускать команду composer от имени бродячего пользователя.

Вы заглянули в Команда композитора Ansible?

Но вместо того, чтобы полагаться на композитора для Drush, теперь вы можете использовать drush.phar файл, который поставляется с каждым выпуском. Это очень просто и понятно.

Вот пример задачи, которая проверяет, установлен ли Drush, и, если нет, загружает файл phar, делает его исполняемым и доступным в вашем $PATH:

---
- name: Check if Drush is installed
  stat:
    path: "{{ drush_path }}"
  register: drush

- name: Check Drush version
  shell: drush --version | awk '{print $4}' | head -n1
  register: drush_version_check
  when: drush.stat.exists == true

- name: Install Drush globally
  get_url:
    url: https://github.com/drush-ops/drush/releases/download/{{ drush_version }}/drush.phar
    dest: "{{ drush_path }}"
  when: drush.stat.exists == false or drush_version_check.stdout != "{{ drush_version }}"

- name: Make Drush executable
  file:
    path: "{{ drush_path }}"
    mode: 0755
  when: drush.stat.exists == true or drush_version_check.stdout != "{{ drush_version }}"

А затем положите drush_path: /usr/local/bin/drush в vars.yml файл на случай, если вы хотите изменить $PATH в будущем. drush_version: 8.0.1 позволяет вам изменить версию, которая будет установлена ​​при обновлении Drush.