Skip to content
This repository was archived by the owner on Feb 13, 2023. It is now read-only.

Commit bd57126

Browse files
committed
Issue #1692, Issue #1595: Set up Drush aliases for all Drush versions.
1 parent 4765d81 commit bd57126

8 files changed

+162
-24
lines changed

default.config.yml

+2
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,9 @@ drupalvm_cron_jobs: []
110110
# this variable is 'true'.
111111
configure_drush_aliases: true
112112
drush_aliases_host_template: "templates/drupalvm.aliases.drushrc.php.j2"
113+
drush_aliases_host_template_yml: "templates/drupalvm.aliases.yml.j2"
113114
drush_aliases_guest_template: "templates/drupalvm-local.aliases.drushrc.php.j2"
115+
drush_aliases_guest_template_yml: "templates/drupalvm-local.aliases.yml.j2"
114116

115117
# Helper variable to configure the PHP-FPM connection for each Apache
116118
# VirtualHost in the `apache_vhosts` list.

provisioning/playbook.yml

+1
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@
111111
tags: ['database']
112112

113113
- include: tasks/drush-aliases.yml
114+
when: configure_drush_aliases
114115

115116
- include: tasks/cron.yml
116117
tags: ['cron']

provisioning/tasks/drush-aliases.yml

+88-22
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,111 @@
11
---
2-
- name: Check if local Drush configuration folder exists.
2+
# On the host machine.
3+
- name: Ensure Drush directories exist.
4+
file:
5+
path: "{{ item }}"
6+
state: directory
7+
mode: 0755
8+
delegate_to: 127.0.0.1
9+
become: no
10+
with_items:
11+
- ~/.drush
12+
- ~/.drush/sites
13+
14+
- name: Check if Drush configuration file exists.
315
stat:
4-
path: ~/.drush
5-
register: local_drush_config_folder
16+
path: ~/.drush/drush.yml
617
delegate_to: 127.0.0.1
718
become: no
8-
when: configure_drush_aliases
19+
register: drush_config_file
920

10-
- name: Create Drush configuration folder if it doesn't exist.
11-
file:
12-
path: ~/.drush
13-
state: directory
21+
- name: Create a Drush configuration file with a custom alias-path.
22+
copy:
23+
src: ../templates/drush.yml
24+
dest: ~/.drush/drush.yml
25+
mode: 0644
1426
delegate_to: 127.0.0.1
1527
become: no
16-
when: configure_drush_aliases and (local_drush_config_folder.stat.exists == false)
28+
when: not drush_config_file.stat.exists
1729

1830
# Note that this doesn't work for Windows, since Ansible's running in the VM.
31+
# Note also that we are copying both Drush < 9 and Drush >= 9 alias files since
32+
# there's no other way to support multiple versions of Drush :-(.
1933
- name: Configure host machine drush aliases.
2034
template:
21-
src: "{{ drush_aliases_host_template }}"
22-
dest: "~/.drush/{{ vagrant_machine_name }}.aliases.drushrc.php"
35+
src: "{{ item.src }}"
36+
dest: "{{ item.dest }}"
2337
delegate_to: 127.0.0.1
2438
become: no
25-
when: configure_drush_aliases
39+
with_items:
40+
- src: "{{ drush_aliases_host_template }}"
41+
dest: "~/.drush/{{ vagrant_machine_name }}.aliases.drushrc.php"
42+
- src: "{{ drush_aliases_host_template_yml }}"
43+
dest: "~/.drush/sites/{{ vagrant_machine_name }}.site.yml"
2644

27-
- name: Ensure drush directory exists for vagrant user inside VM.
28-
file: 'path="~/.drush" state=directory'
45+
# Inside the VM - Vagrant user.
46+
- name: Ensure drush directories exist for vagrant user inside VM.
47+
file:
48+
path: "{{ item }}"
49+
state: directory
50+
mode: 0755
2951
become: no
52+
with_items:
53+
- ~/.drush
54+
- ~/.drush/sites
55+
56+
- name: Check if Drush configuration file exists.
57+
stat:
58+
path: ~/.drush/drush.yml
59+
become: no
60+
register: drush_config_file_inside
61+
62+
- name: Create a Drush configuration file with a custom alias-path.
63+
copy:
64+
src: ../templates/drush.yml
65+
dest: ~/.drush/drush.yml
66+
mode: 0644
67+
become: no
68+
when: not drush_config_file_inside.stat.exists
3069

3170
- name: Configure drush aliases for vagrant user inside VM.
3271
template:
33-
src: "{{ drush_aliases_guest_template }}"
34-
dest: "~/.drush/{{ vagrant_machine_name }}.aliases.drushrc.php"
72+
src: "{{ item.src }}"
73+
dest: "{{ item.dest }}"
3574
become: no
36-
when: configure_drush_aliases
75+
with_items:
76+
- src: "{{ drush_aliases_guest_template }}"
77+
dest: "~/.drush/{{ vagrant_machine_name }}.aliases.drushrc.php"
78+
- src: "{{ drush_aliases_guest_template_yml }}"
79+
dest: "~/.drush/sites/{{ vagrant_machine_name }}.site.yml"
80+
81+
# Inside the VM - root user.
82+
- name: Ensure drush directories exist for root user inside VM.
83+
file:
84+
path: "{{ item }}"
85+
state: directory
86+
mode: 0755
87+
with_items:
88+
- ~/.drush
89+
- ~/.drush/sites
90+
91+
- name: Check if Drush configuration file exists.
92+
stat:
93+
path: ~/.drush/drush.yml
94+
register: drush_config_file_inside_root
3795

