| .. | ||
| 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.ymlvars filecp contract-vars-example.yml contract-vars.yml -
Edit
contract-vars.ymland 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" initial_token_supply: "129600" -
To deploy nitro contracts locally, execute the
deploy-contracts.ymlAnsible playbook:LANG=en_US.utf8 ansible-playbook deploy-contracts.yml --extra-vars='{ "target_host": "localhost"}' --user $USER -kKNOTE: By default, deployments are created in an
outdirectory. To change this location, update thenitro_directoryvariable in the setup-vars.yml file -
For skipping container build, set
"skip_container_build" : truein the--extra-varsparameter:LANG=en_US.utf8 ansible-playbook deploy-contracts.yml --extra-vars='{"target_host" : "localhost", "skip_container_build": true}' --user $USER -kK
Deploy Nitro Contracts on Remote Host
To run the playbook on a remote host:
-
Create a new
hosts.inifile:cp ../hosts.example.ini hosts.ini -
Edit the
hosts.inifile 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.ymlfile as described in the local setup section -
Execute the
deploy-contracts.ymlAnsible playbook for remote deployment: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" : truein the--extra-varsparameter: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"
-