我使用Ubuntu Trusty x64的Vagrant。 我想自动安装某些软件包,所以我用Ansible作为提供者(我是一个初学者)。 Drush是我想要安装的软件包之一,推荐安装Drush的方法是使用Composer。 我有composer php安装正确,但不Drush。 我希望它被安装在vagrant用户的主目录(安装了全局作曲软件包的地方),但它被安装在root用户的主目录中。
我的playbook.yml看起来像这样:
- hosts: all gather_facts: yes sudo: yes roles: - composer - drush
我的drush的main.yml任务如下所示:
--- - name: Install Drush remote_user: vagrant shell: composer global require drush/drush
我的composer php的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"
必须有一种方法来告诉作为stream浪使用者运行composer php的命令。
你看过Ansible的composer php指挥吗?
但是,不要依赖Drush的composer php,现在可以利用每个发行版附带的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时更改要安装的版本。