38-
- name: Ensure drush directory exists for root user inside VM.
39-
file: 'path="~/.drush" state=directory'
96+
- name: Create a Drush configuration file with a custom alias-path.
97+
copy:
98+
src: ../templates/drush.yml
99+
dest: ~/.drush/drush.yml
100+
mode: 0644
101+
when: not drush_config_file_inside_root.stat.exists
40102

41103
- name: Configure drush aliases for root user inside VM.
42104
template:
43-
src: "{{ drush_aliases_guest_template }}"
44-
dest: "~/.drush/{{ vagrant_machine_name }}.aliases.drushrc.php"
45-
when: configure_drush_aliases
105+
src: "{{ item.src }}"
106+
dest: "{{ item.dest }}"
107+
with_items:
108+
- src: "{{ drush_aliases_guest_template }}"
109+
dest: "~/.drush/{{ vagrant_machine_name }}.aliases.drushrc.php"
110+
- src: "{{ drush_aliases_guest_template_yml }}"
111+
dest: "~/.drush/sites/{{ vagrant_machine_name }}.site.yml"

provisioning/templates/drupalvm-local.aliases.drushrc.php.j2

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
/**
44
* Drupal VM drush aliases.
55
*
6-
* @see example.aliases.drushrc.php.
6+
* {{ ansible_managed }}
77
*/
88

99
{% macro alias(host, root) -%}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# {{ ansible_managed }}
2+
{% macro alias(host, root) -%}
3+
{%- if root not in _devtool_docroots %}
4+
{{ host }}:
5+
host: 'drupalvm.test'
6+
options: { }
7+
root: '{{ root }}'
8+
uri: drupalvm.test
9+
10+
{% endif -%}
11+
{% endmacro -%}
12+
13+
{% block aliases -%}
14+
{%- if drupalvm_webserver == 'apache' -%}
15+
{%- for vhost in apache_vhosts -%}
16+
{{ alias(vhost.servername, vhost.documentroot) }}
17+
{%- if vhost.serveralias is defined -%}
18+
{%- for serveralias in vhost.serveralias.split() -%}
19+
{{ alias(serveralias, vhost.documentroot) }}
20+
{%- endfor -%}
21+
{%- endif -%}
22+
{%- endfor -%}
23+
{%- elif drupalvm_webserver == 'nginx' -%}
24+
{%- for host in nginx_vhosts -%}
25+
{%- for server_name in host.server_name.split() -%}
26+
{{ alias(server_name, host.root) }}
27+
{%- endfor -%}
28+
{%- endfor -%}
29+
{%- endif -%}
30+
{%- endblock %}

provisioning/templates/drupalvm.aliases.drushrc.php.j2

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
/**
44
* Drupal VM drush aliases.
55
*
6-
* @see example.aliases.drushrc.php.
6+
* {{ ansible_managed }}
77
*/
88

99
{% macro alias(host, root) -%}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# {{ ansible_managed }}
2+
{% macro alias(host, root) -%}
3+
{%- if root not in _devtool_docroots %}
4+
{{ host }}:
5+
host: '{{ host }}'
6+
options: { }
7+
paths:
8+
drush-script: '{{ drush_path }}'
9+
root: '{{ root }}'
10+
uri: '{{ host }}'
11+
user: vagrant
12+
ssh:
13+
options: '-o "SendEnv PHP_IDE_CONFIG PHP_OPTIONS XDEBUG_CONFIG" -o PasswordAuthentication=no -i "${env.home}/.vagrant.d/insecure_private_key"'
14+
15+
{% endif -%}
16+
{% endmacro -%}
17+
18+
{% block aliases -%}
19+
{%- if drupalvm_webserver == 'apache' -%}
20+
{%- for vhost in apache_vhosts -%}
21+
{{ alias(vhost.servername, vhost.documentroot) }}
22+
{%- if vhost.serveralias is defined -%}
23+
{%- for serveralias in vhost.serveralias.split() -%}
24+
{{ alias(serveralias, vhost.documentroot) }}
25+
{%- endfor -%}
26+
{%- endif -%}
27+
{%- endfor -%}
28+
{%- elif drupalvm_webserver == 'nginx' -%}
29+
{%- for host in nginx_vhosts -%}
30+
{%- for server_name in host.server_name.split() -%}
31+
{{ alias(server_name, host.root) }}
32+
{%- endfor -%}
33+
{%- endfor -%}
34+
{%- endif -%}
35+
{%- endblock %}

provisioning/templates/drush.yml

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
drush:
2+
paths:
3+
alias-path:
4+
- '${env.home}/.drush/sites'

0 commit comments

Comments
 (0)