Monitor deployment playbook (#133)
* Introduced monitor deployment playbook * Timeouts * dai deployment block * wetc deployment blocks * Corrected path * Typo. * Added monitor to execution readme. * Monitor port. * Check on start * Timeouts * check-and-start
This commit is contained in:
parent
4281adfd95
commit
3f27b98b8b
@ -42,9 +42,13 @@ cp hosts.yml.example hosts.yml
|
|||||||
<host_ip_C>:
|
<host_ip_C>:
|
||||||
ansible_user: <user>
|
ansible_user: <user>
|
||||||
#syslog_server_port: "<protocol>://<ip>:<port>"
|
#syslog_server_port: "<protocol>://<ip>:<port>"
|
||||||
|
monitor:
|
||||||
|
hosts:
|
||||||
|
<host_ip_B>:
|
||||||
|
ansible_user: <user>
|
||||||
```
|
```
|
||||||
|
|
||||||
The config above would install the Oracle on `<host_ip_A>`, UI on `<host_ip_C>`, and both Oracle and UI on `<host_ip_B>`.
|
The config above would install the Oracle on `<host_ip_A>`, UI on `<host_ip_C>`, and both Oracle, UI and Monitor on `<host_ip_B>`.
|
||||||
|
|
||||||
Example config for installing only UI:
|
Example config for installing only UI:
|
||||||
```yaml
|
```yaml
|
||||||
|
@ -45,6 +45,7 @@ Component | Service Name
|
|||||||
--- | ---
|
--- | ---
|
||||||
Oracle | poabridge
|
Oracle | poabridge
|
||||||
UI | tokenbridge-ui
|
UI | tokenbridge-ui
|
||||||
|
Monitor | tokenbridge-monitor
|
||||||
|
|
||||||
Use the default `SysVinit` commands to `start`, `stop`, `restart`, and `rebuild` the service and to check the `status` of the service.
|
Use the default `SysVinit` commands to `start`, `stop`, `restart`, and `rebuild` the service and to check the `status` of the service.
|
||||||
|
|
||||||
|
@ -39,3 +39,12 @@ UI_HOME_EXPLORER_ADDRESS_TEMPLATE: https://blockscout.com/poa/dai/address/%s
|
|||||||
UI_FOREIGN_EXPLORER_ADDRESS_TEMPLATE: https://blockscout.com/eth/mainnet/address/%s
|
UI_FOREIGN_EXPLORER_ADDRESS_TEMPLATE: https://blockscout.com/eth/mainnet/address/%s
|
||||||
UI_HOME_GAS_PRICE_FALLBACK: 1000000000
|
UI_HOME_GAS_PRICE_FALLBACK: 1000000000
|
||||||
UI_FOREIGN_GAS_PRICE_FALLBACK: 10000000000
|
UI_FOREIGN_GAS_PRICE_FALLBACK: 10000000000
|
||||||
|
|
||||||
|
## Monitor
|
||||||
|
MONITOR_PORT: 3003
|
||||||
|
MONITOR_HOME_DEPLOYMENT_BLOCK: 759
|
||||||
|
MONITOR_FOREIGN_DEPLOYMENT_BLOCK: 6478417
|
||||||
|
MONITOR_GAS_LIMIT: 300000
|
||||||
|
MONITOR_GAS_PRICE_FALLBACK: 21
|
||||||
|
MONITOR_LEFT_TX_THRESHOLD: 100
|
||||||
|
MONITOR_CRON_SCHEDULE: "* * * * *"
|
||||||
|
@ -39,3 +39,12 @@ UI_HOME_EXPLORER_ADDRESS_TEMPLATE: https://blockscout.com/poa/sokol/address/%s
|
|||||||
UI_FOREIGN_EXPLORER_ADDRESS_TEMPLATE: https://blockscout.com/eth/kovan/address/%s
|
UI_FOREIGN_EXPLORER_ADDRESS_TEMPLATE: https://blockscout.com/eth/kovan/address/%s
|
||||||
UI_HOME_GAS_PRICE_FALLBACK: 1000000000
|
UI_HOME_GAS_PRICE_FALLBACK: 1000000000
|
||||||
UI_FOREIGN_GAS_PRICE_FALLBACK: 1000000000
|
UI_FOREIGN_GAS_PRICE_FALLBACK: 1000000000
|
||||||
|
|
||||||
|
## Monitor
|
||||||
|
MONITOR_PORT: 3003
|
||||||
|
MONITOR_HOME_DEPLOYMENT_BLOCK: 0
|
||||||
|
MONITOR_FOREIGN_DEPLOYMENT_BLOCK: 0
|
||||||
|
MONITOR_GAS_LIMIT: 300000
|
||||||
|
MONITOR_GAS_PRICE_FALLBACK: 21
|
||||||
|
MONITOR_LEFT_TX_THRESHOLD: 100
|
||||||
|
MONITOR_CRON_SCHEDULE: "* * * * *"
|
||||||
|
@ -39,3 +39,12 @@ UI_HOME_EXPLORER_ADDRESS_TEMPLATE: https://blockscout.com/etc/mainnet/address/%s
|
|||||||
UI_FOREIGN_EXPLORER_ADDRESS_TEMPLATE: https://blockscout.com/eth/mainnet/address/%s
|
UI_FOREIGN_EXPLORER_ADDRESS_TEMPLATE: https://blockscout.com/eth/mainnet/address/%s
|
||||||
UI_HOME_GAS_PRICE_FALLBACK: 15000000000
|
UI_HOME_GAS_PRICE_FALLBACK: 15000000000
|
||||||
UI_FOREIGN_GAS_PRICE_FALLBACK: 10000000000
|
UI_FOREIGN_GAS_PRICE_FALLBACK: 10000000000
|
||||||
|
|
||||||
|
## Monitor
|
||||||
|
MONITOR_PORT: 3003
|
||||||
|
MONITOR_HOME_DEPLOYMENT_BLOCK: 7703292
|
||||||
|
MONITOR_FOREIGN_DEPLOYMENT_BLOCK: 7412459
|
||||||
|
MONITOR_GAS_LIMIT: 300000
|
||||||
|
MONITOR_GAS_PRICE_FALLBACK: 21
|
||||||
|
MONITOR_LEFT_TX_THRESHOLD: 100
|
||||||
|
MONITOR_CRON_SCHEDULE: "* * * * *"
|
||||||
|
@ -11,3 +11,7 @@ sokol-kovan:
|
|||||||
127.0.0.1:
|
127.0.0.1:
|
||||||
ansible_user: ubuntu
|
ansible_user: ubuntu
|
||||||
#syslog_server_port: "udp://127.0.0.1:514"
|
#syslog_server_port: "udp://127.0.0.1:514"
|
||||||
|
monitor:
|
||||||
|
hosts:
|
||||||
|
127.0.0.1:
|
||||||
|
ansible_user: ubuntu
|
||||||
|
2
deployment/roles/monitor/meta/main.yml
Normal file
2
deployment/roles/monitor/meta/main.yml
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
dependencies:
|
||||||
|
- role: common
|
4
deployment/roles/monitor/tasks/jumpbox.yml
Normal file
4
deployment/roles/monitor/tasks/jumpbox.yml
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
- name: Launch container
|
||||||
|
shell: docker-compose up -d
|
||||||
|
args:
|
||||||
|
chdir: "{{ bridge_path }}/monitor"
|
3
deployment/roles/monitor/tasks/main.yml
Normal file
3
deployment/roles/monitor/tasks/main.yml
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
- include_tasks: pre_config.yml
|
||||||
|
- include_tasks: jumpbox.yml
|
||||||
|
- include_tasks: servinstall.yml
|
4
deployment/roles/monitor/tasks/pre_config.yml
Normal file
4
deployment/roles/monitor/tasks/pre_config.yml
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
- name: Install .env config
|
||||||
|
template:
|
||||||
|
src: .env.j2
|
||||||
|
dest: "{{ bridge_path }}/monitor/.env"
|
17
deployment/roles/monitor/tasks/servinstall.yml
Normal file
17
deployment/roles/monitor/tasks/servinstall.yml
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
# This role creates a tokenbridge-monitor service which is designed to manage docker-compose monitor deployment.
|
||||||
|
# /etc/init.d/tokenbridge-monitor start, status, stop, restart - does what the services usually do in such cases.
|
||||||
|
# /etc/init.d/tokenbridge-monitor rebuild - builds a new monitor deployment from scratch.
|
||||||
|
---
|
||||||
|
- name: "Set the service"
|
||||||
|
template:
|
||||||
|
src: tokenbridge-monitor.j2
|
||||||
|
dest: "/etc/init.d/tokenbridge-monitor"
|
||||||
|
owner: root
|
||||||
|
mode: 755
|
||||||
|
|
||||||
|
- name: "Start/Enable the service"
|
||||||
|
service:
|
||||||
|
name: "tokenbridge-monitor"
|
||||||
|
state: started
|
||||||
|
enabled: yes
|
||||||
|
use: service
|
12
deployment/roles/monitor/templates/.env.j2
Normal file
12
deployment/roles/monitor/templates/.env.j2
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
HOME_RPC_URL={{ HOME_RPC_URL }}
|
||||||
|
FOREIGN_RPC_URL={{ FOREIGN_RPC_URL }}
|
||||||
|
HOME_BRIDGE_ADDRESS={{ HOME_BRIDGE_ADDRESS }}
|
||||||
|
FOREIGN_BRIDGE_ADDRESS={{ FOREIGN_BRIDGE_ADDRESS }}
|
||||||
|
HOME_DEPLOYMENT_BLOCK={{ MONITOR_HOME_DEPLOYMENT_BLOCK }}
|
||||||
|
FOREIGN_DEPLOYMENT_BLOCK={{ MONITOR_FOREIGN_DEPLOYMENT_BLOCK }}
|
||||||
|
GAS_PRICE_SPEED_TYPE={{ HOME_GAS_PRICE_SPEED_TYPE }}
|
||||||
|
GAS_LIMIT={{ MONITOR_GAS_LIMIT }}
|
||||||
|
GAS_PRICE_FALLBACK={{ MONITOR_GAS_PRICE_FALLBACK }}
|
||||||
|
LEFT_TX_THRESHOLD={{ MONITOR_LEFT_TX_THRESHOLD }}
|
||||||
|
PORT={{ MONITOR_PORT }}
|
||||||
|
CRON_SCHEDULE={{ MONITOR_CRON_SCHEDULE }}
|
76
deployment/roles/monitor/templates/tokenbridge-monitor.j2
Normal file
76
deployment/roles/monitor/templates/tokenbridge-monitor.j2
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
#! /bin/bash
|
||||||
|
|
||||||
|
### BEGIN INIT INFO
|
||||||
|
# Provides: tokenbridge-monitor
|
||||||
|
# Required-Start: $remote_fs $syslog
|
||||||
|
# Required-Stop: $remote_fs $syslog
|
||||||
|
# Default-Start: 2 3 4 5
|
||||||
|
# Default-Stop: 0 1 6
|
||||||
|
# Short-Description: Start daemon at boot time
|
||||||
|
# Description: Enable service provided by daemon.
|
||||||
|
### END INIT INFO
|
||||||
|
|
||||||
|
WORKDIR="{{ '/home/' + compose_service_user | default('poadocker') + '/' + bridge_path + '/monitor' if bridge_path[:1] != "/" else bridge_path + '/monitor' }}"
|
||||||
|
|
||||||
|
start(){
|
||||||
|
echo "Starting TokenBridge Monitor.."
|
||||||
|
cd $WORKDIR
|
||||||
|
sudo -u "{{ compose_service_user }}" /usr/local/bin/docker-compose down -v
|
||||||
|
sudo -u "{{ compose_service_user }}" /usr/local/bin/docker-compose rm -fv
|
||||||
|
sudo -u "{{ compose_service_user }}" /usr/local/bin/docker-compose up --detach
|
||||||
|
}
|
||||||
|
|
||||||
|
stop(){
|
||||||
|
echo "Stopping TokenBridge Monitor.."
|
||||||
|
cd $WORKDIR
|
||||||
|
sudo -u "{{ compose_service_user }}" /usr/local/bin/docker-compose down -v
|
||||||
|
sleep 2
|
||||||
|
}
|
||||||
|
|
||||||
|
status(){
|
||||||
|
echo "TokenBridge Monitor status:"
|
||||||
|
cd $WORKDIR
|
||||||
|
sudo -u "{{ compose_service_user }}" /usr/local/bin/docker-compose ps
|
||||||
|
}
|
||||||
|
|
||||||
|
rebuild(){
|
||||||
|
echo "Rebuild TokenBridge Monitor.."
|
||||||
|
cd $WORKDIR
|
||||||
|
sudo -u "{{ compose_service_user }}" /usr/local/bin/docker-compose down -v
|
||||||
|
sudo -u "{{ compose_service_user }}" /usr/local/bin/docker-compose rm -fv
|
||||||
|
sudo -u "{{ compose_service_user }}" /usr/local/bin/docker-compose up --detach --force-recreate --no-deps --build
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
|
||||||
|
start)
|
||||||
|
start
|
||||||
|
;;
|
||||||
|
|
||||||
|
stop)
|
||||||
|
stop
|
||||||
|
;;
|
||||||
|
|
||||||
|
status)
|
||||||
|
status
|
||||||
|
;;
|
||||||
|
|
||||||
|
restart)
|
||||||
|
echo "Restarting TokenBridge Monitor.."
|
||||||
|
stop
|
||||||
|
start
|
||||||
|
;;
|
||||||
|
|
||||||
|
rebuild)
|
||||||
|
rebuild
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo $"Usage: $0 {start|stop|restart|rebuild|status}"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
|
||||||
|
exit 0
|
@ -8,3 +8,8 @@
|
|||||||
become: true
|
become: true
|
||||||
roles:
|
roles:
|
||||||
- { role: ui }
|
- { role: ui }
|
||||||
|
- name: Install Monitor
|
||||||
|
hosts: monitor
|
||||||
|
become: true
|
||||||
|
roles:
|
||||||
|
- { role: monitor }
|
||||||
|
@ -14,4 +14,4 @@ RUN mv ./contracts/build ./ && rm -rf ./contracts/* ./contracts/.[!.]* && mv ./b
|
|||||||
COPY ./monitor ./monitor
|
COPY ./monitor ./monitor
|
||||||
WORKDIR /mono/monitor
|
WORKDIR /mono/monitor
|
||||||
CMD echo "To start the monitor run:" \
|
CMD echo "To start the monitor run:" \
|
||||||
"yarn start"
|
"yarn check-and-start"
|
||||||
|
@ -10,4 +10,4 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
- NODE_ENV=production
|
- NODE_ENV=production
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
entrypoint: yarn start
|
entrypoint: "yarn check-and-start"
|
||||||
|
@ -4,8 +4,9 @@
|
|||||||
"description": "",
|
"description": "",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"check-all": "node checkWorker.js && node checkWorker2.js",
|
"check-all": "timeout -s 9 5m node checkWorker.js && timeout -s 9 5m node checkWorker2.js",
|
||||||
"start": "node index.js",
|
"start": "node index.js",
|
||||||
|
"check-and-start": "yarn check-all && yarn start",
|
||||||
"lint": "eslint . --ignore-path ../.eslintignore",
|
"lint": "eslint . --ignore-path ../.eslintignore",
|
||||||
"lint:fix": "eslint . --fix"
|
"lint:fix": "eslint . --fix"
|
||||||
},
|
},
|
||||||
|
Loading…
Reference in New Issue
Block a user