This Ansible playbook automates the deployment and configuration of story protocol execution and consensus client. It ensures that the necessary dependencies, configuration files, and services are properly set up and running.
Before using this playbook, ensure the following requirements are met:
- Ansible version: Make sure you have Ansible 2.15+ installed.
- SSH Access: Passwordless SSH access to all target servers.
- Python: Python 3.x installed on the control node and all target hosts.
- Privileges: The user running the playbook must have sudo privileges on the target machines.
Note: The following ansible playbook dynamically fetches private validator and node keys from hashicorp vault.
If Ansible is not installed, visit the official documentation for detailed instructions on how to install Ansible on various Linux distributions:
Clone this repository to your Ansible control node:
git clone https://github.com/encapsulate-xyz/story-node-playbook.git
cd story-node-playbookDefine your target servers' IP address or DNS in the inventory folder, and select either mainnet.yml or testnet.yml to update.
Example for testnet.yml
---
all:
vars:
env: testnet
children:
storyprotocol:
hosts:
validator.storyprotocol.testnet.encapsulate.xyz:
type: validator
fullnode.storyprotocol.testnet.encapsulate.xyz:
type: fullnodeThis playbook allows customization through several variables. You can define these variables in the following locations:
group_vars/all.yml: Contains all the port configurations.group_vars/mainnet.ymlorgroup_vars/testnet.yml: Contains version-specific variables.group_vars/vault.yml: Store secret variables, such asjwtsecret, in this file.
-
First, install the dependencies:
ansible-galaxy install -r requirements.yml
-
Create a
ansible_vault_passwordfile containing ansible-vault password -
Then run the playbook:
- To deploy consensus client:
ansible-playbook setup_consensus_client.yml -l validator.storyprotocol.testnet.encapsulate.xyz- To deploy execution client:
ansible-playbook setup_execution_client.yml -l validator.storyprotocol.testnet.encapsulate.xyzAfter you run the playbook, it will ask for confirmation, displaying all the variables and the IP address or DNS of the server you are going to deploy.
Example output:
TASK [Display environment being deployed to] ***************************************************************************************************
ok: [validator.storyprotocol.testnet.encapsulate.xyz] => {
"msg": [
"Deploying to Host: validator.storyprotocol.testnet.encapsulate.xyz",
"Groups: ['storyprotocol']",
"Project: storyprotocol",
"Environment: testnet",
"Type: validator",
"Version: v0.11.0",
"Username: storyprotocol-consensus",
"Service Name: storyprotocol-consensus",
"Operating System: linux",
"System Architecture: amd64"
]
}
TASK [Set all port variables dynamically] ******************************************************************************************************
ok: [validator.storyprotocol.testnet.encapsulate.xyz]
TASK [Display all port variables] **************************************************************************************************************
ok: [validator.storyprotocol.testnet.encapsulate.xyz] => {
"msg": [
"P2P Port: 10056",
"RPC Port: 10057",
"ABCI Port: 10058",
"Prometheus Port: 10060",
"Pprof Port: 10061",
"REST API Port: 10017",
"Rosetta Port: 10080",
"gRPC Port: 10090",
"gRPC-Web Port: 10091"
]
}
TASK [Confirm deployment details] **************************************************************************************************************
[Confirm deployment details]
Press 'Enter' to continue with the deployment or Ctrl+C to cancel:
ok: [validator.storyprotocol.testnet.encapsulate.xyz]
TASK [Please confirm again] ********************************************************************************************************************
ok: [validator.storyprotocol.testnet.encapsulate.xyz] => {
"msg": [
"Deploying to Host: validator.storyprotocol.testnet.encapsulate.xyz",
"Project: storyprotocol",
"Environment: testnet",
"Type: validator"
]
}
TASK [Confirm deployment details] **************************************************************************************************************
[Confirm deployment details]
Press 'Enter' to continue with the deployment or Ctrl+C to cancel:
ok: [validator.storyprotocol.testnet.encapsulate.xyz]