These steps are for installing on a server OS directly and require experience with remote configuration.
To use Ansible, your SSH public key should be in
.ssh/authorized_keys on the remote host and you must also create an /etc/ansible/hosts or similar with the IP address or hostname of the remote host. An
ansible/hosts file that has an entry for localhost and one server would be:
[local] localhost ansible_connection=local [servers] 172.16.174.137
A example playbook is provided to show how to create a
fr user with sudo permissions using Ansible to be used with VM. See
/packaging for Terraform (Digital Ocean) and Vagrant (CentOS 7 and Ubuntu 18) for working examples.
Create a VM. Make sure to include a public ssh key for the user who will install prerequisites.
fr user and gives it sudo access:
ansible-playbook -i /usr/local/etc/ansible/hosts user.yaml
As necessary, add additional ssh keys to the user
fr. (Ensure that the user’s public key is available on github, ie. https://github.com/citizenrich.keys):
ansible-playbook -i /usr/local/etc/ansible/hosts keys.yaml
Prerequisites: git, redis, mongo, nodejs, native build pkgs for node:
# for centos ansible-playbook -i /usr/local/etc/ansible/hosts prep_centos.yaml # for ubuntu ansible-playbook -i /usr/local/etc/ansible/hosts prep_ubuntu.yaml
Install the services and load and start them in systemd:
# prepare hearth and the app ansible-playbook -i /usr/local/etc/ansible/hosts install.yaml # install into systemd and begin the hearth and backend services ansible-playbook -i /usr/local/etc/ansible/hosts services.yaml
Check that all processes are running and see the latest status for hearth and the backend:
ansible-playbook -i /usr/local/etc/ansible/hosts troubleshoot.yaml
install playbook updates intrahealth/hearth and app repos on the remote server. Rerunning the
services.yaml playbook updates services. Services are restarted (not just reloaded).
install.yaml playbook uses:
git pullto get the latest updates to the master branch.
npm installto update packages.
# on centos, use `mongod` systemctl status mongod.service # on ubuntu,use `mongodb` systemctl status mongodb.service systemctl status redis.service systemctl status facility-recon.service systemctl status hearth.service
# on centos, use `mongod` journalctl -u mongod.service -b # on ubuntu,use `mongodb` journalctl -u mongodb.service -b journalctl -u facility-recon.service -b journalctl -u hearth.service -b journalctl -u redis.service -b
sudo systemctl restart facility-recon.service sudo systemctl restart hearth.service
# on centos, use `mongod` sudo systemctl restart mongod.service # on ubuntu,use `mongodb` sudo systemctl restart mongodb.service sudo systemctl restart redis.service
Ensure processes are listening on the correct ports: See https://serverfault.com/questions/725262/what-causes-the-connection-refused-message
# gui: 8080, backend: 3000, hearth: 3447, mongo: 27017, redis: 6379 sudo netstat -tnlp | grep :8080 sudo netstat -tnlp | grep :3000 sudo netstat -tnlp | grep :3447 sudo netstat -tnlp | grep :27017 sudo netstat -tnlp | grep :6379
Check for firewall blocks. Rerun the gui and:
sudo tcpdump -n icmp