ansible_connection=ssh
This is a quick DHIS2 install guide using ansible. At the end, you will have one or more dhis2 instances running, configured with postgreSQL database and nginx or apache2 proxy. Out of the box, you'll benefit from comprehensive application and server resource monitoring with Glowroot APM (Application Performance Monitoring) and a Munin instance.
At the moment, the tools support two deployment architectures:-
You can also do a hybrid of both. Read more on Architectures
Ensure you have:
sudo ufw limit 22 # Assuming you did not change default ssh port (22)
sudo ufw enable
git clone https://github.com/dhis2/dhis2-server-tools
hosts
file using the already existing template,
hosts.template
. cp dhis2-server-tools/deploy/inventory/{hosts.template,hosts}
dhis2-server-tools/deploy/inventory/hosts
file and set fqdn
, and email
if you have any (you can leave them empty if you do not have).Set your preferred timezone
, you can leave other settings to their set defaults.
vim dhis2-server-tools/deploy/inventory/hosts
Below is an example screenshot
_NOTE: When the installation is on a single host with LXD, ensure your lxdnetwork is unique and not overlapping with any of your host network.
deploy.sh
script from within dhis2-server-tools/deploy/
directory.
cd dhis2-server-tools/deploy/
sudo ./deploy.sh
https://your-domain/dhis
https://your-domain/dhis-glowroot
https://your-domain/munin
A deployment server - This server is going to your an ansible-controller.
DHIS2
setup on the backend application server will be done from here. We will be using
deployment server and ansible-controller interchangeably in this guide.
SSH to the ansible-controller, Secure/Harden ssh, allow SSH port on the firewall, and finally enable the firewall. Be careful not to lock yourself out. Remember to allow your prefered SSH port before enabling the firewall.
sudo ufw limit 22 # # Assuming you did not change default SSH port (22)
sudo ufw enable
sudo apt -y update
sudo apt install -y software-properties-common
sudo apt-add-repository --yes --update ppa:ansible/ansible
sudo apt install -y ansible
git clone https://github.com/dhis2/dhis2-server-tools
cp dhis2-server-tools/deploy/inventory/{hosts.template,hosts}
ansible_connection=ssh
fqdn
, only set ansible_connection=ssh
and
timezone
, leave the other variables to their defaults.
vim dhis2-server-tools/deploy/inventory/hosts
Both password or key-based authentication would work. Key-based authentication is encouraged if you want your deployment to run fully automated (no prompts for SSH passwords). Use ansible ping module to test your connection to all the backend hosts except localhost (127.0.0.1)
cd dhis2-server-tools/deploy/
ansible 'all:!127.0.0.1' -m ping
If your SSH connection is successful, you will see SUCCESS messages (as shown in the screenshot below)
-K
or --ask-become-pass
cd dhis2-server-tools/deploy/
ansible-playbook dhis2.yml -u=username --ask-become-pass --ask-pass
Description |
-k or --ask-pass — prompts for SSH password -K or --ask-become-pass — enables sudo password prompt, you can set ansible_sudo_pass=STRONG_PASSWORD to avoid prompts -u — username for SSH connection |
---|
NOTE:
When your SSH connection is based on keys, there's no need for the -k
flag
If you don't specify an SSH username, it will automatically use currently logged in username.
After the script finishes running (without errors), access your dhis2,
glowroot and munin monitoring instances with your domain (fqdn) set in Step 5 — The
Install. If your setup is without
fqdn, use your servers' IP address
https://your-domain/dhis
https://your-domain/dhis-glowroot
https://your-domain/munin
Edit the inventory hosts file by running the command below and add an entry line under [instances]
category, ensure the instance name and the value of ansible_host
(instance private IP) are unique.
vim dhis2-server-tools/deploy/inventory/hosts
Example
[instances]
training ansible_host=172.19.2.12 database_host=postgres dhis2_version=2.39
re-run the installation as explained on Step 5 — The Install or Step 7: Run the playbook depending on your deployment architecture.
customssl.crt
and customssl.key
customssl.crt
should contain the main certificate concatenated with intermediate and
root certificates.dhis2-server-tools/deploy/roles/proxy/files/
directory, preserving their names.TLS_TYPE=customssl
vim dhis2-server-tools/deploy/inventory/hosts
At this point you should have dhis2 up and running. Let's assume your DHIS2 application is named dhis
In addition, the tools will also setup glowroot, an open source APM (Application Performance Monitoring) for Java-based applications, to monitor the performance of our DHIS2 application
Server monitoring is also setup with
munin