Deploying Alfresco Search services
Deploying Alfresco Search service or Insight Engine can be challenging at times. There are situations where you might want to deploy this service on its own, without deploying the full ACS platform. That may happen if your ACS workload runs on kubernetes or if you want to prepare a new Search service installation to run a big re-indexation while running normal operations on the ACS platform.
In order to allow for such scenario, the search
role within this playbook has been made a bit more independent. The document below presents an example playbook which tackles this use case and sets up Alfresco Search services in a replication manner.
License consideration
Remember that in order to install Search service on dedicated hosts, you need to purchase a Search service license. If you’re running community or do not have a license, Search service must always be installed alongside ACS repository.
Required inventory
While the search
role do not have any strong requirement at the inventory level, the playbook playbooks/search_replication.yml
leverage the same inventory structure the playbooks/acs.yml
. So if you use the playbook as-is, you’ll need to give a list of hosts which belong to the search
group. Of course you can reuse the inventory of the main playbook and simply add the search hosts you want to provision.
all:
children:
search:
search0.infra.local:
search1.infra.local:
search2.infra.local:
Role parameters
Role’s parameters are defined within the roles/search/meta/argument_specs.yml
file. Below we’ll just expose the most common ones that may be useful for the type of use-cases mentioned earlier.
-
search_shared_secret
: This parameter is the only one that’s required and defines the shared secret used for repo<–>search authenticated communication. Theplaybooks/search_replication.yml
playbook leverage the secrets configured as part of the main playbook. Refer to secrets documentation in order to know more. -
search_topology
: defines the type of setup to deploy. Can be eitherstandalone
orreplication
. The playbook usesreplication
. -
search_master_hostname
: gives the playbook the hostname or IP address of the master host, that read-replicas will poll for index updates. This parameter is only useful if the inventory hostname is not reachable by its name from other hosts. -
alfresco.host
: defines the hostname or IP address of the repository to track. -
alfresco.port
: defines the plain TCP port of the repository to track. -
alfresco.port_ssl
: defines the encrypted TCP port of the repository to track.
In the playbook, role’s parameters above are mapped within the playbook variables:
-
search_shared_secret
<=reposearch_shared_secret
-
search_master_hostname
<=solr_master_host
-
alfresco.host
<=ecmhost
When running the example playbook you need to use the playbook variables.
Using the Search replication playbook
Assuming the example playbook above, the command below will deploy replicated Search service platform on 3 hosts, the first of which will be used as the master (and is reachable by other hosts on the IP 192.168.0.56), and this same host will be tracking the repo located at 192.168.0.138.
ansible-playbook -i inventory_ssh.yml playbooks/search_replication.yml \
-K \
-e ecm_host=192.168.0.138 \
-e solr_master_host=192.168.0.56
Further notes about setup
There are more actions required at that point to complete the installation:
-
Configure ACS repo to use Solr6 index if not done already.
-
Configure a load-balancer to route search requests to read-replicas
-
Configure ACS to use the load-balancer as the search host.
These actions below can be added to the playbook to match your own setup.