Upgrading an environment

The ACS installation is made of several components among which:

  • Content service
  • share
  • digital workspace
  • Search service

Pre-requisites

Before proceeding to an upgrade, an administrator needs to:

  • Make sure the upgrade path and documentation is followed
  • Appropriate backups of database, contentstore and indexes are done and can be restored in case a rollback is needed
  • Initial deployment must have been done using this Ansible playbook

Supported Components

Below is a description of the supported upgrade procedure for each supported component (at the time of writing it’s only hotfix upgrades for ACS repository)

Content service (repository)

Upgrade types

There are different kinds of upgrade one may want to proceed. For example a major upgrade would be upgrading from 7.0.x to 7.1.x. A minor upgrade (or service pack upgrade) would be moving from 7.0.0 to 7.0.1. Both major and minor upgrades require setting up a new environment and porting data and customizations from the source environment to the target one. The main reason behind this limitation is that major upgrades usually come with underlying software stack changes. These migrations cannot be done “in-place”.

Alfresco also releases some hotfixes and an hotfix upgrade would be moving from 7.0.1 to 7.0.1.4. This type of upgrade can be done “in-place” and is supported by the playbook.

Please note that “in-place” upgrade still need to match the upgrade pre-requisites

Proceeding to a hotfix “in-place” upgrade

In order to apply a later hotfix, you need to first match the pre-requisites, then change the ACS version to point to the hotfix version in the appropriate file, and finally run the playbook again.

In the example below we want to upgrade from the initial 7.0.1 installation to 7.0.1.4 hotfix:

Edit 7.0.N-extra-vars.yml and changes the the below snippet:

acs:
  repository: "{{ nexus_repository.enterprise_releases }}/alfresco-content-services-distribution"
  version: 7.0.1
  edition: Enterprise

to:

acs:
  repository: "{{ nexus_repository.enterprise_releases }}/alfresco-content-services-distribution"
  version: 7.0.1.4
  edition: Enterprise

IMPORTANT: make sure you do not set the version to a version number that’s not a hotfix (version number needs to be 4 digits and the 3 first ones needs to match the ones of the initially deployed version) This is because, as explained earlier, “in-place” upgrades are only supported for hotfixes

Once these changes are saved run the command below:

ansible-playbook playbooks/acs.yml -i inventory_ssh.yml -e "@7.0.N-extra-vars.yml"

Note: Use whatever inventory and config file that matches your use case If you’re applying a hotfix to the latest major release (7.1 as of writing) you don’t need to specify an extra config file with “-e @file”

After the playbook ran successfully your environment delivers the upgraded version of repo but the previous installation is still on the target machine. It is the admin responsibility to make sure the new system works as expected and no rollback is needed. If all is OK, the old installation previous installation can be cleaned by removing the folder: {{ binaries_folder }}/content-services-{{ acs.version }} (by default points to: /opt/alfresco/content-services-7.0.1).

Rolling back a hotfix “in-place” upgrade

If something goes wrong with the upgrade, or if tests are not successful after upgrade completed, rolling back the environment can be done by following the steps below:

  • restoring Database and contentstore backup
  • reverting the version changes to previous state in the config file (either group_vars/all or version specific config files)
  • running the playbook again.

Upgrade impacts

Hotfix “in-place” upgrades

This process will restart tomcat on all the repository nodes and there is no guarantee one node is stopped only after the others have restarted. As a consequence a short service outage needs to be scheduled