From 65153f090edd8a1915feb1bb1eb1595dd2979830 Mon Sep 17 00:00:00 2001 From: Shreerang Kale Date: Wed, 11 Jun 2025 11:48:37 +0530 Subject: [PATCH] Add playbooks to run tmkms service --- playbooks/tmkms/run-tmkms.yml | 41 +++++++++++++++++++ playbooks/tmkms/setup-tmkms.yml | 34 +++++++++++++++ playbooks/tmkms/tmkms-vars.example.yml | 5 +++ .../compose/docker-compose-tmkms.yml | 2 +- .../container-build/cerc-tmkms/build.sh | 1 + 5 files changed, 82 insertions(+), 1 deletion(-) create mode 100644 playbooks/tmkms/run-tmkms.yml create mode 100644 playbooks/tmkms/setup-tmkms.yml create mode 100644 playbooks/tmkms/tmkms-vars.example.yml diff --git a/playbooks/tmkms/run-tmkms.yml b/playbooks/tmkms/run-tmkms.yml new file mode 100644 index 0000000..2ea5d6b --- /dev/null +++ b/playbooks/tmkms/run-tmkms.yml @@ -0,0 +1,41 @@ +--- +- name: Run TMKMS stack + hosts: localhost + vars_files: + - tmkms-vars.yml + vars: + data_directory: "{{ lookup('env', 'DATA_DIRECTORY') }}" + tmkms_deployment_dir: "{{ lookup('env', 'TMKMS_DEPLOYMENT_DIR') | default('tmkms-deployment', true) }}" + tasks: + - name: Fail if DATA_DIRECTORY env var is not set + fail: + msg: >- + Required environment variable DATA_DIRECTORY is not set. + Please export DATA_DIRECTORY before running the playbook. + when: lookup('env', 'DATA_DIRECTORY') == '' + + - name: Ensure tmp directory exists inside tmkms-data volume + file: + path: "{{data_directory}}/{{ tmkms_deployment_dir }}/data/tmkms-data/tmp" + state: directory + mode: '0755' + + - name: Copy private validator key to tmkms deployment tmp directory + copy: + src: "{{ priv_validator_key_file_path }}" + dest: "{{data_directory}}/{{ tmkms_deployment_dir }}/data/tmkms-data/tmp/priv_validator_key.json" + mode: '0644' + + - name: Create config.env for tmkms deployment + copy: + dest: "{{data_directory}}/{{ tmkms_deployment_dir }}/config.env" + content: | + CERC_CHAIN_ID: "{{ cerc_chain_id }}" + NODE_IP: "{{ node_ip }}" + NODE_PORT: "{{ node_port }}" + CERC_KEY_PREFIX: "{{ cerc_key_prefix }}" + mode: '0777' + + - name: Start tmkms deployment + shell: | + laconic-so deployment --dir {{data_directory}}/{{ tmkms_deployment_dir }} start diff --git a/playbooks/tmkms/setup-tmkms.yml b/playbooks/tmkms/setup-tmkms.yml new file mode 100644 index 0000000..a4a070c --- /dev/null +++ b/playbooks/tmkms/setup-tmkms.yml @@ -0,0 +1,34 @@ +--- +- name: Setup TMKMS stack + hosts: localhost + vars_files: + - tmkms-vars.yml + vars: + data_directory: "{{ lookup('env', 'DATA_DIRECTORY') }}" + tmkms_deployment_dir: "{{ lookup('env', 'TMKMS_DEPLOYMENT_DIR') | default('tmkms-deployment', true) }}" + tmkms_spec_file: "{{data_directory}}/tmkms-spec.yml" + build_args: "{{ '--force-rebuild' if (lookup('env', 'FORCE_REBUILD') | default(omit, true)) not in [ 'false', 'False', '0' ] else '' }}" + tasks: + - name: Fail if DATA_DIRECTORY env var is not set + fail: + msg: >- + Required environment variable DATA_DIRECTORY is not set. + Please export DATA_DIRECTORY before running the playbook. + when: lookup('env', 'DATA_DIRECTORY') == '' + + - name: Setup required repositories for tmkms stack + shell: > + laconic-so --stack ~/cerc/laconicd-stack/stack-orchestrator/stacks/tmkms + setup-repositories --git-ssh --pull + + - name: Build tmkms container images + shell: | + laconic-so --stack ~/cerc/laconicd-stack/stack-orchestrator/stacks/tmkms build-containers {{ build_args }} + + - name: Create tmkms deployment spec file + shell: | + laconic-so --stack ~/cerc/laconicd-stack/stack-orchestrator/stacks/tmkms deploy init --output {{ tmkms_spec_file }} + + - name: Create tmkms deployment from spec file + shell: | + laconic-so --stack ~/cerc/laconicd-stack/stack-orchestrator/stacks/tmkms deploy create --spec-file {{ tmkms_spec_file }} --deployment-dir {{data_directory}}/{{ tmkms_deployment_dir }} diff --git a/playbooks/tmkms/tmkms-vars.example.yml b/playbooks/tmkms/tmkms-vars.example.yml new file mode 100644 index 0000000..bf77bad --- /dev/null +++ b/playbooks/tmkms/tmkms-vars.example.yml @@ -0,0 +1,5 @@ +priv_validator_key_file_path: "" +node_ip: "" +node_port: "26659" +cerc_key_prefix: "laconic" +cerc_chain_id: "laconic-mainnet" diff --git a/stack-orchestrator/compose/docker-compose-tmkms.yml b/stack-orchestrator/compose/docker-compose-tmkms.yml index 5285688..f6807cf 100644 --- a/stack-orchestrator/compose/docker-compose-tmkms.yml +++ b/stack-orchestrator/compose/docker-compose-tmkms.yml @@ -5,7 +5,7 @@ services: command: ["bash", "-c", "/opt/run.sh"] environment: CERC_CHAIN_ID: ${CERC_CHAIN_ID:-laconic-mainnet} - NODE_IP: ${NODE_IP:-localhost} + NODE_IP: ${NODE_IP} NODE_PORT: ${NODE_PORT:-26659} CERC_KEY_PREFIX: ${CERC_KEY_PREFIX:-laconic} volumes: diff --git a/stack-orchestrator/container-build/cerc-tmkms/build.sh b/stack-orchestrator/container-build/cerc-tmkms/build.sh index e929727..72fe654 100755 --- a/stack-orchestrator/container-build/cerc-tmkms/build.sh +++ b/stack-orchestrator/container-build/cerc-tmkms/build.sh @@ -6,4 +6,5 @@ source ${CERC_CONTAINER_BASE_DIR}/build-base.sh # See: https://stackoverflow.com/a/246128/1701505 SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) +# TODO: Use BACKEND=yubihsm build command arg docker build -t cerc/tmkms:local ${build_command_args} -f ${SCRIPT_DIR}/Dockerfile ${CERC_REPO_BASE_DIR}/tmkms