testnet-ops/l2-setup
2024-09-09 17:22:05 +05:30
..
templates Add ansible playbook to setup and run L2 deployment (#3) 2024-09-05 07:58:00 +00:00
.gitignore Add README steps to deploy nitro contracts on remote machine 2024-09-09 11:51:29 +05:30
l2-vars.example.yml Rename vars files 2024-09-09 15:58:54 +05:30
README.md Update READMEs with remote host setup 2024-09-09 17:22:05 +05:30
run-optimism.yml Add ansible playbook to setup and run L2 deployment (#3) 2024-09-05 07:58:00 +00:00
setup-vars.yml Add README steps to setup and run L2 on remote machine 2024-09-09 11:51:29 +05:30

l2-setup

Setup Ansible

To get started, follow the installation guide to setup ansible on your machine

Setup and Run L2 on Local Host

The following commands have to be executed in the l2-setup directory:

  • Copy the l2-vars.example.yml vars file:

    cp l2-vars.example.yml l2-vars.yml
    
  • Edit l2-vars.yml with the required values:

    # L1 chain ID
    l1_chain_id: ""
    
    # L1 RPC endpoint
    l1_rpc: ""
    
    # L1 RPC endpoint host or IP address
    l1_host: ""
    
    # L1 RPC endpoint port number
    l1_port: ""
    
    # L1 Beacon endpoint
    l1_beacon: ""
    
    # Address of the funded account on L1
    # Used for optimism contracts deployment
    l1_address: ""
    
    # Private key of the funded account on L1
    l1_priv_key: ""
    
  • To setup and run L2 locally, execute the run-optimism.yml Ansible playbook:

    LANG=en_US.utf8 ansible-playbook run-optimism.yml --extra-vars='{ "target_host": "localhost"}' -kK --user $USER
    

    NOTE: By default, deployments are created in an out directory. To change this location, update the l2_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 run-optimism.yml --extra-vars='{"target_host" : "localhost", "skip_container_build": true}' -kK
    
  • To run using existing contracts deployment:

    • Update artifact_path in 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:

      LANG=en_US.utf8 ansible-playbook run-optimism.yml --extra-vars='{"target_host" : "localhost", "existing_contracts_deployment":  true}' -kK
      

Setup and Run 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> with l2_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)
  • 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 l2-vars.yml file as described in the Local Setup section.

  • Execute the run-optimism.yml Ansible playbook for remote deployment:

    LANG=en_US.utf8 ansible-playbook -i hosts.ini run-optimism.yml --extra-vars='{ "target_host": "l2_host"}' -kK
    
  • For skipping container build, set "skip_container_build" : true in the --extra-vars parameter:

    LANG=en_US.utf8 ansible-playbook -i hosts.ini run-optimism.yml --extra-vars='{"target_host" : "l2_host", "skip_container_build": true}' -kK
    
  • To run using existing contracts deployment:

    • Update artifact_path in 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:

      LANG=en_US.utf8 ansible-playbook -i hosts.ini run-optimism.yml --extra-vars='{"target_host" : "l2_host", "existing_contracts_deployment":  true}' -kK
      

Check Deployment Status

Run the following commands in the directory where the optimism-deployment is created:

  • Follow optimism contracts deployment logs:

    laconic-so deployment --dir optimism-deployment logs -f fixturenet-optimism-contracts
    
  • Check L2 logs:

    laconic-so deployment --dir optimism-deployment logs -f op-geth
    
    # Ensure new blocks are getting created