.. | ||
templates/specs | ||
.gitignore | ||
contract-vars.example.yml | ||
deploy-contracts.yml | ||
README.md | ||
setup-vars.yml |
nitro-contracts-setup
Setup Ansible
To get started, follow the installation guide to setup ansible on your machine
Deploy Nitro Contracts on Local Host
The following commands have to be executed in the nitro-contracts-setup
directory:
-
Copy the
contract-vars-example.yml
vars filecp contract-vars-example.yml contract-vars.yml
-
Edit
contract-vars.yml
and fill in the following values# L1 RPC endpoint geth_url: "" # L1 chain ID geth_chain_id: "" # Private key for a funded account on L1 to use for contracts deployment on L1 geth_deployer_pk: "" # Custom L1 token to be deployed token_name: "LaconicNetworkToken" token_symbol: "LNT" intial_token_supply: "129600"
-
To deploy nitro contracts locally, execute the
deploy-contracts.yml
Ansible playbook:LANG=en_US.utf8 ansible-playbook deploy-contracts.yml --extra-vars='{ "target_host": "localhost"}' -kK --user $USER
NOTE: By default, deployments are created in an
out
directory. To change this location, update thenitro_directory
variable in the setup-vars.yml file. -
For skipping container build, set
"skip_container_build" : true
in the--extra-vars
parameter:LANG=en_US.utf8 ansible-playbook deploy-contracts.yml --extra-vars='{"target_host" : "localhost", "skip_container_build": true}' -kK --user $USER
Deploy Nitro Contracts on Remote Host
To run the playbook on a remote host:
-
Create a new
hosts.ini
file:cp ../hosts.example.ini hosts.ini
-
Edit the
hosts.ini
file to run the playbook on a remote machine:[<deployment_host>] <host_name> ansible_host=<target_ip> ansible_user=<ssh_user> ansible_ssh_common_args='-o ForwardAgent=yes'
- Replace
<deployment_host>
withnitro_host
- Replace
<host_name>
with the alias of your choice - Replace
<target_ip>
with the IP address or hostname of the target machine - Replace
<ssh_user>
with the SSH username (e.g., dev, ubuntu)
- Replace
-
Verify that you are able to connect to the host using the following command
ansible all -m ping -i hosts.ini -k # Expected output: # <host_name> | SUCCESS => { # "ansible_facts": { # "discovered_interpreter_python": "/usr/bin/python3.10" # }, # "changed": false, # "ping": "pong" # }
-
Copy and edit the
contract-vars.yml
file as described in the Local Setup section -
Execute the
deploy-contracts.yml
Ansible playbook for remote deployment:LANG=en_US.utf8 ansible-playbook -i hosts.ini deploy-contracts.yml --extra-vars='{ "target_host": "nitro_host"}' -kK
-
For skipping container build, run with
"skip_container_build" : true
in the--extra-vars
parameter: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
-
Run the following command in the directory where the nitro-contracts-deployment is created:
-
Check logs for deployments:
# Check the L2 nitro contract deployment logs laconic-so deployment --dir nitro-contracts-deployment logs l2-nitro-contracts -f
-
Get Contract Addresses
-
Run the following commands in the directory where the deployments are created:
-
Get addresses of L1 nitro contracts:
laconic-so deployment --dir nitro-contracts-deployment exec nitro-contracts "cat /app/deployment/nitro-addresses.json"
-