Explained below are the steps requied to run the playbook, along with my thoughtprocess, decision making and challenges faced along the way.
I broke down the requirements as follows.
- Install Passbolt
- Option to setup Passbolt with SSL if required
- Ubuntu 20.04 to be used at all intances throughout the experiment
- Vagrant is required for local testing
- Install Dependencies
-
cd vagrant && Vagrant up
: This step assumes Vagrant is installed and configured in your local developer environment -
ansible-playbook -i inventory/hosts playbook.yaml --limit vagrant
Thelimit
command will narrow down the group under the hosts inventroy file. ex: if you want to deploy to alldev
servers you can specify--limit dev
-
If
SSL
is required, adjust the parameters accordingly and changepassboltDeploy
topassboltDeploySSL
instead. This assumes there is a valid dns record pointing to the IP hosting the server
- Directly run
ansible-playbook -i inventory/hosts playbook.yaml --limit <cloud_group_name>
After carefully reading the passbolt documentation, the least time consuming approach ( that has production grade validity ) is installing via docker. This required the following steps
- update the os modules
- install
docker
anddocker compose
- setup the correct docker-compose yaml file in the templates and run it
- setup the backup cron job to exec into the containers as highlighed in the documentation
Decision Reason :
- to avoid unnecessary dependencies installed on the machine. Often times there are
dep clashes
that can result in some module causing the whole installation to be stalled. - Any potential issues can be easily cleaned up using the containers
- Accessible logs in one place for troubelshooting
- Ex scenario: 1 first deployed using the default compose file which resulted in passbolt not showing data, this was due to the
APP_FULL_BASE_URL: https://passbolt.local
and the dns config was not present
- Ex scenario: 1 first deployed using the default compose file which resulted in passbolt not showing data, this was due to the
- Vagrant : Vagrnat setup was failing via VB provider on m1 mac due to arch type, resolved by switcing to and x64 arch machine for local dev
- Selecting the right best practise : there are many standars that can be adopted for ansible. I followed the role based approach.
- Finding ubuntu 20.04 in AWS was a challange, baseOS is deprecated, however, it was available in Azure. (AWS has one variant with sql pre installed )
- Lack of cloud sotre for secure backup although backup was setup ( I have setup a generic template )
Although I was unabled to integrate, here are some of my suggestions.
- Load balancer should be in a separate server, while passbolt can be across 3 servers for High Availability
- In HA mode, db's can be separated out from the main compute engine (db store)
- Upgrading from ubuntu 20.04 to a new release for LTS ( long term support )
List of resources
[resources : provided]
[resources : used]