From 23f3a4c8ed3fd03b6440cce109e9e0f2dda7559b Mon Sep 17 00:00:00 2001 From: Prathamesh Musale Date: Mon, 9 Sep 2024 13:37:41 +0000 Subject: [PATCH] Add instructions to run Ansible playbooks on remote machines (#5) Part of [Automate testnet nitro deployments using Ansible](https://www.notion.so/Automate-testnet-nitro-deployments-using-Ansible-0d15579430204b8daba9a8aa31e07568) Co-authored-by: Adw8 Reviewed-on: https://git.vdb.to/cerc-io/testnet-ops/pulls/5 Co-authored-by: Prathamesh Musale Co-committed-by: Prathamesh Musale --- .gitignore | 8 +- README.md | 5 +- hosts.example.ini | 2 + l2-setup/.gitignore | 3 + l2-setup/README.md | 114 ++++++++++++++---- l2-setup/{l2-vars.yml => l2-vars.example.yml} | 0 l2-setup/setup-vars.yml | 2 +- nitro-bridge-setup/.gitignore | 3 + nitro-bridge-setup/README.md | 82 +++++++++++-- ...rs-example.yml => bridge-vars.example.yml} | 2 +- nitro-bridge-setup/setup-vars.yml | 2 +- .../templates/specs/bridge-nitro-spec.yml.j2 | 10 +- nitro-contracts-setup/.gitignore | 3 + nitro-contracts-setup/README.md | 74 ++++++++++-- ...-example.yml => contract-vars.example.yml} | 2 +- nitro-contracts-setup/setup-vars.yml | 2 +- .../specs/nitro-contracts-spec.yml.j2 | 2 +- nitro-nodes-setup/.gitignore | 3 + nitro-nodes-setup/README.md | 83 +++++++++++-- ...ars-example.yml => nitro-vars.example.yml} | 0 nitro-nodes-setup/setup-vars.yml | 2 +- .../templates/configs/l1-nitro-config.env.j2 | 6 +- .../templates/configs/l2-nitro-config.env.j2 | 8 +- 23 files changed, 336 insertions(+), 82 deletions(-) create mode 100644 hosts.example.ini create mode 100644 l2-setup/.gitignore rename l2-setup/{l2-vars.yml => l2-vars.example.yml} (100%) create mode 100644 nitro-bridge-setup/.gitignore rename nitro-bridge-setup/{bridge-vars-example.yml => bridge-vars.example.yml} (89%) create mode 100644 nitro-contracts-setup/.gitignore rename nitro-contracts-setup/{contract-vars-example.yml => contract-vars.example.yml} (77%) create mode 100644 nitro-nodes-setup/.gitignore rename nitro-nodes-setup/{nitro-vars-example.yml => nitro-vars.example.yml} (100%) diff --git a/.gitignore b/.gitignore index 09001e4..788482a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1 @@ -l2-setup/out -nitro-bridge-setup/out -nitro-bridge-setup/bridge-vars.yml -nitro-nodes-setup/nitro-vars.yml -nitro-nodes-setup/out -nitro-contracts-setup/out -nitro-contracts-setup/contract-vars.yml +hosts.ini diff --git a/README.md b/README.md index c29e4fe..4031661 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ - Set Locale Encoding to `UTF-8` - Ansible requires the locale encoding to be `UTF-8`. You can either use the `LANG` prefix when running Ansible commands or set the system-wide locale. + Ansible requires the locale encoding to be `UTF-8`. You can either use the `LANG` prefix when running Ansible commands or set the system-wide locale - Option 1: Use `LANG` Prefix in Commands @@ -32,7 +32,7 @@ LANG="en_US.UTF-8" ``` - - Reboot your system or log out and log back in to apply the changes. + - Reboot your system or log out and log back in to apply the changes - Reference: @@ -41,3 +41,4 @@ - [l2-setup](./l2-setup/README.md) - [nitro-node-setup](./nitro-nodes-setup/README.md) - [nitro-bridge-setup](./nitro-bridge-setup/README.md) +- [nitro-contracts-setup](./nitro-contracts-setup/README.md) diff --git a/hosts.example.ini b/hosts.example.ini new file mode 100644 index 0000000..05fd65c --- /dev/null +++ b/hosts.example.ini @@ -0,0 +1,2 @@ +[deployment_host] + ansible_host= ansible_user= ansible_ssh_common_args='-o ForwardAgent=yes' \ No newline at end of file diff --git a/l2-setup/.gitignore b/l2-setup/.gitignore new file mode 100644 index 0000000..fb4396e --- /dev/null +++ b/l2-setup/.gitignore @@ -0,0 +1,3 @@ +out +l2-vars.yml +hosts.ini diff --git a/l2-setup/README.md b/l2-setup/README.md index ae31893..64863ae 100644 --- a/l2-setup/README.md +++ b/l2-setup/README.md @@ -4,13 +4,19 @@ To get started, follow the [installation](../README.md#installation) guide to setup ansible on your machine -## Setup and Run Optimism +## Setup -The following commands have to be executed in [`l2-setup`](./) directory +The following commands have to be executed in the [`l2-setup`](./) directory: -- Edit [`l2-vars.yml`](./l2-vars.yml) with the required values +- Copy the `l2-vars.example.yml` vars file: ```bash + cp l2-vars.example.yml l2-vars.yml + ``` + +- Edit [`l2-vars.yml`](./l2-vars.yml) with the required values: + + ```yaml # L1 chain ID l1_chain_id: "" @@ -34,44 +40,108 @@ The following commands have to be executed in [`l2-setup`](./) directory l1_priv_key: "" ``` -- To setup and run L2, execute the `run-optimism.yml` Ansible playbook by running the following command. +## Run L2 - NOTE: By default, deployments are created in the `l2-setup/out` directory. To change this location, update the `l2_directory` variable in the [setup-vars.yml](./setup-vars.yml) file. +### On Local Host + +- To setup and run L2 locally, execute the `run-optimism.yml` Ansible playbook: ```bash - LANG=en_US.utf8 ansible-playbook -i localhost, --connection=local run-optimism.yml --extra-vars='{ "target_host": "localhost"}' -kK --user $USER + LANG=en_US.utf8 ansible-playbook run-optimism.yml --extra-vars='{ "target_host": "localhost"}' --user $USER -kK ``` - - For skipping container build, set `"skip_container_build" : true` in the `--extra-vars` parameter: + NOTE: By default, deployments are created in an `out` directory. To change this location, update the `l2_directory` variable in the [setup-vars.yml](./setup-vars.yml) file - ```bash - LANG=en_US.utf8 ansible-playbook -i localhost, --connection=local run-optimism.yml --extra-vars='{"target_host" : "localhost", "skip_container_build": true}' -kK --user $USER - ``` +- For skipping container build, set `"skip_container_build" : true` in the `--extra-vars` parameter: -- To run using existing contracts deployment + ```bash + LANG=en_US.utf8 ansible-playbook run-optimism.yml --extra-vars='{"target_host" : "localhost", "skip_container_build": true}' --user $USER -kK + ``` + +- To run using existing contracts deployment: - Update `artifact_path` in [`setup-vars.yml`](./setup-vars.yml) file with path to data directory of the existing deployment - Run the ansible playbook with `"existing_contracts_deployment": true` in the `--extra-vars` parameter: ```bash - LANG=en_US.utf8 ansible-playbook -i localhost, --connection=local run-optimism.yml --extra-vars='{"target_host" : "localhost", "existing_contracts_deployment": true}' -kK --user $USER + LANG=en_US.utf8 ansible-playbook run-optimism.yml --extra-vars='{"target_host" : "localhost", "existing_contracts_deployment": true}' --user $USER -kK + ``` + +### On Remote Host + +To run the playbook on a remote host: + +- Create a new `hosts.ini` file: + + ```bash + cp ../hosts.example.ini hosts.ini + ``` + +- Edit the [`hosts.ini`](./hosts.ini) file to run the playbook on a remote machine: + + ```ini + [] + ansible_host= ansible_user= ansible_ssh_common_args='-o ForwardAgent=yes' + ``` + + - Replace `` with `l2_host` + - Replace `` with the alias of your choice + - Replace `` with the IP address or hostname of the target machine + - Replace `` with the SSH username (e.g., dev, ubuntu) + +- Verify that you are able to connect to the host using the following command + + ```bash + ansible all -m ping -i hosts.ini -k + + # Expected output: + + # | SUCCESS => { + # "ansible_facts": { + # "discovered_interpreter_python": "/usr/bin/python3.10" + # }, + # "changed": false, + # "ping": "pong" + # } + ``` + +- Execute the `run-optimism.yml` Ansible playbook for remote deployment: + + ```bash + LANG=en_US.utf8 ansible-playbook -i hosts.ini run-optimism.yml --extra-vars='{ "target_host": "l2_host"}' --user $USER -kK + ``` + +- For skipping container build, set `"skip_container_build" : true` in the `--extra-vars` parameter: + + ```bash + LANG=en_US.utf8 ansible-playbook -i hosts.ini run-optimism.yml --extra-vars='{"target_host" : "l2_host", "skip_container_build": true}' --user $USER -kK + ``` + +- To run using existing contracts deployment: + + - Update `artifact_path` in [`setup-vars.yml`](./setup-vars.yml) file with path to data directory of the existing deployment + + - Run the ansible playbook with `"existing_contracts_deployment": true` in the `--extra-vars` parameter: + + ```bash + LANG=en_US.utf8 ansible-playbook -i hosts.ini run-optimism.yml --extra-vars='{"target_host" : "l2_host", "existing_contracts_deployment": true}' --user $USER -kK ``` ## Check Deployment Status -- Run the following command in the directory where the optimism-deployment is created +Run the following commands in the directory where the optimism-deployment is created: - - Follow optimism contracts deployment logs: +- Follow optimism contracts deployment logs: - ```bash - laconic-so deployment --dir optimism-deployment logs -f fixturenet-optimism-contracts - ``` + ```bash + laconic-so deployment --dir optimism-deployment logs -f fixturenet-optimism-contracts + ``` - - Check L2 logs: +- Check L2 logs: - ```bash - laconic-so deployment --dir optimism-deployment logs -f op-geth + ```bash + laconic-so deployment --dir optimism-deployment logs -f op-geth - # Ensure new blocks are getting created - ``` + # Ensure new blocks are getting created + ``` diff --git a/l2-setup/l2-vars.yml b/l2-setup/l2-vars.example.yml similarity index 100% rename from l2-setup/l2-vars.yml rename to l2-setup/l2-vars.example.yml diff --git a/l2-setup/setup-vars.yml b/l2-setup/setup-vars.yml index ea03344..3615a0c 100644 --- a/l2-setup/setup-vars.yml +++ b/l2-setup/setup-vars.yml @@ -1,4 +1,4 @@ skip_container_build: false -l2_directory: "./out" +l2_directory: "out" existing_contracts_deployment: false artifact_path: "" diff --git a/nitro-bridge-setup/.gitignore b/nitro-bridge-setup/.gitignore new file mode 100644 index 0000000..ced2d35 --- /dev/null +++ b/nitro-bridge-setup/.gitignore @@ -0,0 +1,3 @@ +out +bridge-vars.yml +hosts.ini diff --git a/nitro-bridge-setup/README.md b/nitro-bridge-setup/README.md index e9cab57..4f70662 100644 --- a/nitro-bridge-setup/README.md +++ b/nitro-bridge-setup/README.md @@ -4,17 +4,19 @@ To get started, follow the [installation](../README.md#installation) guide to setup ansible on your machine -## Run Nitro Bridge +## Setup -- Copy the `bridge-vars-example.yml` vars file +The following commands have to be executed in the [`nitro-bridge-setup`](./) directory: + +- Copy the `bridge-vars.example.yml` vars file: ```bash - cp bridge-vars-example.yml bridge-vars.yml + cp bridge-vars.example.yml bridge-vars.yml ``` -- Edit [`bridge-vars.yml`](./bridge-vars.yml) and fill in the following values +- Edit [`bridge-vars.yml`](./bridge-vars.yml) with the required values: - ```bash + ```yaml # L1 WS endpoint nitro_l1_chain_url: "" @@ -38,7 +40,7 @@ To get started, follow the [installation](../README.md#installation) guide to se # Custom L2 token to be deployed token_name: "LaconicNetworkToken" token_symbol: "LNT" - intial_token_supply: "129600" + initial_token_supply: "129600" # Addresses of the deployed nitro contracts na_address: "" @@ -49,19 +51,73 @@ To get started, follow the [installation](../README.md#installation) guide to se l1_asset_address: "" ``` -- To run the nitro bridge, execute the `run-nitro-bridge.yml` Ansible playbook by running the following command: +## Run Nitro Bridge - NOTE: By default, deployments are created in the `nitro-nodes-setup/out` directory. To change this location, update the `nitro_directory` variable in the [setup-vars.yml](./setup-vars.yml) file. +### On Local Host + +- To setup and run nitro bridge locally, execute the `run-nitro-bridge.yml` Ansible playbook: ```bash - LANG=en_US.utf8 ansible-playbook -i localhost, --connection=local run-nitro-bridge.yml --extra-vars='{ "target_host": "localhost"}' --user $USER -kK + LANG=en_US.utf8 ansible-playbook run-nitro-bridge.yml --extra-vars='{ "target_host": "localhost"}' --user $USER -kK ``` - - For skipping container build, run with `"skip_container_build" : true` in the `--extra-vars` parameter: + NOTE: By default, deployments are created in an `out` directory. To change this location, update the `nitro_directory` variable in the [setup-vars.yml](./setup-vars.yml) file - ```bash - LANG=en_US.utf8 ansible-playbook -i localhost, --connection=local run-nitro-bridge.yml --extra-vars='{ "target_host": "localhost", "skip_container_build": true }' --user $USER -kK - ``` +- For skipping container build, set `"skip_container_build" : true` in the `--extra-vars` parameter: + + ```bash + LANG=en_US.utf8 ansible-playbook run-nitro-bridge.yml --extra-vars='{"target_host" : "localhost", "skip_container_build": true}' --user $USER -kK + ``` + +### On Remote Host + +To run the playbook on a remote host: + +- Create a new `hosts.ini` file: + + ```bash + cp ../hosts.example.ini hosts.ini + ``` + +- Edit the [`hosts.ini`](./hosts.ini) file to run the playbook on a remote machine: + + ```ini + [] + ansible_host= ansible_user= ansible_ssh_common_args='-o ForwardAgent=yes' + ``` + + - Replace `` with `nitro_host` + - Replace `` with the alias of your choice + - Replace `` with the IP address or hostname of the target machine + - Replace `` with the SSH username (e.g., dev, ubuntu) + +- Verify that you are able to connect to the host using the following command + + ```bash + ansible all -m ping -i hosts.ini -k + + # Expected output: + + # | SUCCESS => { + # "ansible_facts": { + # "discovered_interpreter_python": "/usr/bin/python3.10" + # }, + # "changed": false, + # "ping": "pong" + # } + ``` + +- Execute the `run-nitro-bridge.yml` Ansible playbook for remote deployment: + + ```bash + LANG=en_US.utf8 ansible-playbook -i hosts.ini run-nitro-bridge.yml --extra-vars='{ "target_host": "nitro_host"}' --user $USER -kK + ``` + +- For skipping container build, run with `"skip_container_build" : true` in the `--extra-vars` parameter: + + ```bash + LANG=en_US.utf8 ansible-playbook -i hosts.ini run-nitro-bridge.yml --extra-vars='{ "target_host": "nitro_host", "skip_container_build": true }' --user $USER -kK + ``` ## Check Deployment Status diff --git a/nitro-bridge-setup/bridge-vars-example.yml b/nitro-bridge-setup/bridge-vars.example.yml similarity index 89% rename from nitro-bridge-setup/bridge-vars-example.yml rename to nitro-bridge-setup/bridge-vars.example.yml index e23f237..be1b0ad 100644 --- a/nitro-bridge-setup/bridge-vars-example.yml +++ b/nitro-bridge-setup/bridge-vars.example.yml @@ -7,7 +7,7 @@ optimism_url: "" optimism_deployer_pk: "" token_name: "LaconicNetworkToken" token_symbol: "LNT" -intial_token_supply: "129600" +initial_token_supply: "129600" na_address: "" vpa_address: "" ca_address: "" diff --git a/nitro-bridge-setup/setup-vars.yml b/nitro-bridge-setup/setup-vars.yml index 7762444..d1d497f 100644 --- a/nitro-bridge-setup/setup-vars.yml +++ b/nitro-bridge-setup/setup-vars.yml @@ -1,3 +1,3 @@ target_host: "localhost" -nitro_directory: ./out +nitro_directory: out skip_container_build: false diff --git a/nitro-bridge-setup/templates/specs/bridge-nitro-spec.yml.j2 b/nitro-bridge-setup/templates/specs/bridge-nitro-spec.yml.j2 index 546d742..9d2fd05 100644 --- a/nitro-bridge-setup/templates/specs/bridge-nitro-spec.yml.j2 +++ b/nitro-bridge-setup/templates/specs/bridge-nitro-spec.yml.j2 @@ -10,11 +10,11 @@ config: OPTIMISM_DEPLOYER_PK: {{ optimism_deployer_pk }} TOKEN_NAME: {{ token_name }} TOKEN_SYMBOL: {{ token_symbol }} - INITIAL_TOKEN_SUPPLY: {{ token_symbol }} - NA_ADDRESS: {{ na_address }} - VPA_ADDRESS: {{ vpa_address }} - CA_ADDRESS: {{ ca_address }} - L1_ASSET_ADDRESS: {{ l1_asset_address }} + INITIAL_TOKEN_SUPPLY: {{ initial_token_supply }} + NA_ADDRESS: "{{ na_address }}" + VPA_ADDRESS: "{{ vpa_address }}" + CA_ADDRESS: "{{ ca_address }}" + L1_ASSET_ADDRESS: "{{ l1_asset_address }}" network: ports: nitro-bridge: diff --git a/nitro-contracts-setup/.gitignore b/nitro-contracts-setup/.gitignore new file mode 100644 index 0000000..ffb4fb9 --- /dev/null +++ b/nitro-contracts-setup/.gitignore @@ -0,0 +1,3 @@ +out +contract-vars.yml +hosts.ini diff --git a/nitro-contracts-setup/README.md b/nitro-contracts-setup/README.md index bf3bfe3..6a93e05 100644 --- a/nitro-contracts-setup/README.md +++ b/nitro-contracts-setup/README.md @@ -4,9 +4,9 @@ To get started, follow the [installation](../README.md#installation) guide to setup ansible on your machine -## Deploy Nitro Contracts +## Setup -The following commands have to be executed in [`nitro-contracts-setup`](./) directory +The following commands have to be executed in the [`nitro-contracts-setup`](./) directory: - Copy the `contract-vars-example.yml` vars file @@ -29,22 +29,76 @@ The following commands have to be executed in [`nitro-contracts-setup`](./) dire # Custom L1 token to be deployed token_name: "LaconicNetworkToken" token_symbol: "LNT" - intial_token_supply: "129600" + initial_token_supply: "129600" ``` -- To deploy the L1 nitro contracts, execute the `deploy-contracts.yml` Ansible playbook by running the following command: +## Deploy Contracts - NOTE: By default, deployments are created in the `nitro-nodes-setup/out` directory. To change this location, update the `nitro_directory` variable in the [setup-vars.yml](./setup-vars.yml) file. +### On Local Host + +- To deploy nitro contracts locally, execute the `deploy-contracts.yml` Ansible playbook: ```bash - LANG=en_US.utf8 ansible-playbook -i localhost, --connection=local deploy-contracts.yml --extra-vars='{ "target_host": "localhost"}' --user $USER -kK + LANG=en_US.utf8 ansible-playbook deploy-contracts.yml --extra-vars='{ "target_host": "localhost"}' --user $USER -kK ``` - - For skipping container build, run with `"skip_container_build" : true` in the `--extra-vars` parameter: + NOTE: By default, deployments are created in an `out` directory. To change this location, update the `nitro_directory` variable in the [setup-vars.yml](./setup-vars.yml) file - ```bash - LANG=en_US.utf8 ansible-playbook -i localhost, --connection=local deploy-contracts.yml --extra-vars='{ "target_host": "localhost", "skip_container_build": true }' --user $USER -kK - ``` +- For skipping container build, set `"skip_container_build" : true` in the `--extra-vars` parameter: + + ```bash + LANG=en_US.utf8 ansible-playbook deploy-contracts.yml --extra-vars='{"target_host" : "localhost", "skip_container_build": true}' --user $USER -kK + ``` + +### On Remote Host + +To run the playbook on a remote host: + +- Create a new `hosts.ini` file: + + ```bash + cp ../hosts.example.ini hosts.ini + ``` + +- Edit the [`hosts.ini`](./hosts.ini) file to run the playbook on a remote machine: + + ```ini + [] + ansible_host= ansible_user= ansible_ssh_common_args='-o ForwardAgent=yes' + ``` + + - Replace `` with `nitro_host` + - Replace `` with the alias of your choice + - Replace `` with the IP address or hostname of the target machine + - Replace `` with the SSH username (e.g., dev, ubuntu) + +- Verify that you are able to connect to the host using the following command + + ```bash + ansible all -m ping -i hosts.ini -k + + # Expected output: + + # | SUCCESS => { + # "ansible_facts": { + # "discovered_interpreter_python": "/usr/bin/python3.10" + # }, + # "changed": false, + # "ping": "pong" + # } + ``` + +- Execute the `deploy-contracts.yml` Ansible playbook for remote deployment: + + ```bash + LANG=en_US.utf8 ansible-playbook -i hosts.ini deploy-contracts.yml --extra-vars='{ "target_host": "nitro_host"}' --user $USER -kK + ``` + +- For skipping container build, run with `"skip_container_build" : true` in the `--extra-vars` parameter: + + ```bash + LANG=en_US.utf8 ansible-playbook -i hosts.ini deploy-contracts.yml --extra-vars='{ "target_host": "nitro_host", "skip_container_build": true }' --user $USER -kK + ``` ## Check Deployment Status diff --git a/nitro-contracts-setup/contract-vars-example.yml b/nitro-contracts-setup/contract-vars.example.yml similarity index 77% rename from nitro-contracts-setup/contract-vars-example.yml rename to nitro-contracts-setup/contract-vars.example.yml index 3fe4834..2999432 100644 --- a/nitro-contracts-setup/contract-vars-example.yml +++ b/nitro-contracts-setup/contract-vars.example.yml @@ -3,4 +3,4 @@ geth_chain_id: "" geth_deployer_pk: "" token_name: "" token_symbol: "" -intial_token_supply: "" +initial_token_supply: "" diff --git a/nitro-contracts-setup/setup-vars.yml b/nitro-contracts-setup/setup-vars.yml index 7762444..d1d497f 100644 --- a/nitro-contracts-setup/setup-vars.yml +++ b/nitro-contracts-setup/setup-vars.yml @@ -1,3 +1,3 @@ target_host: "localhost" -nitro_directory: ./out +nitro_directory: out skip_container_build: false diff --git a/nitro-contracts-setup/templates/specs/nitro-contracts-spec.yml.j2 b/nitro-contracts-setup/templates/specs/nitro-contracts-spec.yml.j2 index 9c2f4ad..c5fb23b 100644 --- a/nitro-contracts-setup/templates/specs/nitro-contracts-spec.yml.j2 +++ b/nitro-contracts-setup/templates/specs/nitro-contracts-spec.yml.j2 @@ -6,7 +6,7 @@ config: GETH_DEPLOYER_PK: {{ geth_deployer_pk }} TOKEN_NAME: {{ token_name }} TOKEN_SYMBOL: {{ token_symbol }} - INITIAL_TOKEN_SUPPLY: {{ intial_token_supply }} + INITIAL_TOKEN_SUPPLY: {{ initial_token_supply }} network: ports: {} volumes: diff --git a/nitro-nodes-setup/.gitignore b/nitro-nodes-setup/.gitignore new file mode 100644 index 0000000..a537e4d --- /dev/null +++ b/nitro-nodes-setup/.gitignore @@ -0,0 +1,3 @@ +out +nitro-vars.yml +hosts.ini diff --git a/nitro-nodes-setup/README.md b/nitro-nodes-setup/README.md index 256487e..33eb5af 100644 --- a/nitro-nodes-setup/README.md +++ b/nitro-nodes-setup/README.md @@ -4,14 +4,22 @@ To get started, follow the [installation](../README.md#installation) guide to setup ansible on your machine -## Run a nitro node +## Setup for Remote Host + +To run the playbook on a remote host: + +- Follow steps from [setup remote hosts](../README.md#setup-remote-hosts) + +- Update / append the [`hosts.ini`](../hosts.ini) file for your remote host with `` set as `nitro_host` + +## Setup The following commands have to be executed in [`nitro-nodes-setup`](./) directory - Copy the `nitro-vars-example.yml` vars file ```bash - cp nitro-vars-example.yml nitro-vars.yml + cp nitro-vars.example.yml nitro-vars.yml ``` - Edit [`nitro-vars.yml`](./nitro-vars.yml) and fill in the following values @@ -56,19 +64,76 @@ The following commands have to be executed in [`nitro-nodes-setup`](./) director nitro_l2_ext_multiaddr: "" ``` -- To run a nitro node, execute the `run-nitro-nodes.yml` Ansible playbook by running the following command. +## Run Nitro Node - NOTE: By default, deployments are created in the `nitro-nodes-setup/out` directory. To change this location, update the `nitro_directory` variable in the [setup-vars.yml](./setup-vars.yml) file. +### On Local Host + +- To run a nitro node, execute the `run-nitro-nodes.yml` Ansible playbook by running the following command: ```bash - LANG=en_US.utf8 ansible-playbook -i localhost, --connection=local run-nitro-nodes.yml --extra-vars='{ "target_host": "localhost"}' -kK --user $USER + LANG=en_US.utf8 ansible-playbook run-nitro-nodes.yml --extra-vars='{ "target_host": "localhost"}' --user $USER -kK ``` - - For skipping container build, run with `"skip_container_build" : true` in the `--extra-vars` parameter: + NOTE: By default, deployments are created in a `out` directory. To change this location, update the `nitro_directory` variable in the [setup-vars.yml](./setup-vars.yml) file + +- For skipping container build, run with `"skip_container_build" : true` in the `--extra-vars` parameter: + + ```bash + LANG=en_US.utf8 ansible-playbook -i hosts.ini run-nitro-nodes.yml --extra-vars='{ "target_host": "nitro_host", "skip_container_build": true }' --user $USER -kK + ``` + +### On Remote Host + +To run the playbook on a remote host: + +- Create a new `hosts.ini` file: + + ```bash + cp ../hosts.example.ini hosts.ini + ``` + +- Edit the [`hosts.ini`](./hosts.ini) file to run the playbook on a remote machine: + + ```ini + [] + ansible_host= ansible_user= ansible_ssh_common_args='-o ForwardAgent=yes' + ``` + + - Replace `` with `nitro_host` + - Replace `` with the alias of your choice + - Replace `` with the IP address or hostname of the target machine + - Replace `` with the SSH username (e.g., dev, ubuntu) + +- Verify that you are able to connect to the host using the following command + + ```bash + ansible all -m ping -i hosts.ini -k + + # Expected output: + + # | SUCCESS => { + # "ansible_facts": { + # "discovered_interpreter_python": "/usr/bin/python3.10" + # }, + # "changed": false, + # "ping": "pong" + # } + ``` + +- Copy and edit the [`nitro-vars.yml`](./nitro-vars.yml) file as described in the [local setup](./README.md#run-nitro-node-on-local-host) section + +- Execute the `run-nitro-nodes.yml` Ansible playbook for remote deployment: + + ```bash + LANG=en_US.utf8 ansible-playbook -i hosts.ini run-nitro-nodes.yml --extra-vars='{ "target_host": "nitro_host"}' --user $USER -kK + ``` + +- For skipping container build, run with `"skip_container_build" : true` in the `--extra-vars` parameter: + + ```bash + LANG=en_US.utf8 ansible-playbook -i hosts.ini run-nitro-nodes.yml --extra-vars='{ "target_host": "nitro_host", "skip_container_build": true }' --user $USER -kK + ``` - ```bash - LANG=en_US.utf8 ansible-playbook -i localhost, --connection=local run-nitro-nodes.yml --extra-vars='{ "target_host": "localhost", "skip_container_build": true }' -kK --user $USER - ``` ## Check Deployment Status diff --git a/nitro-nodes-setup/nitro-vars-example.yml b/nitro-nodes-setup/nitro-vars.example.yml similarity index 100% rename from nitro-nodes-setup/nitro-vars-example.yml rename to nitro-nodes-setup/nitro-vars.example.yml diff --git a/nitro-nodes-setup/setup-vars.yml b/nitro-nodes-setup/setup-vars.yml index 7762444..d1d497f 100644 --- a/nitro-nodes-setup/setup-vars.yml +++ b/nitro-nodes-setup/setup-vars.yml @@ -1,3 +1,3 @@ target_host: "localhost" -nitro_directory: ./out +nitro_directory: out skip_container_build: false diff --git a/nitro-nodes-setup/templates/configs/l1-nitro-config.env.j2 b/nitro-nodes-setup/templates/configs/l1-nitro-config.env.j2 index dc92e23..aca42b5 100644 --- a/nitro-nodes-setup/templates/configs/l1-nitro-config.env.j2 +++ b/nitro-nodes-setup/templates/configs/l1-nitro-config.env.j2 @@ -1,8 +1,8 @@ NITRO_CHAIN_URL={{ nitro_l1_chain_url }} NITRO_SC_PK={{ nitro_sc_pk }} NITRO_CHAIN_PK={{ nitro_chain_pk }} -NA_ADDRESS={{ na_address }} -VPA_ADDRESS={{ vpa_address }} -CA_ADDRESS={{ ca_address }} +NA_ADDRESS="{{ na_address }}" +VPA_ADDRESS="{{ vpa_address }}" +CA_ADDRESS="{{ ca_address }}" NITRO_BOOTPEERS={{ nitro_l1_bridge_multiaddr }} NITRO_EXT_MULTIADDR={{ nitro_l1_ext_multiaddr }} diff --git a/nitro-nodes-setup/templates/configs/l2-nitro-config.env.j2 b/nitro-nodes-setup/templates/configs/l2-nitro-config.env.j2 index be853b6..709a2ea 100644 --- a/nitro-nodes-setup/templates/configs/l2-nitro-config.env.j2 +++ b/nitro-nodes-setup/templates/configs/l2-nitro-config.env.j2 @@ -1,10 +1,10 @@ NITRO_CHAIN_URL={{ nitro_l2_chain_url }} NITRO_SC_PK={{ nitro_sc_pk }} NITRO_CHAIN_PK={{ nitro_chain_pk }} -NA_ADDRESS={{ na_address }} -VPA_ADDRESS={{ vpa_address }} -CA_ADDRESS={{ ca_address }} -BRIDGE_ADDRESS={{ bridge_contract_address }} +NA_ADDRESS="{{ na_address }}" +VPA_ADDRESS="{{ vpa_address }}" +CA_ADDRESS="{{ ca_address }}" +BRIDGE_ADDRESS="{{ bridge_contract_address }}" NITRO_BOOTPEERS={{ nitro_l2_bridge_multiaddr }} NITRO_EXT_MULTIADDR={{ nitro_l2_ext_multiaddr }} NITRO_L2=true