Information for: DEVELOPERS   PARTNERS

Updating with the acsf-init command

The acsf-init Drush command (provided as part of the Acquia Cloud Site Factory Connector module) prepares a custom Drupal distribution for development and deployment on Acquia Cloud Site Factory. The command appends information to your website’s sites/default/settings.php file, while also creating any necessary directories, identifying database credentials, creating a sites.php file, and copying files required by Acquia Cloud Site Factory.

Important

Because acsf-init will make changes to your website’s sites/default/settings.php file, move your customizations in your settings.php file to another file or into a post-settings.php hook. Failing to move your customizations could cause you to lose them when your settings.php is overwritten.

You must execute the acsf-init command whenever you update Drupal core or the Acquia Cloud Site Factory Connector module to a newer version.

Note

For more information about the different settings.php files in your Acquia Cloud Site Factory platform, see Understanding settings.php file differences.

Adding the Connector module to your codebase

To add the Acquia Cloud Site Factory Connector module to your codebase, use the command appropriate for your installed version of Drupal:

  • Drupal 7 – Download the module by using the drush dl acsf command.
  • Drupal 8 (using Acquia BLT 9 or greater) – Add the module to your codebase by using the blt recipes:acsf:init:all command.
  • Drupal 8 (without Acquia BLT) – Add the module to your composer.json by using the composer require drupal/acsf command.

Do not install the module in more than one location in your code repository (such as both docroot/profiles/profilename/modules/contrib and docroot/modules/contrib). Multiple instances of the module can prevent Acquia Cloud Site Factory from discovering and using the module.

To determine if your code repository contains more than one version of the module, run the following Git command in the docroot directory:

git ls-files "*acsf.info*"

Executing acsf-init after module or Drupal core updates

Whenever you update the Acquia Cloud Site Factory Connector module to a newer version, complete the following steps to update the module in your Drupal distribution:

  1. Download and extract the updated Acquia Cloud Site Factory Connector module from Drupal.org into your distribution with the command appropriate to your version of Drupal and Acquia BLT, replacing [path/to/acsf/acsf_init] with the path to your acsf_init module:

    • Composer

      composer update drupal/acsf --with-dependencies
      /local/site/vendor/bin/drush acsf-init --include="[path/to/acsf/acsf_init]/acsf/acsf_init" --root="/local/site/docroot" -y
      
    • Drupal 8 and Acquia BLT 9blt recipes:acsf:init:drush

    • Drupal 8 and Acquia BLT 8blt acsf:init

    The Drush command creates several directories and then copies files that Acquia Cloud Site Factory requires for its tasks, including locating the correct database credentials.

  2. Run the following Drush command from the docroot directory to ensure everything is in order before you commit the custom distribution to the repository:

    drush --include=/path/to/acsf/acsf_init acsf-init-verify
    

    The acsf-init-verify command should display the following message:

    acsf-init required files ok

  3. Commit and push your custom distribution’s files to Acquia Cloud Site Factory. For the specific procedure to guide you through this process, see Preparing for the code deployment.

  4. Update your Prod environment with the custom distribution’s files you pushed. For the specific procedure to guide you through this process, see Performing a production deployment.

Modifying settings.php for local development

The Acquia Cloud Site Factory Connector module ensures the settings.php file includes only the required settings for Acquia Cloud Site Factory. When developing a custom Drupal distribution locally for use on Acquia Cloud Site Factory, you may need to modify settings.php in ways conflicting with the requirements enforced by the Acquia Cloud Site Factory Connector module.

You can avoid conflicts by executing the acsf-init command with the --skip-default-settings parameter to skip the settings.php validation when running a Drupal website that includes the Acquia Cloud Site Factory Connector module, but is not on Acquia Cloud Site Factory, as in the following example:

drush --include=/path/to/acsf/acsf_init acsf-init --skip-default-settings

This parameter enables you to locally deploy and test a version of settings.php with settings needed for local development, while still ensuring your production websites use the version of settings.php required by Acquia Cloud Site Factory.

Note

You must execute acsf-init without --skip-default-settings before you commit and push your custom distribution’s files to Acquia Cloud Site Factory.

Troubleshooting: Is settings.php included in .gitignore?

The acsf-init command writes your sites/default/settings.php file when you prepare a custom Drupal distribution for development and deployment on Acquia Cloud Site Factory. If you cannot create new websites using your custom Drupal distribution, examine the .gitignore file in your code repository. Your .gitignore file may be set to exclude the settings.php file, so settings.php never gets pushed to the Acquia Cloud Site Factory. If your .gitignore file contains a line similar to the following example, delete it from .gitignore:

# Ignore configuration files that may contain sensitive information.
sites/*/settings.php

After deleting the line, commit your changes, and push your code again, as described in Performing a production deployment.

Common problems with acsf-init

If you do not execute the acsf-init command after a Acquia Cloud Site Factory platform release, or execute the command incorrectly, you may encounter one or more of the following errors:

Error Description
Verification failed: Verify that acsf-init has run
The file settings.php is out of date
If a hotfix fails, ensure your user has permission to overwrite the settings.php file, and then execute the command as described in Executing acsf-init after module or Drupal core updates.
Command acsf-init needs a higher bootstrap level to run The acsf-init command was executed from a directory without Git checkout or write permissions. Execute the command from a directory with these permissions to resolve the problem.
settings.php included in .gitignore If the acsf-init command fails, even when executed from the correct directory and by a user with correct permissions, check that your website’s settings.php is not included in your .gitignore file, which will cause acsf-init to fail. Remove settings.php from your .gitignore file to resolve the problem.