ACSF - First Pull Request

Getting started with Acquia Cloud Site Factory.

Prerequisites and Assumptions

1) You have an ACSF subscription 2) You have set up your SSH keys: Setup GitHub SSH Keys and Setup Acquia Cloud SSH Keys 3) You are using BLT and Lighting 4) You are using the Drupal Vm for local development 5) Your computer meets the minimum installation requirements (and then install the required applications). See the System Requirements. 6) You have access to your or Acquia-PSO's Github 7) You have access to your project's Acquia Cloud Environment

Step One: Sign into Acquia Cloud and the ACSF Management Console

Sign in to your Site Factory Management Console using an account with either the developer or release engineer role.

  • Sign into Acquia Cloud

  • Navigate from the ACE interface to the Site Factory Management Console

  • Sign into the ACSF management console with ACSF site username and password. (This is different from your ACE and Drupal site login)

Step Two: Create a site inside of the ACSF site collection

  • If you have not already, create a group / site collection and name it ACSFdemo

  • Name your site and pick a distribution profile, for this demo we are using lightning

Step Three: Local Prerequisites

If you are using the Drupal Vm you must download Vagrant and VirtualBox before you can continue.

Step Four: Setting up your git repo

  • Log into your github account and create a git repo or use the one provided by Acquia

  • Create a fork of the main project's repository to follow git flows best practices

  • Clone your fork

$ git clone git@github.com:<your repository>/<your project name>.git
  • Add the parent repository as an upstream

$ git remote add upstream git@github.com:acquia-pso/<your project name>.git
  • Install Composer Dependencies (warning: this can take some time based on internet speeds. If you have problems delete the vendor folder and rerun the command.)

$ composer install
  • Create a new branch, for this demo we will use PSO-000-ACSF-Init

git branch -b PSO-000-ACSF-Init
  • Update the DrupalVm's configuration file to match your configuration needs: Here is an example:

config.yml
# Update the hostname to the local development environment hostname.
vagrant_hostname: local.ACSFdemo.com
vagrant_machine_name: ACSFdemo

# Set the IP address so it doesn't conflict with other Drupal VM instances.
vagrant_ip: 192.168.90.80

# Use Ubuntu 16.04 LTS to match Acquia Cloud environments.
vagrant_box: geerlingguy/ubuntu1604
workspace: /root

# Set drupal_site_name to the project's human-readable name.
drupal_site_name: "ACSF Demo"

# Provide the path to the project root to Vagrant.
vagrant_synced_folders:
  # Set the local_path for the first synced folder to `.`.
  - local_path: .
    # Set the destination to the Acquia Cloud subscription machine name.
    destination: /var/www/acsfdemo
    type: nfs

drupal_build_composer_project: false
# Toggling this to `true` would invoke `composer install` with the
# projects own `composer.json` successfully.
drupal_build_composer: false
drupal_composer_path: false
drupal_composer_install_dir: "/var/www/acsfdemo"
drupal_core_path: "/var/www/acsfdemo/docroot"
ssh_home: /var/www/acsfdemo

# Multisite installations should configure additional domains here.
apache_vhosts:
  # Drupal VM's default domain, evaluating to whatever `vagrant_hostname` is set to (drupalvm.dev by default).
  - servername: "{{ drupal_domain }}"
    serveralias: "www.{{ drupal_domain }}"
    documentroot: "{{ drupal_core_path }}"
    extra_parameters: "{{ apache_vhost_php_fpm_parameters }}"
  # Domain for the Drupal VM Dashboard
  - servername: "dashboard.{{ drupal_domain }}"
    serveralias: "www.dashboard.{{ drupal_domain }}"
    documentroot: "/var/www/dashboard"
    extra_parameters: "{{ apache_vhost_php_fpm_parameters }}"
#  - servername: "local.second-drupal-site.com"
#    documentroot: "{{ drupal_core_path }}"
#    extra_parameters: "{{ apache_vhost_php_fpm_parameters }}"

