Merge branch 'auto-hostname' into 'master'
Complete provisioning and automate system name See merge request agaric/sites/agaric-com!3
This commit is contained in:
commit
853eb39c55
8 changed files with 158 additions and 74 deletions
6
box/Vagrantfile
vendored
6
box/Vagrantfile
vendored
|
@ -27,6 +27,10 @@ vconfig = load_config([
|
||||||
"#{host_config_dir}/local.config.yml"
|
"#{host_config_dir}/local.config.yml"
|
||||||
])
|
])
|
||||||
|
|
||||||
|
# Override all drupalvm.test values according to project root:
|
||||||
|
require (File.expand_path('drutopiavm', host_config_dir))
|
||||||
|
set_overrides_per_project(vconfig)
|
||||||
|
|
||||||
provisioner = vconfig['force_ansible_local'] ? :ansible_local : vagrant_provisioner
|
provisioner = vconfig['force_ansible_local'] ? :ansible_local : vagrant_provisioner
|
||||||
if provisioner == :ansible
|
if provisioner == :ansible
|
||||||
playbook = "#{host_drupalvm_dir}/provisioning/playbook.yml"
|
playbook = "#{host_drupalvm_dir}/provisioning/playbook.yml"
|
||||||
|
@ -46,7 +50,7 @@ Vagrant.configure('2') do |config|
|
||||||
# Set the name of the VM. See: http://stackoverflow.com/a/17864388/100134
|
# Set the name of the VM. See: http://stackoverflow.com/a/17864388/100134
|
||||||
config.vm.define vconfig['vagrant_machine_name']
|
config.vm.define vconfig['vagrant_machine_name']
|
||||||
|
|
||||||
# Networking configuration.
|
# Networking configuration
|
||||||
config.vm.hostname = vconfig['vagrant_hostname']
|
config.vm.hostname = vconfig['vagrant_hostname']
|
||||||
config.vm.network :private_network,
|
config.vm.network :private_network,
|
||||||
ip: vconfig['vagrant_ip'],
|
ip: vconfig['vagrant_ip'],
|
||||||
|
|
|
@ -9,10 +9,12 @@
|
||||||
|
|
||||||
vagrant_box: geerlingguy/debian9
|
vagrant_box: geerlingguy/debian9
|
||||||
|
|
||||||
# If you need to run multiple instances of Drupal VM, set a unique hostname,
|
# These variables are no longer honored. In order to use them specifically,
|
||||||
# and machine name
|
# revert the changes to use vconfig values in <project_root>/box/Vagrant
|
||||||
vagrant_hostname: agaric.local
|
# And disable the pre-tasks
|
||||||
vagrant_machine_name: agaric-com-vm
|
# vagrant_hostname: drutopia.local
|
||||||
|
# vagrant_machine_name: drutopia-com-vm
|
||||||
|
|
||||||
# You can specify an IP, or else the vagrant-auto_network will set it for you:
|
# You can specify an IP, or else the vagrant-auto_network will set it for you:
|
||||||
vagrant_ip: 0.0.0.0
|
vagrant_ip: 0.0.0.0
|
||||||
|
|
||||||
|
@ -150,7 +152,7 @@ installed_extras:
|
||||||
- mailhog
|
- mailhog
|
||||||
# - memcached
|
# - memcached
|
||||||
# - newrelic
|
# - newrelic
|
||||||
# - nodejs
|
- nodejs
|
||||||
- pimpmylog
|
- pimpmylog
|
||||||
# - redis
|
# - redis
|
||||||
# - ruby
|
# - ruby
|
||||||
|
@ -219,7 +221,7 @@ adminer_install_filename: index.php
|
||||||
|
|
||||||
# Node.js configuration (if enabled above).
|
# Node.js configuration (if enabled above).
|
||||||
# Valid examples: "0.10", "0.12", "4.x", "5.x", "6.x".
|
# Valid examples: "0.10", "0.12", "4.x", "5.x", "6.x".
|
||||||
nodejs_version: "6.x"
|
nodejs_version: "8.x"
|
||||||
nodejs_npm_global_packages: []
|
nodejs_npm_global_packages: []
|
||||||
nodejs_install_npm_user: "{{ drupalvm_user }}"
|
nodejs_install_npm_user: "{{ drupalvm_user }}"
|
||||||
npm_config_prefix: "/home/{{ drupalvm_user }}/.npm-global"
|
npm_config_prefix: "/home/{{ drupalvm_user }}/.npm-global"
|
||||||
|
@ -269,4 +271,5 @@ hostname_configure: true
|
||||||
hostname_fqdn: "{{ vagrant_hostname }}"
|
hostname_fqdn: "{{ vagrant_hostname }}"
|
||||||
ssh_home: "{{ drupal_core_path }}"
|
ssh_home: "{{ drupal_core_path }}"
|
||||||
|
|
||||||
post_provision_tasks_dir: ../../provisioning/tasks/*.yml
|
post_provision_tasks_dir: ../../provisioning/box/post-tasks/*.yml
|
||||||
|
pre_provision_tasks_dir: ../../provisioning/box/pre-tasks/*.yml
|
||||||
|
|
15
provisioning/box/drutopiavm.rb
Normal file
15
provisioning/box/drutopiavm.rb
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
def set_overrides_per_project(config)
|
||||||
|
# Acquire a hostname from the project root
|
||||||
|
project_dir_name = File.basename(ENV['DRUPALVM_PROJECT_ROOT']).gsub("_", "-")
|
||||||
|
host_name = "#{project_dir_name}.test"
|
||||||
|
|
||||||
|
# Override all vconfig values with the new names
|
||||||
|
config['vagrant_hostname'] = host_name
|
||||||
|
config['vagrant_machine_name'] = "#{project_dir_name}-vm"
|
||||||
|
config['drupal_domain'] = host_name
|
||||||
|
config['hostname_fqdn'] =
|
||||||
|
config['apache_vhosts'].each do |host|
|
||||||
|
host['servername'].sub!('drupalvm.test', host_name)
|
||||||
|
host['serveralias'].gsub!('drupalvm.test', host_name) if host['serveralias']
|
||||||
|
end
|
||||||
|
end
|
78
provisioning/box/post-tasks/10-drupal.yml
Normal file
78
provisioning/box/post-tasks/10-drupal.yml
Normal file
|
@ -0,0 +1,78 @@
|
||||||
|
---
|
||||||
|
- name: determine status of settings location
|
||||||
|
stat:
|
||||||
|
path: "{{ drupal_core_path }}/sites/default"
|
||||||
|
register: stat_result
|
||||||
|
|
||||||
|
- name: ensure settings location is writable
|
||||||
|
file:
|
||||||
|
path: "{{ drupal_core_path }}/sites/default"
|
||||||
|
mode: 0775
|
||||||
|
state: directory
|
||||||
|
when: stat_result.stat.exists == true and stat_result.stat.writeable == false
|
||||||
|
|
||||||
|
- name: ensure settings file is still writable
|
||||||
|
file:
|
||||||
|
path: "{{ drupal_core_path }}/sites/default/settings.php"
|
||||||
|
mode: 0664
|
||||||
|
state: file
|
||||||
|
when: stat_result.stat.exists == true and stat_result.stat.writeable == false
|
||||||
|
|
||||||
|
- name: Run composer install.
|
||||||
|
command: "composer install"
|
||||||
|
args:
|
||||||
|
chdir: "{{ drupal_composer_install_dir }}"
|
||||||
|
|
||||||
|
- name: install default settings.php
|
||||||
|
copy:
|
||||||
|
src: "{{ drupal_core_path }}/sites/default/default.settings.php"
|
||||||
|
dest: "{{ drupal_core_path }}/sites/default/settings.php"
|
||||||
|
remote_src: true
|
||||||
|
|
||||||
|
- name: enable settings.local.php include_tasks
|
||||||
|
blockinfile:
|
||||||
|
path: "{{ drupal_core_path }}/sites/default/settings.php"
|
||||||
|
marker: "/* {mark} ANSIBLE MANAGED BLOCK: LOCAL INCLUDE */"
|
||||||
|
insertafter: EOF
|
||||||
|
content: |1+
|
||||||
|
if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) {
|
||||||
|
include $app_root . '/' . $site_path . '/settings.local.php';
|
||||||
|
}
|
||||||
|
|
||||||
|
- name: create settings.local.php
|
||||||
|
template:
|
||||||
|
src: "settings.local.php.j2"
|
||||||
|
dest: "{{ drupal_core_path }}/sites/default/settings.local.php"
|
||||||
|
|
||||||
|
- name: Check if site is already installed.
|
||||||
|
command: "{{ drupal_composer_install_dir }}/vendor/bin/drush --root={{ drupal_core_path}}/ status bootstrap"
|
||||||
|
args:
|
||||||
|
chdir: "{{ drupal_core_path }}"
|
||||||
|
register: drupal_site_installed
|
||||||
|
failed_when: "drupal_site_installed.stdout is undefined"
|
||||||
|
changed_when: false
|
||||||
|
become: no
|
||||||
|
|
||||||
|
- name: Install Drupal with drush.
|
||||||
|
command: >
|
||||||
|
{{ drupal_composer_install_dir }}/vendor/bin/drush site-install -y
|
||||||
|
--root={{ drupal_core_path }}
|
||||||
|
--site-name={{ drupal_site_name }}
|
||||||
|
--account-name={{ drupal_account_name }}
|
||||||
|
--account-pass={{ drupal_account_pass }}
|
||||||
|
--site-mail={{ drupal_account_email }}
|
||||||
|
args:
|
||||||
|
chdir: "{{ drupal_core_path }}"
|
||||||
|
become: no
|
||||||
|
when: "force_reinstall|default(false) or 'Drupal bootstrap' not in drupal_site_installed.stdout"
|
||||||
|
|
||||||
|
- name: Install theme build dependencies
|
||||||
|
npm:
|
||||||
|
path: "{{ drupal_core_path }}/themes/custom/agarica/patternlibrary"
|
||||||
|
state: present
|
||||||
|
|
||||||
|
- name: Build theme artifacts
|
||||||
|
command: grunt kss
|
||||||
|
args:
|
||||||
|
chdir: "{{ drupal_core_path }}/themes/custom/agarica/patternlibrary"
|
||||||
|
ignore_errors: yes
|
30
provisioning/box/post-tasks/templates/settings.local.php.j2
Normal file
30
provisioning/box/post-tasks/templates/settings.local.php.j2
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* Settings for the hosted environment.
|
||||||
|
*/
|
||||||
|
|
||||||
|
$databases['default']['default'] = array(
|
||||||
|
'driver' => 'mysql',
|
||||||
|
'database' => '{{ drupal_db_name }}',
|
||||||
|
'username' => '{{ drupal_db_user }}',
|
||||||
|
'password' => '{{ drupal_db_password }}',
|
||||||
|
'host' => '{{ drupal_db_host|default(localhost) }}',
|
||||||
|
'prefix' => '',
|
||||||
|
);
|
||||||
|
|
||||||
|
$settings['trusted_host_patterns'] = array(
|
||||||
|
'^(.*\.)*{{ vagrant_hostname|default("*")|replace(".", "\.") }}$'
|
||||||
|
);
|
||||||
|
|
||||||
|
$config['system.performance']['css']['preprocess'] = FALSE;
|
||||||
|
$config['system.performance']['js']['preprocess'] = FALSE;
|
||||||
|
|
||||||
|
$config_directories = array(
|
||||||
|
CONFIG_SYNC_DIRECTORY => '../custom/config/sync',
|
||||||
|
);
|
||||||
|
|
||||||
|
$config['system.site']['name'] = '{{ drupal_site_name }}';
|
||||||
|
|
||||||
|
$settings['hash_salt'] = 's@lt1s4SQLn0t4$na1l$';
|
19
provisioning/box/pre-tasks/00-name_by_path.yml
Normal file
19
provisioning/box/pre-tasks/00-name_by_path.yml
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
---
|
||||||
|
- name: get root folder of project
|
||||||
|
shell: pwd
|
||||||
|
register: proj_root
|
||||||
|
args:
|
||||||
|
chdir: "{{ playbook_dir }}/../../"
|
||||||
|
delegate_to: localhost
|
||||||
|
become: false
|
||||||
|
|
||||||
|
- name: remove underscores from folder name
|
||||||
|
set_fact:
|
||||||
|
proj_root_safe: "{{ proj_root.stdout|basename|replace('_','-') }}"
|
||||||
|
|
||||||
|
# These values are NOT honored by Vagrant, but are still necessary for DrupalVM
|
||||||
|
# See also provisioning/box/config
|
||||||
|
- name: set vagrant hostname according to the project folder
|
||||||
|
set_fact:
|
||||||
|
vagrant_hostname: "{{ proj_root_safe }}.test"
|
||||||
|
vagrant_machine_name: "{{ proj_root_safe }}-vm"
|
|
@ -1,65 +0,0 @@
|
||||||
---
|
|
||||||
- name: Run composer install.
|
|
||||||
command: "composer install"
|
|
||||||
args:
|
|
||||||
chdir: "{{ drupal_composer_install_dir }}"
|
|
||||||
|
|
||||||
- name: Check if site is already installed.
|
|
||||||
command: "{{ drupal_composer_install_dir }}/vendor/bin/drush --root={{ drupal_composer_install_dir }}/web/ status bootstrap"
|
|
||||||
args:
|
|
||||||
chdir: "{{ drupal_composer_install_dir }}/web"
|
|
||||||
register: drupal_site_installed
|
|
||||||
failed_when: "drupal_site_installed.stdout is undefined"
|
|
||||||
changed_when: false
|
|
||||||
become: no
|
|
||||||
|
|
||||||
# - name: Ensure /etc/drush folder exists
|
|
||||||
# file:
|
|
||||||
# name: /etc/drush
|
|
||||||
# state: directory
|
|
||||||
# group: root
|
|
||||||
# owner: root
|
|
||||||
# mode: 0755
|
|
||||||
# become: yes
|
|
||||||
#
|
|
||||||
# - name: Install drushrc.php
|
|
||||||
# copy:
|
|
||||||
# src: drushrc.php
|
|
||||||
# dest: /etc/drush/drushrc.php
|
|
||||||
# owner: root
|
|
||||||
# group: root
|
|
||||||
# mode: 0755
|
|
||||||
# backup: no
|
|
||||||
# become: yes
|
|
||||||
|
|
||||||
# - name: Add RewriteMap to vhost.conf
|
|
||||||
# lineinfile:
|
|
||||||
# path: /etc/apache2/sites-enabled/vhosts.conf
|
|
||||||
# line: "RewriteMap legacy \"txt:{{ web_root}}/redirect/legacy.txt\""
|
|
||||||
# insertafter: "DocumentRoot \"{{ web_root }}/web\""
|
|
||||||
# become: yes
|
|
||||||
|
|
||||||
- name: Install Drupal with drush.
|
|
||||||
command: >
|
|
||||||
{{ drupal_composer_install_dir }}/vendor/bin/drush site-install -y
|
|
||||||
--root={{ drupal_composer_install_dir }}/web
|
|
||||||
--site-name={{ drupal_site_name }}
|
|
||||||
--account-name={{ drupal_account_name }}
|
|
||||||
--account-pass={{ drupal_account_pass }}
|
|
||||||
--site-mail={{ drupal_account_email }}
|
|
||||||
args:
|
|
||||||
chdir: "{{ drupal_composer_install_dir }}/web"
|
|
||||||
become: no
|
|
||||||
when: "force_reinstall|default(false) or 'Drupal bootstrap' not in drupal_site_installed.stdout"
|
|
||||||
|
|
||||||
- name: Run sass
|
|
||||||
command: sassc sass/styles.scss css/styles.css
|
|
||||||
args:
|
|
||||||
chdir: "{{ drupal_composer_install_dir }}/web/themes/{{ theme }}/"
|
|
||||||
when: theme != ""
|
|
||||||
|
|
||||||
# - name: Ensure ansible is installed
|
|
||||||
# apt:
|
|
||||||
# name: ansible
|
|
||||||
# state: latest
|
|
||||||
# become: yes
|
|
Loading…
Reference in a new issue