# Multisite installations should configure additional databases here.
# It's recommended to prefix database names with 'drupal'. Otherwise,
# you'll need to add additional users in the 'mysql_users' section.
mysql_databases:
  - name: drupal
    encoding: utf8
    collation: utf8_general_ci
#  - name: drupal_two
#    encoding: utf8
#    collation: utf8_general_ci

mysql_users:
  - name: drupal
    host: "%"
    password: drupal
    priv: "drupal%.*:ALL"

mysql_wait_timeout: 28800
mysql_max_allowed_packet: 50M

# Set this to 'false' if you don't need to install drupal (using the drupal_*
# settings below), but instead copy down a database (e.g., using drush sql-sync).
drupal_install_site: false

# Drupal VM automatically creates a drush alias file in your ~/.drush folder if
# this variable is 'true'.
configure_drush_aliases: false

# This is required for front-end building tools.
nodejs_version: "8.x"
nodejs_npm_global_packages:
  - name: bower
  - name: gulp-cli
  - name: yarn
nodejs_install_npm_user: "{{ drupalvm_user }}"
npm_config_prefix: "/home/{{ drupalvm_user }}/.npm-global"
installed_extras: [adminer, selenium, drush, mailhog, memcached, nodejs, xdebug]

# PHP 7.1.
php_version: "7.1"
php_packages_extra:
  - "php{{ php_version }}-bz2"
  - "php{{ php_version }}-imagick"
  - imagemagick

# XDebug configuration.
php_xdebug_version: 2.5.0
# Change this value to 1 in order to enable xdebug by default.
php_xdebug_default_enable: 0
php_xdebug_coverage_enable: 0
php_xdebug_cli_disable: yes
php_xdebug_remote_enable: 1
php_xdebug_remote_connect_back: 1
# Use PHPSTORM for PHPStorm, sublime.xdebug for Sublime Text.
php_xdebug_idekey: PHPSTORM
php_xdebug_max_nesting_level: 256
php_xdebug_remote_port: "9000"
php_memory_limit: "512M"
php_max_execution_time: 300

# Acquia Search defaults to 4.5.1.
# solr_version: "4.5.1"

post_provision_scripts:
#  - "../../../acquia/blt/scripts/drupal-vm/configure-solr.sh"
  - "../../../acquia/blt/scripts/drupal-vm/post-provision.php"

Once you have setup your DrupalVm config files. Configure your BLT configuration file to match your site specific variables

project_root/blt/blt.yml
project:
  machine_name: acsfdemo
  prefix: acsfdemo
  human_name: 'ACSF Demo'
  profile:
    name: lightning
  local:
    protocol: http
    hostname: 'local.${project.machine_name}.com'
git:
  default_branch: master
  remotes: {  }
deploy:
  tag_source: true
drush:
  aliases:
    remote: '${project.machine_name}.test'
    local: self
    ci: self
  default_alias: '${drush.aliases.local}'
modules: null
cloud:
  appId: <cloud api id>
command-hooks:
  frontend-reqs:
    dir: '${docroot}/themes/custom/acsfdemo'
    command: 'npm run install-tools'
  frontend-assets:
    dir: '${docroot}/themes/custom/acsfdemo'
    command: 'npm run build'
cm:
  core:
    install_from_config: true
simplesamlphp: true
disable-targets.tests.security.check.updates: true

You can then use BLT to setup your local Drupal VM (warning: this can take some time based on internet speeds)

$ blt vm
  • SSH into your vagrant environment.

$ vagrant ssh

Step Five: Use BLT to create the necessary ACSF files

Use the BLT ACSF recipe to create the files necessary for ACSF deployments

blt recipes:acsf:init:all

This will create the following files & changes

  • sites.php

Do not modify settings.php or sites.php. These files must match in order for sites to work on ACSF.

Last updated

Was this helpful?