From 98f3980f1255e7e88c280ff8dbb468aa60f7a90d Mon Sep 17 00:00:00 2001 From: Barnabas Busa Date: Wed, 30 Oct 2024 12:08:56 +0100 Subject: [PATCH] Initial commit --- .github/actions/setup/action.yaml | 11 + .github/workflows/lint-ansible.yaml | 38 ++ .github/workflows/lint-helm.yaml | 42 ++ .github/workflows/lint-terraform.yaml | 27 + .gitignore | 33 ++ .sops.yaml | 16 + .tool-versions | 7 + README.md | 164 ++++++ ansible/_update-known-hosts.yaml | 14 + ansible/ansible.cfg | 26 + ansible/cleanup_ethereum.yaml | 86 +++ ansible/group_vars/all/defaults.yaml | 65 +++ ansible/install_dependencies.sh | 3 + .../devnet-0/group_vars/all/00-defaults.yaml | 1 + .../devnet-0/group_vars/all/all.sops.yaml | 154 ++++++ .../devnet-0/group_vars/all/all.yaml | 197 +++++++ .../devnet-0/group_vars/all/images.yaml | 45 ++ .../inventories/devnet-0/group_vars/besu.yaml | 33 ++ .../devnet-0/group_vars/blobber.yaml | 56 ++ .../devnet-0/group_vars/bootnode.sops.yaml | 127 +++++ .../devnet-0/group_vars/bootnode.yaml | 115 ++++ .../devnet-0/group_vars/erigon.yaml | 83 +++ .../devnet-0/group_vars/ethereum_node.yaml | 60 +++ .../devnet-0/group_vars/ethereumjs.yaml | 84 +++ .../inventories/devnet-0/group_vars/geth.yaml | 87 +++ .../devnet-0/group_vars/grandine.yaml | 39 ++ .../devnet-0/group_vars/lighthouse.yaml | 50 ++ .../devnet-0/group_vars/lodestar.yaml | 51 ++ .../devnet-0/group_vars/mev_boost.yaml | 9 + .../devnet-0/group_vars/mev_flood.yaml | 9 + .../devnet-0/group_vars/nethermind.yaml | 101 ++++ .../devnet-0/group_vars/nimbus.yaml | 53 ++ .../devnet-0/group_vars/nimbusel.yaml | 82 +++ .../devnet-0/group_vars/prysm.yaml | 68 +++ .../inventories/devnet-0/group_vars/reth.yaml | 76 +++ .../inventories/devnet-0/group_vars/teku.yaml | 54 ++ .../devnet-0/group_vars/tx_fuzz_blobs.yaml | 12 + .../devnet-0/group_vars/tx_fuzz_txs.yaml | 11 + .../inventories/devnet-0/group_vars/xatu.yaml | 85 +++ .../inventories/devnet-0/host_vars/localhost | 2 + .../devnet-0/host_vars/mev-relay-1.yaml | 178 +++++++ ansible/playbook.yaml | 110 ++++ ansible/requirements.yaml | 20 + docs/images/panda.png | Bin 0 -> 629740 bytes renovate.json | 3 + requirements.txt | 7 + scripts/run.zsh | 497 ++++++++++++++++++ scripts/split-calculator.py | 55 ++ setup.sh | 15 + terraform/devnet-0/.terraform.lock.hcl | 90 ++++ terraform/devnet-0/ansible_inventory.tmpl | 54 ++ terraform/devnet-0/digitalocean.tf | 323 ++++++++++++ terraform/devnet-0/hetzner/firewall.tf | 87 +++ terraform/devnet-0/hetzner/hetzner.tf | 263 +++++++++ terraform/devnet-0/hetzner/main.tf | 112 ++++ terraform/devnet-0/hetzner/nodes.tf | 394 ++++++++++++++ terraform/devnet-0/main.tf | 108 ++++ terraform/devnet-0/nodes.tf | 393 ++++++++++++++ 58 files changed, 4985 insertions(+) create mode 100644 .github/actions/setup/action.yaml create mode 100644 .github/workflows/lint-ansible.yaml create mode 100644 .github/workflows/lint-helm.yaml create mode 100644 .github/workflows/lint-terraform.yaml create mode 100644 .gitignore create mode 100644 .sops.yaml create mode 100644 .tool-versions create mode 100644 README.md create mode 100644 ansible/_update-known-hosts.yaml create mode 100644 ansible/ansible.cfg create mode 100644 ansible/cleanup_ethereum.yaml create mode 100644 ansible/group_vars/all/defaults.yaml create mode 100755 ansible/install_dependencies.sh create mode 120000 ansible/inventories/devnet-0/group_vars/all/00-defaults.yaml create mode 100644 ansible/inventories/devnet-0/group_vars/all/all.sops.yaml create mode 100644 ansible/inventories/devnet-0/group_vars/all/all.yaml create mode 100644 ansible/inventories/devnet-0/group_vars/all/images.yaml create mode 100644 ansible/inventories/devnet-0/group_vars/besu.yaml create mode 100644 ansible/inventories/devnet-0/group_vars/blobber.yaml create mode 100644 ansible/inventories/devnet-0/group_vars/bootnode.sops.yaml create mode 100644 ansible/inventories/devnet-0/group_vars/bootnode.yaml create mode 100644 ansible/inventories/devnet-0/group_vars/erigon.yaml create mode 100644 ansible/inventories/devnet-0/group_vars/ethereum_node.yaml create mode 100644 ansible/inventories/devnet-0/group_vars/ethereumjs.yaml create mode 100644 ansible/inventories/devnet-0/group_vars/geth.yaml create mode 100644 ansible/inventories/devnet-0/group_vars/grandine.yaml create mode 100644 ansible/inventories/devnet-0/group_vars/lighthouse.yaml create mode 100644 ansible/inventories/devnet-0/group_vars/lodestar.yaml create mode 100644 ansible/inventories/devnet-0/group_vars/mev_boost.yaml create mode 100644 ansible/inventories/devnet-0/group_vars/mev_flood.yaml create mode 100644 ansible/inventories/devnet-0/group_vars/nethermind.yaml create mode 100644 ansible/inventories/devnet-0/group_vars/nimbus.yaml create mode 100644 ansible/inventories/devnet-0/group_vars/nimbusel.yaml create mode 100644 ansible/inventories/devnet-0/group_vars/prysm.yaml create mode 100644 ansible/inventories/devnet-0/group_vars/reth.yaml create mode 100644 ansible/inventories/devnet-0/group_vars/teku.yaml create mode 100644 ansible/inventories/devnet-0/group_vars/tx_fuzz_blobs.yaml create mode 100644 ansible/inventories/devnet-0/group_vars/tx_fuzz_txs.yaml create mode 100644 ansible/inventories/devnet-0/group_vars/xatu.yaml create mode 100644 ansible/inventories/devnet-0/host_vars/localhost create mode 100644 ansible/inventories/devnet-0/host_vars/mev-relay-1.yaml create mode 100644 ansible/playbook.yaml create mode 100644 ansible/requirements.yaml create mode 100644 docs/images/panda.png create mode 100644 renovate.json create mode 100644 requirements.txt create mode 100755 scripts/run.zsh create mode 100644 scripts/split-calculator.py create mode 100755 setup.sh create mode 100644 terraform/devnet-0/.terraform.lock.hcl create mode 100644 terraform/devnet-0/ansible_inventory.tmpl create mode 100644 terraform/devnet-0/digitalocean.tf create mode 100644 terraform/devnet-0/hetzner/firewall.tf create mode 100644 terraform/devnet-0/hetzner/hetzner.tf create mode 100644 terraform/devnet-0/hetzner/main.tf create mode 100644 terraform/devnet-0/hetzner/nodes.tf create mode 100644 terraform/devnet-0/main.tf create mode 100644 terraform/devnet-0/nodes.tf diff --git a/.github/actions/setup/action.yaml b/.github/actions/setup/action.yaml new file mode 100644 index 0000000..76c0a15 --- /dev/null +++ b/.github/actions/setup/action.yaml @@ -0,0 +1,11 @@ +name: Install deps +description: Install deps +runs: + using: composite + steps: + - name: Install asdf + uses: asdf-vm/actions/setup@v3 + + - name: Install asdf tools + shell: bash + run: ./setup.sh diff --git a/.github/workflows/lint-ansible.yaml b/.github/workflows/lint-ansible.yaml new file mode 100644 index 0000000..3dc5a33 --- /dev/null +++ b/.github/workflows/lint-ansible.yaml @@ -0,0 +1,38 @@ +name: Ansible lint +on: + pull_request: + paths: + - 'ansible/**' + - '.tool-versions' + - '.github/actions/**' + - '.github/workflows/lint-ansible.yaml' + push: + branches: + - master + paths: + - 'ansible/**' + - '.tool-versions' + - '.github/actions/**' + - '.github/workflows/lint-ansible.yaml' + +jobs: + ansible-lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: ./.github/actions/setup + - name: Install ansible role/collection dependencies + working-directory: ./ansible + run: ./install_dependencies.sh + - name: Lint + working-directory: ./ansible + run: > + ansible-lint playbook.yaml + --nocolor + --exclude vendor + --exclude '*.sops.yaml' + --profile production + --skip-list 'name[play]' + --skip-list 'meta-no-info' + --skip-list 'yaml[line-length]' + --skip-list 'command-instead-of-shell' diff --git a/.github/workflows/lint-helm.yaml b/.github/workflows/lint-helm.yaml new file mode 100644 index 0000000..f1e2d0f --- /dev/null +++ b/.github/workflows/lint-helm.yaml @@ -0,0 +1,42 @@ +name: Helm lint + +on: + pull_request: + paths: + - 'kubernetes/**' + - '.tool-versions' + - '.github/actions/**' + - '.github/workflows/lint-helm.yaml' + push: + branches: + - master + paths: + - 'kubernetes/**' + - '.tool-versions' + - '.github/actions/**' + - '.github/workflows/lint-helm.yaml' + +jobs: + helm-lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: ./.github/actions/setup + - name: Check if kubernetes/*/* is not empty + id: check-kubernetes-directory + run: | + if [ "$(ls -A kubernetes/*/* 2>/dev/null)" ]; then + echo "Kubernetes directory is not empty." + echo "::set-output name=not_empty::true" + else + echo "Kubernetes directory is empty." + echo "::set-output name=not_empty::false" + fi + + - name: Lint + run: | + if ${{ steps.check-kubernetes-directory.outputs.not_empty }}; then + helm lint kubernetes/*/* + else + echo "Skipping Helm lint because kubernetes/*/* is empty." + fi diff --git a/.github/workflows/lint-terraform.yaml b/.github/workflows/lint-terraform.yaml new file mode 100644 index 0000000..2d269d4 --- /dev/null +++ b/.github/workflows/lint-terraform.yaml @@ -0,0 +1,27 @@ +name: Terraform lint +on: + pull_request: + paths: + - 'terraform/**' + - '.tool-versions' + - '.github/actions/**' + - '.github/workflows/lint-terraform.yaml' + push: + branches: + - master + paths: + - 'terraform/**' + - '.tool-versions' + - '.github/actions/**' + - '.github/workflows/lint-terraform.yaml' + +jobs: + terraform-lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: ./.github/actions/setup + - name: Lint + working-directory: ./terraform + run: > + terraform fmt --recursive --check --list=true --diff diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f4bb889 --- /dev/null +++ b/.gitignore @@ -0,0 +1,33 @@ +# General +.DS_Store +.AppleDouble +.LSOverride + +# Ansible +ansible/vendor/** +ansible/tmp/** +*.retry + +# Terraform +**/.terraform/* +*.tfstate +*.tfstate.* +crash.log +crash.*.log +*.tfvars +*.tfvars.json +override.tf +override.tf.json +*_override.tf +*_override.tf.json +.terraformrc +terraform.rc +.terraform +.terraform.lock.hcl + +# Sops +**/.decrypted* + +# Validator keys +**/files/validator_keys/* +network-configs/**/mnemonics.yaml diff --git a/.sops.yaml b/.sops.yaml new file mode 100644 index 0000000..82bbbe2 --- /dev/null +++ b/.sops.yaml @@ -0,0 +1,16 @@ +# pgp:'69F66EEA7AE36CCB77DDB8CA1BC39532FB4A2DBD' # https://keybase.io/skylenet +# pgp:'80DB2B4EF6CA4D9829C280605636BC0E08138A24' # https://keybase.io/parithosh +# pgp:'D1002590180DE371BCB455EAEFCD4ACD0B4D3F6E' # https://keybase.io/sam_cm +# pgp:'B9F81F327CF5346860E85269D7AF98F214C59E4E' # https://keybase.io/bbusa +# pgp:'0600D41E1313E31016F7C55BF597BC0C5F22D1A2' # https://keybase.io/savid +# pgp:'29C50D01122FDE78E257482DAA497EB2610A8435' # https://keybase.io/pk910 + + +creation_rules: + - pgp: >- + 80DB2B4EF6CA4D9829C280605636BC0E08138A24, + 69F66EEA7AE36CCB77DDB8CA1BC39532FB4A2DBD, + D1002590180DE371BCB455EAEFCD4ACD0B4D3F6E, + B9F81F327CF5346860E85269D7AF98F214C59E4E, + 0600D41E1313E31016F7C55BF597BC0C5F22D1A2, + 29C50D01122FDE78E257482DAA497EB2610A8435 diff --git a/.tool-versions b/.tool-versions new file mode 100644 index 0000000..c5a4ab9 --- /dev/null +++ b/.tool-versions @@ -0,0 +1,7 @@ +age 1.1.1 +helm 3.12.1 +shellcheck 0.10.0 +sops 3.7.3 +terraform 1.6.4 +python 3.12.4 +yq 4.35.2 diff --git a/README.md b/README.md new file mode 100644 index 0000000..38bab27 --- /dev/null +++ b/README.md @@ -0,0 +1,164 @@ +
+

🐼 ❀️.oO
"Pandas love everything"

+

Infrastructure code for Dev/Testnets

+ +

+ + + +

+ +This repository contains the infrastructure code used to setup ~all~ dev/testnets. A lot of the code uses reusable components either provided by our [ansible collection](https://github.com/ethpandaops/ansible-collection-general) or our [helm charts for kubernetes](https://github.com/ethpandaops/ethereum-helm-charts/). + +# Networks + +Status | Network | Links | Ansible | Terraform | Kubernetes +------ | -------- | ---- | ----- | ------- | ------ + 🟒TemplateπŸ”΄ | [devnet-0](https://template.devnet.io/) | [Network config](network-configs/devnet-0) / [Inventory](https://bootnode-1.devnet-0.ethpandaops.io/meta/api/v1/inventory.json) / [Validator ranges](https://bootnode-1.devnet-0.ethpandaops.io/meta/api/v1/validator-ranges.json) | [πŸ”—](ansible/inventories/devnet-0) | [πŸ”—](terraform/devnet-0) | [πŸ”—](kubernetes/devnet-0) + +# Development +## Version management for tools + +We're using [asdf](https://github.com/asdf-vm/asdf) to make sure that we all use the same versions across tools. Our repositories should contain versions defined in .tools-versions. + +You can then use [`./setup.sh`](./asdf-setup.sh) to install all dependencies. + +## Terraform +From [`./terraform/devnet-0/`](./terraform/devnet-0/) + +Make sure you select either hetzner or digitalocean (default is digitialocean), if you want to use hetzner rename digitalocean.tf to digitalocean.tf.disabled and rename hetzner.tf.disabled to hetzner.tf and vice versa. + +```shell +terraform init +terraform apply +``` + +## Ansible +To install the nodes according to the inventory file that is generated by the terraform template run the following commands from [`./ansible/`](./ansible/) +```shell +./install_dependencies.sh +ansible-playbook -i inventories/devnet-0/inventory.ini playbook.yaml +``` +In order to clean up the deployment +```shell +ansible-playbook -i inventories/devnet-0/inventory.ini cleanup_ethereum.yaml +``` + +# Spinning up a New Testnet +To create a new testnet using the infrastructure code, follow these steps: + +## Validator Configuration +1. Open the [main.tf](terraform/devnet-0/main.tf) file located in the terraform/devnet-0/ directory. + +2. Locate the sections that define the different nodes and their corresponding validator ranges, for this example this is `variable "digitalocean_vm_groups"` + +3. Adjust the validator indexes in the terraform/main.tf file based on your desired allocation of validators to nodes. + +For example, let's say you want to assign validator index 0-24 to the lodestar-besu-1 node and validator index 25-224 to the lighthouse-nethermind-1 node. Update the main.tf file as follows: +```terraform + { + id = "lodestar-besu" + vms = { + "1" = { ansible_vars : "validator_start=0 validator_end=25" } + }, + }, + { + id = "lighthouse-nethermind" + vms = { + "1" = { ansible_vars : "validator_start=25 validator_end=225" } + }, + }, +``` +Make sure to adjust the validator ranges according to your requirements and the number of validators in your network. This configuration ensures that validators within the specified ranges will be allocated to the corresponding nodes during the deployment. By customizing the validator indexes in the Terraform configuration, you can allocate validators to specific nodes in your network according to your desired configuration. + +4. `terraform apply` will create a the machines and the inventory file for you. The inventory file will be located in the [ansible/inventories/devnet-0](ansible/inventories/devnet-0/) directory. + +5. The inventory.ini file will have the list of all the nodes that were created by Terraform. The inventory file will also have the validator ranges that were specified in the Terraform configuration. The validator ranges will be used by the Ansible playbook to allocate validators to the corresponding nodes. +```ini +[lodestar_besu] +lodestar-besu-1 ansible_host=167.99.34.241 cloud=digitalocean cloud_region=ams3 validator_start=0 validator_end=25 +... +``` + +6. Adjust the total number of validators in the [ansible/inventories/devnet-0/group_vars/all.yaml](ansible/inventories/devnet-0/group_vars/all.yaml) file (ethereum_genesis_generator_config_files.values.env.NUMBER_OF_VALIDATORS) to match with your total number of validators that you are running.. This will be used by the Ansible playbook to generate the validator keys and deposit data for the network. + +## Network Configuration +1. [ansible/inventories/devnet-0/group_vars/all.yaml](ansible/inventories/devnet-0/group_vars/all.yaml) has all the network configuration parameters. Adjust the parameters according to your requirements. Most likely you will not need to adjust these, unless you would like to use a custom setup. The default configuration will work for most networks. + +## Deploying the Network +1. Run +```shell +ansible-playbook -i inventories/devnet-0/inventory.ini playbook.yaml +``` +from the [ansible/](ansible/) directory to deploy the network. This will generate the genesis file, validators and deploy the network according to the configuration parameters specified in the [ansible/inventories/devnet-0/group_vars/all.yaml](ansible/inventories/devnet-0/group_vars/all.yaml) file. + +Don't forget the following gotchas: +- Change the `ethereum_genesis_chain_id` value in [ansible/inventories/devnet-0/group_vars/all.yaml](ansible/inventories/devnet-0/group_vars/all.yaml) to avoid clashing with an existing network +- Ensure you have `docker` running on your local machine, this is essential for generating some post-testnet files +- Make sure you add the github usernames to `bootstrap_default_user_authorized_keys_github_...`, otherwise ansible will fail on the bootstrap step +## Cleaning up the Network +1. Run +```shell +ansible-playbook -i inventories/devnet-0/inventory.ini cleanup_ethereum.yaml +``` +from the [ansible/](ansible/) directory to clean up the network. This will delete the genesis file, validators and clean up the network on all the nodes. + +2. Run +```shell +ansible-playbook -i inventories/devnet-0/inventory.ini ansible-playbook playbook.yaml -t ethereum_genesis -e ethereum_genesis_cleanup=true +``` +from the [ansible/](ansible/) directory to clean up the network-configs and validators directories on your local machine. This step is required if you would like to reuse the nodes but with a different genesis configuration. (For example, if you would like to change the validator indexes assigned to the nodes, due to a relaunch). + +3. Run `terraform destroy` from the [terraform/devnet-0/](terraform/devnet-0/) directory to delete the nodes. This will remove all the virtual machines and the inventory file. Be careful when running this command, as it will delete all the nodes and the inventory file. You will need to run `terraform apply` again to create the nodes and the inventory file. + +## Tooling and Infrastructure +* The tooling for the different test networks is managed by our Kubernetes stack. These tools utilize the [ethereum-helm-charts](https://github.com/ethpandaops/ethereum-helm-charts) repository. The deployment of the tooling is handled by ArgoCD, a continuous delivery and GitOps tool for Kubernetes. (Warning, this will not work, unless ArgoCD is configured to monitor the repository). +* Place any custom tooling in the [kubernetes/devnet-0](kubernetes/devnet-0) directory. The tooling will be deployed to the Kubernetes cluster by ArgoCD. +* Keep the format of kubernetes/devnet-name/tool-name/ as this will be used by ArgoCD to deploy the tooling to the Kubernetes cluster. +* To update a kubernetes helm chart, remove Chart.lock and run `helm dependency update` from the tool directory. This will update the dependencies for the helm chart. Commit the changes to the repository and ArgoCD will automatically deploy the updated tooling to the Kubernetes cluster. +* To add a new tool, create a new directory in the [kubernetes/devnet-0](kubernetes/devnet-0) directory. The directory name will be used as the tool name. Place the helm chart in the tool directory. Commit the changes to the repository and ArgoCD will automatically deploy the new tooling to the Kubernetes cluster. +* To modify the configuration of a tool, modify the values.yaml file in the tool directory. Commit the changes to the repository and ArgoCD will automatically deploy the updated tooling to the Kubernetes cluster. +* To delete a tool, delete the tool directory or move the devnet to kubernetes-archive directory, as this will not be monitored by ArgoCD. Commit the changes to the repository and ArgoCD will automatically delete the tooling from the Kubernetes cluster. + +## Additional tips and tricks +* To get the IP addresses of the nodes, run `terraform output` from the [terraform/devnet-0/](terraform/devnet-0/) directory. +* To get the validator ranges run +```shell +curl -s https://bootnode-1.devnet-0.ethpandaops.io/meta/api/v1/validator-ranges.json +``` +* To get which validator proposed a specific block run +```shell +ethdo --connection=https://user:password@bn.lighthouse-nethermind-1.devnet-0.ethpandaops.io block info --blockid 100 --json | jq -r .message.proposer_index | ./whose_validator.zsh +``` +from the [ansible/](ansible/) directory. +* Getting execution layer client enodes +```shell +curl -s https://config.devnet-0.ethpandaops.io/api/v1/nodes/inventory | jq -r '.ethereum_pairs[] | .execution.enode' +``` +* Getting conseus layer client ENRs +```shell +curl -s https://config.devnet-0.ethpandaops.io/api/v1/nodes/inventory | jq -r '.ethereum_pairs[] | .consensus.enr' +``` +* Update all sops files +```shell +# Find all .sops.* and *.enc.* files and update their keys +find . -type d -name "vendor" -prune -o \( -type f \( -name "*.sops.*" -o -name "*.enc.*" \) \) -exec sops updatekeys {} -y \; +``` + +## Genesis allocation used: +Here's a table of where the keys are used + +| Account Index | Component Used In | Private Key Used | Public Key Used | Comment | +|---------------|-------------------|------------------|----------------|-----------------------------------| +| 0 | tx_fuzz blobs | βœ… | | Spams blobs on the network | +| 1 | tx_fuzz_txs | βœ… | | Spams tx on the network | +| 2 | mev_flood_signing_key| βœ… | | Spams mev-able txs on the network | +| 3 | mev_flood_user_key| βœ… | | Spams mev-able txs on the network | +| 4 | faucet-1 | βœ… | | Faucet 1 | +| 5 | faucet-2 | βœ… | | Faucet 2 | +| 6 | mev_flood_private_key | βœ… | | Spams mev-able txs on the network | +| 7 | manual-deposits | βœ… | | Used to make manual deposits | +| 8 | Marius is rich | | | | +| 9 | goomy | βœ… | | Spams blobs on the network | +| 10 | assertoor | βœ… | | Runs various test scenarios | +| 11-29 | available | | | | diff --git a/ansible/_update-known-hosts.yaml b/ansible/_update-known-hosts.yaml new file mode 100644 index 0000000..bfc6d20 --- /dev/null +++ b/ansible/_update-known-hosts.yaml @@ -0,0 +1,14 @@ +# This is an auxiliary playbook that helps to generate a list of known_hosts based on the hosts defined in the ansible inventory +- hosts: all + connection: local + gather_facts: false + become: false + tasks: + - name: Update known hosts + ansible.builtin.known_hosts: + path: "{{ inventory_dir }}/known_hosts.txt" + key: "{{ lookup('pipe', 'ssh-keyscan -trsa ' + ansible_host) }}" + name: "{{ ansible_host }}" + state: present + when: lookup('config', 'DEFAULT_REMOTE_PORT') | string == "None" + delegate_to: 127.0.0.1 diff --git a/ansible/ansible.cfg b/ansible/ansible.cfg new file mode 100644 index 0000000..22ab85d --- /dev/null +++ b/ansible/ansible.cfg @@ -0,0 +1,26 @@ +[defaults] +ansible_managed = Ansible managed. Don't change this file manually. Template info: {{{{ (template_fullpath | replace(playbook_dir,'')) }}}} +stdout_callback = yaml +inventory = inventories/devnet-0/inventory.ini, inventories/devnet-0/hetzner_inventory.ini +roles_path = vendor/roles/:roles +collections_path = vendor/collections +forks = 50 +timeout = 60 +retry_files_enabled = False +host_key_checking = False +vars_plugins_enabled = host_group_vars,community.sops.sops + + +# Persist facts locally so that they can be used within multiple runs +fact_caching = jsonfile +# Keep facts forever +fact_caching_timeout = 0 +# Where to store the fact cache +fact_caching_connection = tmp/devnet-0/ + +[inventory] +enable_plugins = script, yaml, ini + +[ssh_connection] +ssh_args = -o ForwardAgent=yes -o ControlMaster=auto -o ControlPersist=60s +pipelining = true diff --git a/ansible/cleanup_ethereum.yaml b/ansible/cleanup_ethereum.yaml new file mode 100644 index 0000000..074ae48 --- /dev/null +++ b/ansible/cleanup_ethereum.yaml @@ -0,0 +1,86 @@ +- hosts: all, !localhost + serial: "{{ batch_count | default('100%') }}" + become: true + tasks: + #- name: + # ansible.builtin.pause: + # prompt: |+ + # ========================================================= + # !!!!!!!!! WARNING !!!!!!!!! + # ========================================================= + # You're about to cleanup all data on the following nodes: + # {% for host in ansible_play_hosts_all | sort %} + # - {{ host }} + # {% endfor %} + # ========================================================= + # Are you sure you want to continue? (yes/no) + # register: prompt + - name: Cleanup all data + #when: prompt.user_input == "yes" + block: + - name: Remove eth containers + community.docker.docker_container: + name: "{{ item }}" + state: absent + timeout: 5 + loop: + # Execution layer clients + - "besu" + - "erigon-init" + - "erigon" + - "ethereumjs" + - "geth-init" + - "geth" + - "nethermind" + - "reth" + - "execution" + - "execution-init" + - "reth" + # Consensus layer clients + - "lighthouse-validator" + - "lighthouse" + - "lodestar-validator" + - "lodestar" + - "nimbus" + - "prysm-validator" + - "prysm" + - "teku-validator" + - "teku" + - "grandine" + - "beacon" + - "validator" + - "grandine" + # Others + - "ethereum-metrics-exporter" + - "snooper-engine" + - "snooper-rpc" + - "cl-bootnode" + - name: Remove data dirs + file: + state: absent + path: "{{ item }}" + loop: + # Execution layer data + - /data/besu + - /data/erigon + - /data/ethereumjs + - /data/geth + - /data/nethermind + - /data/reth + # Consensus layer data + - /data/lighthouse + - /data/lighthouse-validator + - /data/lodestar + - /data/lodestar-validator + - /data/nimbus + - /data/nimbus-validator + - /data/prysm + - /data/prysm-validator + - /data/teku + - /data/teku-validator + - /data/grandine + - /data/grandine-validator + # Config files + - /data/ethereum-network-config + - /data/execution-auth.secret + - /data/cl-bootnode diff --git a/ansible/group_vars/all/defaults.yaml b/ansible/group_vars/all/defaults.yaml new file mode 100644 index 0000000..2fa343c --- /dev/null +++ b/ansible/group_vars/all/defaults.yaml @@ -0,0 +1,65 @@ +ansible_user: devops +ansible_python_interpreter: /usr/bin/python3 +# Template name refers to the name of the devnet without number +# Generally refer to the first word of the repository name +# e.g. peerdas, or pectra +devnet_name: template + +# IPv6 Specific configuration +global_ipv6_enabled: true +global_ipv6_subnet_ranges: + hetzner: "64" + digitalocean: "124" + +###################################################### +## +## Role specific overwrites +## +###################################################### + +# role: ethpandaops.general.bootstrap +bootstrap_user: root +bootstrap_default_user_authorized_keys_github: + - barnabasbusa + - parithosh + - samcm + - savid + - skylenet + - pk910 + +# role: robertdebock.fail2ban +fail2ban_loglevel: INFO +fail2ban_logtarget: /var/log/fail2ban.log +fail2ban_maxretry: 10 +fail2ban_bantime: 600 +fail2ban_ignoreips: + - "127.0.0.1/8 ::1" + - "{{ lookup('ansible.builtin.url', 'http://ifconfig.me/ip', split_lines=False) }}/32" # Avoid banning ourself + + +# role: ethpandaops.general.docker_network +docker_network_name: shared +docker_network_enable_ipv6: "{{ global_ipv6_enabled }}" +docker_network_ipam_config: >- + {{ global_ipv6_enabled | default(false) | ternary( + [ { 'subnet': ansible_default_ipv6.address | default('::1') | ansible.utils.ipsubnet(global_ipv6_subnet_ranges[hostvars[inventory_hostname]['cloud']]) } ] + , []) + }} + +docker_networks_shared: + - name: "{{ docker_network_name }}" + +# role: geerlingguy.docker +docker_users: + - devops +docker_daemon_options: + "log-driver": "json-file" + "log-opts": + "max-size": "500m" + "max-file": "8" + +# role: ethpandaops.general.prometheus +prometheus_container_networks: "{{ docker_networks_shared }}" + +# role: ethpandaops.general.ethereum_node +ethereum_node_images_always_pull: true diff --git a/ansible/install_dependencies.sh b/ansible/install_dependencies.sh new file mode 100755 index 0000000..77a0aa6 --- /dev/null +++ b/ansible/install_dependencies.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +ansible-galaxy install -r requirements.yaml --force diff --git a/ansible/inventories/devnet-0/group_vars/all/00-defaults.yaml b/ansible/inventories/devnet-0/group_vars/all/00-defaults.yaml new file mode 120000 index 0000000..aa09835 --- /dev/null +++ b/ansible/inventories/devnet-0/group_vars/all/00-defaults.yaml @@ -0,0 +1 @@ +../../../../group_vars/all/defaults.yaml \ No newline at end of file diff --git a/ansible/inventories/devnet-0/group_vars/all/all.sops.yaml b/ansible/inventories/devnet-0/group_vars/all/all.sops.yaml new file mode 100644 index 0000000..0d43162 --- /dev/null +++ b/ansible/inventories/devnet-0/group_vars/all/all.sops.yaml @@ -0,0 +1,154 @@ +secret_zerossl: + ACME_EAB_KID: ENC[AES256_GCM,data:OPsYVkpJ/ISkZcUDdZGLOcNUD2jfHg==,iv:WkDvniP4a1cjpRTQqT0MnJo9UkIp+iwJ3NPSTb8sFsU=,tag:ZjX5UFuCOd7zR9fOP0tcQg==,type:str] + ACME_EAB_HMAC_KEY: ENC[AES256_GCM,data:36+HfiQnMolcxAQHxsTEN2o0WpBYeoSFRe7RjoxnYIcsKwHrUVGNF2TtDczfXK7kZhsK2ZMuK+J4j5IfJVxsdfhJ07jJtIKGkRavo7Evb/+0IJt/sgs=,iv:Evd5W8ORLtUa3sSl6XeaqY69p0FAmpiFmjXDlP+XbUY=,tag:ZyW6rwzl2+I/bTKLeYDZyA==,type:str] +secret_prometheus_remote_write: + username: ENC[AES256_GCM,data:zpGvEsv1Lrk=,iv:OVx9miE7xFRL/rBM6dkc+hnBYqPuRJTWhhzQ4T/hsmU=,tag:o+ulpT+Hxx8pmp7O6YPdlw==,type:str] + password: ENC[AES256_GCM,data:14dBuUrGzQ==,iv:sOc8R7kQ0mxeUxTkjVIBCKhr+lvE7W2i3xfkmFlHj4U=,tag:1GhjGilrb32jr4wFVMXZ1w==,type:str] +secret_loki: + endpoint: ENC[AES256_GCM,data:1p4l9AKwvQDa67LQul+2s0Z5gxyuzhpj5cb/R4fGI6JPb0qXLJBfZcP++cVV0Rlffymz6KgDb8Q=,iv:A7oFYrwv7Aszp7348IQ/9qv1RWl3oe7PigjygkV43+I=,tag:HJciMwvYT21QVVV2YfjYcw==,type:str] + username: ENC[AES256_GCM,data:ARG3BICw5Hk=,iv:LhfgXsZu5oCLMfGpGrnQTTPAO0AHkm0IxYnOcFVrs9Y=,tag:6T5zDhQRr3FIyBjoVtSbsQ==,type:str] + password: ENC[AES256_GCM,data:MWQXJxCptw==,iv:3pgpVjt4EPBREWrg/pmDYxTDwtJvBZQNNs44tDIv0/s=,tag:/ydFBPLPAo/FeC7UCQrBmg==,type:str] +secret_nginx_shared_basic_auth: + name: ENC[AES256_GCM,data:bjlM,iv:DiOGlqfOfrDlt7X4OGY27OYlkDDEHguv+kg1zRhBek0=,tag:ZPlucwl2PNXeXcOc8PmCBQ==,type:str] + password: ENC[AES256_GCM,data:ocIOy4nOHWVmW08S2hb7,iv:yvC4WWOOJvVeegWl0uj2P8yxcfBgNrvYSm5xUB5qux8=,tag:+8MDMeB7gKlCApMv5YrBGQ==,type:str] +secret_ethstats: ENC[AES256_GCM,data:sai7nuMTAtnMZ34=,iv:WHYxXgQ2LdLGMKxvagmT3UhmQl/dRucpyhYzZxHvLHc=,tag:dK0cqr61PwR6Yla8OKGjDg==,type:str] +secret_genesis_mnemonic: ENC[AES256_GCM,data:n1zuDj+DDsv8hB07Z7Ilb+JyhL4vuDSXRmvWl811WPD1X2SEPLZJn4Yktxj5P50biPgdg1vTal2MWSX+GK5xqTJu67FbbyNSm9IW7A5np3izxy7J5rVQ7nWpjGEN3lEgduh+WUwpfbkCt/0DLYd5cPVZ0KV5lmIH6Evnug29ORblyi1CkOFhHXWVmqLnowIf/1yWBtH6G+kkaNni63YI+gIZXI1T,iv:EaQilsQbnswzCqkWSK9G/R3wwmMRDwWZDjdZQ1fUZRk=,tag:03+lA5X1gO1V/+pGipP2hA==,type:str] +secret_mev_signingkey: ENC[AES256_GCM,data:7xug6L4MXETqWb7cmZS6BpAxBercs4mnJEg1NKp+LwZjCWl5pPAlTbfZASwXVBMo24Xoqi9/FbjeJML6WtaJ2Q==,iv:UGcVz81+wBNdb4cmkg9t4tSamqOaBUfWk6glh/6jUA8=,tag:W5Y00+vamA2tq2tEpAEhQA==,type:str] +secret_mev_flood_private_key: ENC[AES256_GCM,data:2vVJ+N0XLer202Dc5J2HVjTEW6XUa+LpmhS/mo2brt+qzabraTSaD7d4P5rVqbovW+W5Je5FdDr4s7rScyn/RA==,iv:1qNfUVqJ9eebRmA4Ly59KFR9WmaQ8eelSvNLJAWCJ10=,tag:knDhqt3zak1OEsHi2nQ3oA==,type:str] +secret_mev_flood_user_key: ENC[AES256_GCM,data:+XXSXUZdEKClV09Pfy/YWULlRl+5njMWcKOvPwuF6YUWHP2spLbJa8BnOimxxi6v7ioGMXEZW7XROVqqQiY4Aw==,iv:efkOBcrGeGJwT91SR+2wFI/fpnWASQeqjH3MJSIQBAA=,tag:KjJMfc7VgZkc8cy/IHrNNA==,type:str] +secret_xatu_sentry: + server_address: ENC[AES256_GCM,data:U3A2QJfVr5/cj7sMbf1C8ztynZc9MS5K9tstLiNYRzhGtC9ZU6npoGL/xsV8y5Z8yg+Z,iv:fuAuq7J/ksqoOiUKMmL96DB5Qbx6HJs4qHVYMoAziOE=,tag:LhQAkrXq9QsWrUneltJXig==,type:str] + user: ENC[AES256_GCM,data:6Rl/PXMHqw==,iv:gHXmk6tie0m6usKO6v9kwBI3BW0Kjj04wuMiijQYVbg=,tag:qjLt4uzXQ2s3j+xvEGlYFQ==,type:str] + password: ENC[AES256_GCM,data:Qs3nM2MRodo/iUNB+w6ezZo5jIBpWp/vjuZmzDly55IYMobc,iv:qdGn0xmCaDu8W+y2cOh4tDaXz9eifsMc186OqaPFcAk=,tag:kiSkV9uWDoAtzSSWkHiZ/g==,type:str] +tx_fuzz_blobs_privkey: ENC[AES256_GCM,data:XUiDF6puTOcP0veM5k2x9PmPSA2vP1FeoxSY7rn0bxLMB0b/DsB7y7bfsjBlgPIiL9f2AOSfsol8WWxd3zT6IA==,iv:qTk22/lpJyWFycayBupQp0sBaw2E2oq7peWypQh+0Ic=,tag:Eeqpv2JCfrsQd5ovOcpdVg==,type:str] +tx_fuzz_txs_privkey: ENC[AES256_GCM,data:c52KtPzcxyZPj3vQ6tx0Di5uLFy5JoRUSZ5ZH/WEj7nqC7JTwRw3+bNPk8Y43wjE7caqRZ7eq0la0Bc42ydpew==,iv:gHO+ttqzJCbRBCUvmlsTVNQK6vpnGXamIag63HS/fas=,tag:1Qultc6tndFGDuSKjm/TVg==,type:str] +goomy_private_key: ENC[AES256_GCM,data:+AwqAcOobrvR5gXxdABQki0rH41Ns8H3sJvVtQb5sh/596u1oDPq2bEh6Tpkfx8B+x4rSp+MRQi5wHwk9/Nqcw==,iv:Ibm4sLvU+tNk7EqaSPs/2CRLU1yLlNDgSWjR+uNPrvQ=,tag:oWbWW/jt9pPTWFcRoVTBsg==,type:str] +nethermind_seq_api_key: ENC[AES256_GCM,data:Zg0SODORD54P9n85F/2cp3MiQvQ=,iv:tNCA6W6hJm1PybTE2piAhfUjDKCqQWeN2FQfgiayJC0=,tag:Vo+R3gcYDAAGRPq3cMcvvA==,type:str] +nethermind_seq_server: ENC[AES256_GCM,data:uODawQjQ0OhiHU+/h1VuSKd73pMVzv5z6g==,iv:2Iu5nQAjRmxqkOF2Pueup+Kiwd34sfTxWY8aFv0pea0=,tag:Ih4drVTZJ6wZ4m737rXw4w==,type:str] +nethermind_push_gateway: ENC[AES256_GCM,data:aK6ipP3Q0DD1WPL9RfrSc/rn1xpo+b3oF0XYSxXIwsGzos7w96xKh9pxX+I9gJl11mY7WWZqfowus2vwslgI9MdoFEqKGw1vKIlCZtYRwVDX4kB3dbvSNuMJogoCDZqK9YpxiPJ1olLmkfBiGJQ5/rtzKY/Ea2OR51EmMczQhn6SkVAnQ355AoFiZaMJI2Ti5A==,iv:WuQDvBvS2zjEB805HYkq5TQ/H8baF23vyMP9JbdqCao=,tag:SHRW2Gcd8BZhS9SFfeBMZg==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: [] + lastmodified: "2024-10-08T10:47:41Z" + mac: ENC[AES256_GCM,data:jwxnRNOI6O1Gn9BOj+Te1XAJln6wpQzcjukFE4lDEc99qQZb4+do0uszwbXPfMLMJPZ3N2nKEuemNRhLvU3QPQLCrhddyBqYzqTcMs8EZL0jOgRRxbkDpw26IN1IKoaDSDZm99pXWZAXlOUA6G+ZOcX67WgwfQtOpmurhfrhZm8=,iv:iefVyjob9TMj4dh/Iq9DVLr3B2ccL29V/Acc5EXCyG4=,tag:EdxNfGKoTfezBRXrTAbCtg==,type:str] + pgp: + - created_at: "2023-09-28T11:48:21Z" + enc: |- + -----BEGIN PGP MESSAGE----- + + wcFMA32GcoRiZf6pAQ/+K0pHUTKocKocuNwu8d4rWDcVWqzYk2GaOynxQHmNlyhi + TWEb6YUuE6aLoXL8/Wwx0qtBTESS7g3UnjnukLukOW+GphZZuDVeEre1il03JaiD + rUpQFkBiWQZAZbzVHsg9OLQUhgrAN03WfCQW6eL/IP61q+S08OSHC4Yn39EJWSXp + QIAwRFBCROF21IYeMAOZVjnfVykVn3sybaUuYqaSP/LhKsc3q1lF3RFM7MP/zv8q + dSwOCsw+uprIUU8z1j4CJDjzitlKxfsAGHVCipG63WfuqhmtBoNMl2tCIMYcw668 + fDoECYOs4jlNuMxa7bGoAHLXfezqS1siy3T/YHYic8maf8PkDEjUKWX2orR5LTWb + MetbUwaylRpJ9VWlBFaXa/nqMlair1SHz3XkARnnR6blVh1AlxIEYyXsCNk7x3cV + 7wDRkyc/Vmf1MzoVDHSCwjgaAS/FpTbPM6iysG1bDUktUENwDoZ4eS4KQ6D3tvFh + huWCRnwCvNsLdvC/imlWxSYr3SF2WDGR+mEbmSJcxaKW/KkhP5EG3qGQa48txmH5 + hi/AnYXKMgOyFOtjrDJJfCVW/bRd/GmO/6fbu2twpKlbx3k3Rrr5Jwa5hiYAMKr9 + h0KUp6s6jF+hyNioXIdlPD+jXkf8QoO6zWpKoy4oItr5D4GDRTCebmfxkk60pCnS + UQHNPsBsQGPD6059xZQ05BvHk8OISNohfeYSgnRwFeC1PGO8jMj0FyBbfm2RkX1Q + zZ1X96Q4FI2bAb0aimqiZGHG8gq+DfhrrfaPSvSscfEyhg== + =5jV7 + -----END PGP MESSAGE----- + fp: 80DB2B4EF6CA4D9829C280605636BC0E08138A24 + - created_at: "2023-09-28T11:48:21Z" + enc: |- + -----BEGIN PGP MESSAGE----- + + wcFMA87Wber4r4dGARAAo+HyY/BCDL7QhVgD+tfeMYikHg5n0zbqduXIGchgG+gk + o9UKK3O6F8V8mWoyf5Tat8cQOZpizTY2nGDRde/6CGLgOak1FRHDb8nhCuiiy6mC + ChuzerSmpYsx6UpqRhTS7IXtmdg0p3pe5o6JCZEUKrvP9ijWLQTUpy3K2u1H7qRp + SWmrvOiAQ5LjbYMl3lU71U0oykc3T/7q9fiZptZTFhzzDrBLnomp1ZdUmRzYtbhx + 3Zk3QLhEJGRdQUwHEIDKGVT6AXS73R2xBZlp8elmwM8T5ze7GzOo16RRfw19sV/p + jmBZqhNZD7vb88jtoMa30FFj8kp5rMq1AvFeO+7PcnKvW6sMDX7iaaLPZ2Vzg3Tx + /AtqShFImJr9j0Oa3B2THfGk2hsSJLuwpWIuJhyADrgijxavS3I//K5taJXgNsTY + ER7junq3kZzfBIpWQB7e4DokvbE87pBF9cKdNRoPGr+iy1tvh9eex+eThuqCpuy0 + Ot6HR+R3M0GAnqXZ+dihBMxFGpfadYX7dcNMXc0Uqpv/rgq+fUgz1i/JwjwuMoEW + kcnqjGDNsYGmG3/l0RfpmvkLFPt2Niji8DXl5Zt8ti8fW7HON6ddd57uYQ1o+O9m + yGetEZOF5obJeQPNWXXbYsmEZwN7EcRBMhivVamouLAe/HNYgJdQHOcCSW45ZDPS + UQHXFVtY2va6BfLgzZDKx6bGGUWAZZb54nB+5Rrx16tEFJekOHTmIBBxD0zWiMKJ + IRJh1DtPleiv7M87SBAWVBqLSY5ZBfiElQs9MiO7oIGkxw== + =6fxS + -----END PGP MESSAGE----- + fp: 69F66EEA7AE36CCB77DDB8CA1BC39532FB4A2DBD + - created_at: "2023-09-28T11:48:21Z" + enc: | + -----BEGIN PGP MESSAGE----- + + hQIMA4hw3nPn82LyAQ//TAEBuAoCaspDCZMSloKrzEN64GIv2QJNy4PdTcx/3yZ9 + JmYaxNG4Fu6f1xGrpwoUIOIJQ4Oi2osU3xP04d4gi7hEUPbEBH0V1QhHbB2ci8Ry + Ylf3sRDGGs8OZnDNHSRMc1UxYRqoK4nQEalYqTeiQGOvSBNMN9vJZHyAvx8hMHnM + Zn+OPuJ8rdsuXQ2AnAevz5pC0Qo143JDmdUl7rTenKT05yfEfF9aKSIrpjg24fgZ + nl1KMCZzudfp3wZvvR7HIy2LYG/dLd4SBvQVsLPpDRhPR2ieg520aiKTfWT1i5zR + fBPCzpgVzm9ex2QPBVpbt7XrCwmoU5ltWRg730gGxzIl8tWU7xR7CZtVtP4qMVuv + v6dFwIJeLLmPAKq0WOo2eNOmDdOIcX6WkTMocZh2q7N5VlAZZFj4/o0Pp/mhaG2m + DNtZuxLuNXhXdFvuP2bCwNID/4tEJya3jcQFIby+zaOGp/mfxUmuK83In9WzPTfU + rNlBe9i6g5nwfNmVyl7/ZclNpVFy/95KCjFv1ZqzE04DoYMyDLqSJ0IgjiGc1x40 + X6Fm7uIVDNrNqZeOyda7CDxsiNjyFNwle8ChqEoohuK50wvZonL+5iJtYnEdfdZT + q8gMtiqAlYMoPu4USxtVS8tbzjJwSw536jSHcS+QWmi0h3htQB81X6Fmokyw8SbS + UQEci/lnKwM0fmilDWHn85sspZN9h47NFAJ7sgXiSrEUDxLUfj4mZpUWOn5U61eL + 3pbepyoDhznykX+sQIeFvpSJ5AFjoBetSewP4OGgZ/YmZw== + =1Tcn + -----END PGP MESSAGE----- + fp: D1002590180DE371BCB455EAEFCD4ACD0B4D3F6E + - created_at: "2023-09-28T11:48:21Z" + enc: |- + -----BEGIN PGP MESSAGE----- + + wcFMAw01qfIBwY0JARAAv2FxRfh+MMFJFdnTGWOS/i/SSOYqlw0Fcr72OYPHPRSQ + XXPkM065g117CT0aUhTwfs/DD8aukT4mwgxmXwM8/yI+hjZ0uT6Unmwr1PCo5JN1 + tIvPDh9ZoVxi0Wq67cIu96eKzlOLU6bWfz2HayxiSNIAQjUvHNZe8GJ5WxXj7W57 + Zx6YsDTm0Fsd3ndyhC61wGdqFleRAerturQAmgVdbJ9JeNpgSHQXUBtlZtLEHWRK + d3te8AbkkN3HOKJ4OKhQv2htmHM2L1tEM++l+1tr2r2ekGetzZvLm+5bksAwdwkS + GxCnyTU9sC2CLmdE2QTGrhlZd3YDZ/3WcDZhKn+xHsOBFp33Qy+yVSGUh/XDYUDJ + xR2HDfdrS1ehmiuQR56YpDM6VtlGAlFkw9sQst5v5j6U1dbnjgouX6WxhAzOoMYK + uR6x0KY4EEj0DugrSPMFTCSiwqONWVmh5UnW/R2tDfS7w+78NZmIlL2rEG47LDo7 + +bbMHP1PDxoNsTq6kpl9vEY4tREkaXGZvTP4HXfd+01GZORQ7ybPqmEMC6AuetdC + NRUYoh1BDP6oTpZOS0qm5IihGJRIzSDl40zAVdDQXkDdgPoGov0XWJYTmXcNSCaj + sUdOHj8LZkVHCKG7jHKymR2uHkJ9DDNj07zdCEUwIPJq0IvazgdFebWcCky6MbDS + UQHyt+BqP1M8ICtXlaBrREkZPSzZvLTJLgqrs43EVOpNH1BP2U3X4T8LgdWVYHGy + oBCC3fzJ/F+gHQgUgZeb78FHBppXtZzWN91gQyGso0z0VA== + =l9+P + -----END PGP MESSAGE----- + fp: B9F81F327CF5346860E85269D7AF98F214C59E4E + - created_at: "2023-09-28T11:48:21Z" + enc: |- + -----BEGIN PGP MESSAGE----- + + wcBMAwDFOgk9tOQ+AQgAq2I9Xdaf7oNR3GNtgnpBeLMlm9i6NKqmLWCWZpa6AK5Z + yGYFRAya9/FEzdA3IWTLPtK54PExD22Ltj36YgpXLTzAVex+eCtvIq0ADsLa9dwm + 2wB6ZcNQFBP6XlovHO3dP1cAf1z0KMWhdZ3TaS+6Su775t74t+eqyAY80AO8HhFJ + +mx2ryYTau2eugQ97ijGFCrb4e+3C/uDjLkPSFN8EA021VcyPJQ+3wN517LcSw7k + OgQ6dGCq1eRcHjlu0SkiMBf1G7l5H3kzPQqX7Mbd45QUxnIUScS8UEO5p6XLm2jL + 54AR2iw/ztVm1mQD4hKw6xC7zO5nbNpgvKvEqGLVQ9JRAabGwRVVuTGLyIV+BYc5 + y/dFrT7+apeV9oTpjV2dxJ3ShxgO8QaEDrsFsoRmSjrTTa+3yY3q5rcJv97hTeXw + iuC1i7RZ8drFqIbzMVIVIz0E + =4RwK + -----END PGP MESSAGE----- + fp: 0600D41E1313E31016F7C55BF597BC0C5F22D1A2 + - created_at: "2023-09-28T11:48:21Z" + enc: | + -----BEGIN PGP MESSAGE----- + + hQIMAz4a8AV36xppAQ//T+sI4myUCRgzDzLGbILleBgOo5kxtWsqUvqyg4QZNsS4 + +t6oJKgO/qOc8u/O+FzWsTRLzHYolsqgJx+wmwTQEQi6yvrikwxHG5GLBbsX5hn4 + KohjQankBEN+GCmGH+R4fXnXUhERuobqByosbX2qZY16gaaToYbhFqBh1zBvFkCn + MSZBjvgVQmHEwYtR5/bbUg5UwlTnROcNhpQndkwPt3b7B5+N+H4Dw4aJUWs0SX/A + QGkeXmCNCWUQQ/wpK7doTQ2VcX6jRb9Ocrl+JFMRGWentgfF74l7Y98T9brv1r0k + m4+wstSPIJnNKSaBDKjmkVDb8GvsIs6M9+DCzJdgTNWAc1ww1WtLnK/7Mf2Um+jb + ntc2IMXFwy7sblopQzz3z5H+rbYVZGhA4oyOnBznyW1P3BzkWQ//DmgAAp3/QV1j + pCkqAa3dNOadErbn8fbmK5Z/fIh1KMS+DqjGqARkd5v/oLqzCxx2Hz7Mj1qAT9UX + 6lhTpJtwXVYKvkjHwYIEOYWdYm4Ft/AqdNJ0S1s0nM1Iiz044HT2s3/pi3Kh0I58 + RmL8M0P/4Mldn33jPyTqUNwuJVtdedEW1/MtiRuQrMMKMlj2wjws9mmrDHAu7ejC + ooIK+URuYAiA+tDcJjzOQsNpn4NN6CpUr62qeGCDh6JScIvLdCVHMZ3I+L6XY57S + XAECAgszZJCCewO77rvSwggDv7BsU9vt3SOmSKsju8qIuu2bzEapmsRsrkzzZBHJ + p2QAB/4TUXzujNighZ9KnRIjrewFTJyQG6JVG9a0Ig3uz5yxb5bdewbvzRYx + =ixtV + -----END PGP MESSAGE----- + fp: 29C50D01122FDE78E257482DAA497EB2610A8435 + unencrypted_suffix: _unencrypted + version: 3.7.3 diff --git a/ansible/inventories/devnet-0/group_vars/all/all.yaml b/ansible/inventories/devnet-0/group_vars/all/all.yaml new file mode 100644 index 0000000..f7d0248 --- /dev/null +++ b/ansible/inventories/devnet-0/group_vars/all/all.yaml @@ -0,0 +1,197 @@ +# β–‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–‘β–ˆβ–ˆβ•—β–‘β–‘β–‘β–‘β–‘β–‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–‘β–‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–‘β–ˆβ–ˆβ•—β–‘β–‘β–‘β–‘β–‘β€ƒβ€ƒβ–ˆβ–ˆβ•—β–‘β–‘β–‘β–ˆβ–ˆβ•—β–‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–‘β–‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•— +# β–ˆβ–ˆβ•”β•β•β•β•β•β–‘β–ˆβ–ˆβ•‘β–‘β–‘β–‘β–‘β–‘β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•—β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•—β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•—β–ˆβ–ˆβ•‘β–‘β–‘β–‘β–‘β–‘β€ƒβ€ƒβ–ˆβ–ˆβ•‘β–‘β–‘β–‘β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•—β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•—β–ˆβ–ˆβ•”β•β•β•β•β• +# β–ˆβ–ˆβ•‘β–‘β–‘β–ˆβ–ˆβ•—β–‘β–ˆβ–ˆβ•‘β–‘β–‘β–‘β–‘β–‘β–ˆβ–ˆβ•‘β–‘β–‘β–ˆβ–ˆβ•‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•¦β•β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘β–‘β–‘β–‘β–‘β–‘β€ƒβ€ƒβ•šβ–ˆβ–ˆβ•—β–‘β–ˆβ–ˆβ•”β•β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•”β•β•šβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–‘ +# β–ˆβ–ˆβ•‘β–‘β–‘β•šβ–ˆβ–ˆβ•—β–ˆβ–ˆβ•‘β–‘β–‘β–‘β–‘β–‘β–ˆβ–ˆβ•‘β–‘β–‘β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•—β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘β–‘β–‘β–‘β–‘β–‘β€ƒβ€ƒβ–‘β•šβ–ˆβ–ˆβ–ˆβ–ˆβ•”β•β–‘β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•—β–‘β•šβ•β•β•β–ˆβ–ˆβ•— +# β•šβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•”β•β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β•šβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•”β•β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•¦β•β–ˆβ–ˆβ•‘β–‘β–‘β–ˆβ–ˆβ•‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β€ƒβ€ƒβ–‘β–‘β•šβ–ˆβ–ˆβ•”β•β–‘β–‘β–ˆβ–ˆβ•‘β–‘β–‘β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘β–‘β–‘β–ˆβ–ˆβ•‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•”β• +# β–‘β•šβ•β•β•β•β•β•β–‘β•šβ•β•β•β•β•β•β•β–‘β•šβ•β•β•β•β•β–‘β•šβ•β•β•β•β•β•β–‘β•šβ•β•β–‘β–‘β•šβ•β•β•šβ•β•β•β•β•β•β•β€ƒβ€ƒβ–‘β–‘β–‘β•šβ•β•β–‘β–‘β–‘β•šβ•β•β–‘β–‘β•šβ•β•β•šβ•β•β–‘β–‘β•šβ•β•β•šβ•β•β•β•β•β•β–‘ + +domain: ethpandaops.io +network_subdomain: "{{ ethereum_network_name }}.{{ domain }}" +server_fqdn: "{{ inventory_hostname }}.{{ network_subdomain }}" + +ethereum_network_id: >- + {{ (lookup('file', eth_testnet_config_local_dir_src + '/genesis.json') | from_json).config.chainId }} +ethereum_network_deposit_contract: >- + {{ lookup('file', eth_testnet_config_local_dir_src + '/deposit_contract.txt') }} +ethereum_network_deposit_contract_block: >- + {{ lookup('file', eth_testnet_config_local_dir_src + '/deposit_contract_block.txt') }} + +ethereum_node_rcp_hostname: "rpc.{{ server_fqdn }}" +ethereum_node_beacon_hostname: "bn.{{ server_fqdn }}" + +ethstats_url: "ethstats.{{ ethereum_network_name }}.{{ domain }}" +ethstats_secret: "{{ secret_ethstats }}" + +### Checkpoint sync specific for Ansible & Kubernetes +checkpoint_sync_node: bootnode-1 +ethereum_node_cl_checkpoint_sync_enabled: false +checkpoint_sync_url: https://{{ secret_nginx_shared_basic_auth.name }}:{{ secret_nginx_shared_basic_auth.password }}@bn.{{ checkpoint_sync_node }}.{{ ethereum_network_name }}.{{ domain }} +checkpoint_sync_url_kube: https://@bn.{{ checkpoint_sync_node }}.{{ ethereum_network_name }}.{{ domain }} +# β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–‘β–‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–‘β–ˆβ–ˆβ•—β–‘β–‘β–‘β–‘β–‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β€ƒβ€ƒβ–ˆβ–ˆβ•—β–‘β–‘β–‘β–ˆβ–ˆβ•—β–‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–‘β–‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•— +# β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•—β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•—β–ˆβ–ˆβ•‘β–‘β–‘β–‘β–‘β–‘β–ˆβ–ˆβ•”β•β•β•β•β•β€ƒβ€ƒβ–ˆβ–ˆβ•‘β–‘β–‘β–‘β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•—β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•—β–ˆβ–ˆβ•”β•β•β•β•β• +# β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•”β•β–ˆβ–ˆβ•‘β–‘β–‘β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘β–‘β–‘β–‘β–‘β–‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–‘β–‘β€ƒβ€ƒβ•šβ–ˆβ–ˆβ•—β–‘β–ˆβ–ˆβ•”β•β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•”β•β•šβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–‘ +# β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•—β–ˆβ–ˆβ•‘β–‘β–‘β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘β–‘β–‘β–‘β–‘β–‘β–ˆβ–ˆβ•”β•β•β•β–‘β–‘β€ƒβ€ƒβ–‘β•šβ–ˆβ–ˆβ–ˆβ–ˆβ•”β•β–‘β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•—β–‘β•šβ•β•β•β–ˆβ–ˆβ•— +# β–ˆβ–ˆβ•‘β–‘β–‘β–ˆβ–ˆβ•‘β•šβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•”β•β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β€ƒβ€ƒβ–‘β–‘β•šβ–ˆβ–ˆβ•”β•β–‘β–‘β–ˆβ–ˆβ•‘β–‘β–‘β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘β–‘β–‘β–ˆβ–ˆβ•‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•”β• +# β•šβ•β•β–‘β–‘β•šβ•β•β–‘β•šβ•β•β•β•β•β–‘β•šβ•β•β•β•β•β•β•β•šβ•β•β•β•β•β•β•β€ƒβ€ƒβ–‘β–‘β–‘β•šβ•β•β–‘β–‘β–‘β•šβ•β•β–‘β–‘β•šβ•β•β•šβ•β•β–‘β–‘β•šβ•β•β•šβ•β•β•β•β•β•β–‘ + +# role: ethpandaops.general.ethereum_genesis +ethereum_genesis_generator_container_image: "{{ default_tooling_images.ethereum_genesis_generator }}" +ethereum_genesis_generator_version: "{{ ethereum_genesis_generator_container_image.split(':')[-1] }}" +ethereum_genesis_network_seed: "{{ ansible_inventory_sources[0] }}" +ethereum_genesis_chain_id: "70{{ 99999999 | random(start=10000000, seed=ethereum_genesis_network_seed) }}" +ethereum_genesis_generator_output_dir: "../network-configs/{{ ethereum_network_name | replace('template-', '') }}" +ethereum_genesis_timestamp: "{{ lookup('ansible.builtin.pipe', '{{ ethereum_genesis_timestamp_relative_cmd[ansible_system] }}') }}" +ethereum_genesis_timedelay: 60 +ethereum_genesis_timestamp_relative_cmd: + Linux: "date +%s -d '+45 minutes'" + Darwin: "date -v +45M +%s" +ethereum_genesis_mnemonic: "{{ secret_genesis_mnemonic }}" +ethereum_genesis_generator_config_files: + cl/config.yaml: "{{ lookup('ansible.builtin.url', 'https://raw.githubusercontent.com/ethpandaops/ethereum-genesis-generator/v{{ethereum_genesis_generator_version}}/config-example/cl/config.yaml', split_lines=false) }}" # noqa yaml[line-length] + cl/mnemonics.yaml: "{{ lookup('ansible.builtin.url', 'https://raw.githubusercontent.com/ethpandaops/ethereum-genesis-generator/v{{ethereum_genesis_generator_version}}/config-example/cl/mnemonics.yaml', split_lines=false) }}" # noqa yaml[line-length] + el/genesis-config.yaml: "{{ lookup('ansible.builtin.url', 'https://raw.githubusercontent.com/ethpandaops/ethereum-genesis-generator/v{{ethereum_genesis_generator_version}}/config-example/el/genesis-config.yaml', split_lines=false) }}" # noqa yaml[line-length] + values.env: |- + export CHAIN_ID="{{ ethereum_genesis_chain_id }}" + export EL_AND_CL_MNEMONIC="{{ ethereum_genesis_mnemonic }}" + export NUMBER_OF_VALIDATORS=200 + export DENEB_FORK_VERSION="0x50{{ ethereum_genesis_fork_version_suffix }}" + export ELECTRA_FORK_VERSION="0x60{{ ethereum_genesis_fork_version_suffix }}" + export ELECTRA_FORK_EPOCH="999999" + export EIP7594_FORK_VERSION="0x70{{ ethereum_genesis_fork_version_suffix }}" + export EIP7594_FORK_EPOCH="999999" + export GENESIS_TIMESTAMP={{ ethereum_genesis_timestamp }} + export GENESIS_DELAY={{ ethereum_genesis_timedelay }} + + +ethereum_genesis_validator_keys_output_dir: "{{ ansible_inventory_sources[0] | dirname }}/files/validator_keys" +ethereum_genesis_validator_bls_change_execution_address: "{{ ethereum_node_cl_validator_fee_recipient }}" +ethereum_genesis_validator_keyranges: >- + {%- set ns = namespace() -%} + {%- set ns.ethereum_genesis_validator_keyranges = {} -%} + {%- for host in groups['all'] -%} + {%- if hostvars[host].validator_start is defined and hostvars[host].validator_end is defined -%} + {%- set v = {'start':hostvars[host].validator_start, 'end': hostvars[host].validator_end } -%} + {%- set _ = ns.ethereum_genesis_validator_keyranges.update({host: v}) -%} + {%- endif -%} + {%- endfor -%} + {{ ns.ethereum_genesis_validator_keyranges }} + +# role: ethpandaops.general.bootstrap +bootstrap_default_user_authorized_keys_plain: + - "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDbboxOo0jyL3DNxqZ6UTEnZPEzPDPnujEYaClqNWSLWkphczHKAnJPkrwbAWB4JbJKjsAJ5kn53f10KPnUyZvJ5Jn8Rpf7RM7+56MYaBg84gVoA2KeIYxUa7h8neY7J61Galp0c6cOK+hp1lPsoiBSdCW/Rtbv6ALCcVe+4+uCW5FRoJcNRJfGRLRnjh1pw57HQw9O55mf319s4rVUq4umznQ0CciEx3rVMtXf4xjIZDZAhNpGaBh8AtHauaMZCOGociAIquYYqoSQnnmnOBiduRa5OkvGZomgybNQivlYboDeF6sQ71KVzRXSI+mxCYbSp246lqSdQtQsjFA54NYl/qWgAql0uqCqsZidW+XBjquyItRl2Rfzzy5Fk/gMOAJXHQYp4POfgFbqtxjWpfnuOKqW/1IGWcIt2g016effUqGgj/oePX0g+duFdszSKK773rJBySgafFF6XWNqagrLmE4LUGC+6P3oxzYTSFGeUVA21OayL+K40XPpJti5zns= # devops-eth2-shared" + - "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDWh9NW66VD4BPKETNyZeZrGN1f7G6dkihW3eAc7cbJPFQGIpnWc2tGq5o13vWW+SoCh16nkYM2oak+PJQxXYTiQnrMJSmSFd7E0DmdcoKadGJEnfosrH++aOZf/eVLe5q3E9NQFVSdOPo1MCRRTuZxPkuMxS6QikW3otWrA3F2vFgmYyki3Cy8huQzHKUZGicividYcUSFTydR2L0oWUNve3FyqMQQQPnfaJ1RvrkeGtdhRSAxa6L0jzgRK7fjpUyhKOofr7kCKARGELRRiB9QikRAoHU2/D/2jtJjKlTCJxArzXyDF2IcQCco+5Oe9x4c7Xch32dbscJSmjaAvsxRnu7GEFCS7b6kKGvwcoq5vJzvp3RBBR7Mosxv6pcM/q7Z4RhXOFVFFiPVl1dqkqSPkUrHwg8LtWOxC+GAl36vxhHLdDEV/RhbSAzO6SfYEWYGH1w7u4oiy2XAT2cNCO0j0tSHS5chX+d7TzwAbBE2HuPL84GVGHZG875hmiE+Dok= # github-actions-ci" +bootstrap_default_user_authorized_keys_github_all: + - barnabasbusa + - parithosh + - samcm + - savid + - skylenet + - pk910 +bootstrap_default_user_authorized_keys_github: > + {{ + (bootstrap_default_user_authorized_keys_github_all | default([])) + + (bootstrap_default_user_authorized_keys_github_team_el | default([])) + + (bootstrap_default_user_authorized_keys_github_team_cl | default([])) + }} + +# role: ethpandaops.general.ethereum_node +ethereum_node_images_always_pull: true +ethereum_node_metrics_exporter_enabled: true +ethereum_node_xatu_sentry_enabled: false +ethereum_node_cl_validator_enabled: "{{ validator_start is defined and validator_end is defined }}" +ethereum_node_cl_validator_fee_recipient: "0xf97e180c050e5Ab072211Ad2C213Eb5AEE4DF134" +ethereum_node_cl_ports_p2p_tcp: 9000 +ethereum_node_cl_ports_p2p_udp: 9000 +ethereum_node_cl_ports_http_beacon: 5052 +ethereum_node_cl_ports_metrics: 5054 +ethereum_node_el_ports_p2p_tcp: 30303 +ethereum_node_el_ports_p2p_udp: 30303 +ethereum_node_el_ports_http_rpc: 8545 +ethereum_node_el_ports_ws_rpc: 8546 +ethereum_node_el_ports_engine: 8551 +ethereum_node_el_ports_metrics: 6060 + +ethereum_node_json_rpc_snooper_engine_enabled: true +ethereum_node_json_rpc_snooper_engine_port: 8561 +ethereum_node_json_rpc_snooper_engine_name: "snooper-engine" + +# role: ethpandaops.general.xatu_sentry +xatu_sentry_container_image: "{{ default_tooling_images.xatu_sentry }}" +xatu_sentry_config_name: "{{ ethereum_network_name }}-{{ inventory_hostname }}" +xatu_sentry_config_server_address: "{{ secret_xatu_sentry.server_address }}" +xatu_sentry_config_server_auth_user: "{{ secret_xatu_sentry.user }}" +xatu_sentry_config_server_auth_password: "{{ secret_xatu_sentry.password }}" +xatu_sentry_config_network_name_override: "{{ ethereum_network_name }}" + +# role: ethpandaops.general.ethereum_metrics_exporter +ethereum_metrics_exporter_container_image: "{{ default_tooling_images.ethereum_metrics_exporter }}" + +# role: eth_testnet_config +eth_testnet_config_dir: /data/ethereum-network-config/metadata +eth_testnet_config_local_dir_enabled: true +eth_testnet_config_local_dir_src: "{{ ethereum_genesis_generator_output_dir }}/metadata/" + +# role: gen_basic_auth_nginx +gen_basic_auth_nginx_name: "{{ secret_nginx_shared_basic_auth.name }}" +gen_basic_auth_nginx_password: "{{ secret_nginx_shared_basic_auth.password }}" + +# role: ethpandaops.general.docker_nginx_proxy +docker_nginx_proxy_container_name: nginx-proxy +docker_nginx_proxy_default_email: "certs@{{ domain }}" +docker_nginx_proxy_docker_gen_container_name: nginx-proxy-gen +docker_nginx_proxy_docker_gen_container_env: + RESOLVERS: "1.1.1.1" +docker_nginx_proxy_acme_companion_container_name: nginx-proxy-acme +docker_nginx_proxy_acme_companion_container_env: + DEFAULT_EMAIL: "{{ docker_nginx_proxy_default_email }}" + NGINX_PROXY_CONTAINER: "{{ docker_nginx_proxy_container_name }}" + NGINX_DOCKER_GEN_CONTAINER: "{{ docker_nginx_proxy_docker_gen_container_name }}" + ACME_CA_URI: https://acme.zerossl.com/v2/DV90 + ACME_EAB_KID: "{{ secret_zerossl.ACME_EAB_KID }}" + ACME_EAB_HMAC_KEY: "{{ secret_zerossl.ACME_EAB_HMAC_KEY }}" +docker_nginx_proxy_container_networks: "{{ docker_networks_shared }}" +docker_nginx_proxy_docker_gen_container_networks: "{{ docker_networks_shared }}" +docker_nginx_proxy_acme_companion_container_networks: "{{ docker_networks_shared }}" +docker_nginx_proxy_datadir: /opt/nginx-proxy +docker_nginx_proxy_container_volumes: + - "{{ docker_nginx_proxy_datadir }}/conf:/etc/nginx/conf.d" + - "{{ docker_nginx_proxy_datadir }}/vhost:/etc/nginx/vhost.d" + - "{{ docker_nginx_proxy_datadir }}/certs:/etc/nginx/certs:ro" + - html:/usr/share/nginx/html + - "{{ docker_nginx_proxy_datadir }}/htpasswd:/etc/nginx/htpasswd:ro" + + +# role: ethpandaops.general.vector +vector_config: | + [sources.in] + type = "docker_logs" + exclude_containers = [ + "{{ vector_container_name }}", + "ethereum-metrics-exporter", + "nginx-proxy", + "node_exporter", + "prometheus", + "snooper-", + ] + + [sinks.out] + type = "loki" + inputs = ["in"] + out_of_order_action = "accept" + labels.forwarder = "vector" + labels.instance = "{{ inventory_hostname }}" + labels.network = "{{ ethereum_network_name }}" + labels.testnet = "{{ ethereum_network_name }}" + labels.ingress_user = "{{ secret_loki.username }}" + labels.container_name = "{{ '{{ container_name }}' }}" + {%- if ethereum_node_el is defined +%} + labels.ethereum_el = "{{ ethereum_node_el }}" + {%- endif +%} + {%- if ethereum_node_cl is defined +%} + labels.ethereum_cl = "{{ ethereum_node_cl }}" + {%- endif +%} + encoding.codec = "json" + endpoint = "{{ secret_loki.endpoint }}" + auth.strategy = "basic" + auth.user = "{{ secret_loki.username }}" + auth.password = "{{ secret_loki.password }}" \ No newline at end of file diff --git a/ansible/inventories/devnet-0/group_vars/all/images.yaml b/ansible/inventories/devnet-0/group_vars/all/images.yaml new file mode 100644 index 0000000..6abaad2 --- /dev/null +++ b/ansible/inventories/devnet-0/group_vars/all/images.yaml @@ -0,0 +1,45 @@ +default_ethereum_client_images: +### Consensus layer clients + lighthouse: sigp/lighthouse:latest + lodestar: chainsafe/lodestar:latest + nimbus: statusim/nimbus-eth2:multiarch-latest + prysm: gcr.io/prysmaticlabs/prysm/beacon-chain:latest + prysm_validator: gcr.io/prysmaticlabs/prysm/validator:latest + teku: consensys/teku:latest + grandine: ethpandaops/grandine:develop +### Execution layer clients + besu: hyperledger/besu:latest + geth: ethereum/client-go:stable + erigon: thorax/erigon:devel + ethereumjs: ethpandaops/ethereumjs:master + nethermind: nethermindeth/nethermind:master + reth: ethpandaops/reth:main + + +default_tooling_images: + xatu_sentry: ethpandaops/xatu:latest + ethereum_metrics_exporter: ethpandaops/ethereum-metrics-exporter:latest + tx_fuzz: ethpandaops/tx-fuzz:latest + forkmon: skylenet/nodemonitor:darkmode + forky: ethpandaops/forky:latest + fauceth: skylenet/fauceth:fix_fee_estimation + powfaucet: pk910/powfaucet:v2-stable + ethstats: skylenet/ethstats-server:poa-no-geoip + homepage: ethpandaops/ethereum-testnet-homepage:latest + checkpointz: ethpandaops/checkpointz:latest + blockscout: blockscout/blockscout:master + beacon_metrics_gazer: dapplion/beacon-metrics-gazer:latest + eth_fauceth: chainflag/eth-faucet:latest + blobscan: blossomlabs/blobscan:latest + blobscan_indexer: blossomlabs/blobscan-indexer:latest + dora: ethpandaops/dora:master + dugtrio: ethpandaops/dugtrio:latest + ethereum_genesis_generator: ethpandaops/ethereum-genesis-generator:3.3.5 + mev_boost: flashbots/mev-boost:latest + mev_relay: flashbots/mev-boost-relay:latest + mev_builder: flashbots/mev-builder:latest + tracoor: ethpandaops/tracoor:latest + ncli: status-im/nimbus-eth2:unstable + lcli: sigp/lighthouse:electra-devnet-1 + zcli: electra + assertoor: ethpandaops/assertoor:latest \ No newline at end of file diff --git a/ansible/inventories/devnet-0/group_vars/besu.yaml b/ansible/inventories/devnet-0/group_vars/besu.yaml new file mode 100644 index 0000000..317c45a --- /dev/null +++ b/ansible/inventories/devnet-0/group_vars/besu.yaml @@ -0,0 +1,33 @@ +# role: ethpandaops.general.bootstrap +bootstrap_default_user_authorized_keys_github_team_el: + - garyschulte + - jflo + - fab-10 + - matkt + - gezero + - siladu + - pinges + - jframe + +# role: ethpandaops.general.ethereum_node +ethereum_node_el: besu +# role: ethpandaops.general.besu +besu_container_name: execution +besu_container_image: "{{ default_ethereum_client_images.besu }}" +besu_container_env: + VIRTUAL_HOST: "{{ ethereum_node_rcp_hostname }}" + VIRTUAL_PORT: "{{ ethereum_node_el_ports_http_rpc | string }}" + LETSENCRYPT_HOST: "{{ ethereum_node_rcp_hostname }}" +besu_container_volumes: + - "{{ besu_datadir }}:/data" + - "{{ besu_auth_jwt_path }}:/execution-auth.jwt:ro" + - "{{ eth_testnet_config_dir }}:/network-config:ro" +besu_container_command_extra_args: + - --genesis-file=/network-config/besu.json + - --bootnodes={{ ethereum_el_bootnodes | join(',') }} + - --rpc-http-api=ADMIN,DEBUG,ETH,MINER,NET,TRACE,TXPOOL,WEB3 + - --sync-mode=FULL + - --data-storage-format=BONSAI + - --bonsai-limit-trie-logs-enabled=false + - --ethstats={{ inventory_hostname }}:{{ ethstats_secret }}@{{ ethstats_url }}:443 +besu_container_pull: true diff --git a/ansible/inventories/devnet-0/group_vars/blobber.yaml b/ansible/inventories/devnet-0/group_vars/blobber.yaml new file mode 100644 index 0000000..efb7325 --- /dev/null +++ b/ansible/inventories/devnet-0/group_vars/blobber.yaml @@ -0,0 +1,56 @@ +blobber_container_image: "{{ default_tooling_images.blobber }}" + +blobber_log_level: trace + +ethereum_node_blobber_enabled: true + +# Storage configs +blobber_datadir: /data/blobber +blobber_validator_local_key_folder: "{{ ansible_inventory_sources[0] | dirname }}/files/validator_keys/{{ inventory_hostname }}" +blobber_validator_remote_key_folder: "{{ blobber_datadir }}/validators" + +blobber_container_volumes: + - "{{ blobber_datadir }}:/data" + +# Blobber specific configs +blobber_beacon_api: "beacon:5052" +#blobber_slot_actions: {"name": "equivocating_blob_sidecars", "broadcast_blobs_first": true} +#blobber_slot_actions: {"name": "conflicting_blobs"} +blobber_slot_actions: {"name": "blob_gossip_delay", "delay_milliseconds": 1500} +blobber_slot_action_frequency: 1 + +blobber_container_ports: + - "{{ blobber_p2p_port }}:{{ blobber_p2p_port }}" + - "{{ blobber_p2p_port }}:{{ blobber_p2p_port }}/udp" + - "{{ blobber_p2p_port + 1 }}:{{ blobber_p2p_port }}" + - "{{ blobber_p2p_port + 1 }}:{{ blobber_p2p_port }}/udp" + - "{{ blobber_p2p_port + 2 }}:{{ blobber_p2p_port }}" + - "{{ blobber_p2p_port + 2 }}:{{ blobber_p2p_port }}/udp" + - "{{ blobber_p2p_port + 3 }}:{{ blobber_p2p_port }}" + - "{{ blobber_p2p_port + 3 }}:{{ blobber_p2p_port }}/udp" + - "{{ blobber_p2p_port + 4 }}:{{ blobber_p2p_port }}" + - "{{ blobber_p2p_port + 4 }}:{{ blobber_p2p_port }}/udp" + - "{{ blobber_p2p_port + 5 }}:{{ blobber_p2p_port }}" + - "{{ blobber_p2p_port + 5 }}:{{ blobber_p2p_port }}/udp" + - "127.0.0.1:{{ blobber_api_listen_port }}:{{ blobber_api_listen_port }}" + +# - "--cl=https://{{ secret_nginx_shared_basic_auth.name }}:{{ secret_nginx_shared_basic_auth.password }}@bn.lighthouse-geth-1.{{ network_subdomain }}" +# - "--cl=https://{{ secret_nginx_shared_basic_auth.name }}:{{ secret_nginx_shared_basic_auth.password }}@bn.lighthouse-besu-1.{{ network_subdomain }}" +# - "--cl=https://{{ secret_nginx_shared_basic_auth.name }}:{{ secret_nginx_shared_basic_auth.password }}@bn.lighthouse-erigon-1.{{ network_subdomain }}" +# - "--cl=https://{{ secret_nginx_shared_basic_auth.name }}:{{ secret_nginx_shared_basic_auth.password }}@bn.lighthouse-nethermind-1.{{ network_subdomain }}" +# - "--cl=https://{{ secret_nginx_shared_basic_auth.name }}:{{ secret_nginx_shared_basic_auth.password }}@bn.lighthouse-reth-1.{{ network_subdomain }}" +blobber_container_command: + - "--cl={{ blobber_beacon_api }}" + - "--beacon-port-start={{ blobber_p2p_port }}" + - "--log-level={{ blobber_log_level }}" + - "--external-ip=0.0.0.0" + - "--slot-action={{ blobber_slot_actions | to_json }}" + - "--slot-action-frequency={{ blobber_slot_action_frequency }}" + - "--validator-key-folder=/data/validators" + - "--validator-proxy-port-start={{ blobber_api_listen_port }}" + - "--enable-unsafe-mode" + +blobber_container_command_extra_args: [] + +# Default image pull policy +blobber_container_pull: false diff --git a/ansible/inventories/devnet-0/group_vars/bootnode.sops.yaml b/ansible/inventories/devnet-0/group_vars/bootnode.sops.yaml new file mode 100644 index 0000000..e88c676 --- /dev/null +++ b/ansible/inventories/devnet-0/group_vars/bootnode.sops.yaml @@ -0,0 +1,127 @@ +cl_bootnode_privkey: ENC[AES256_GCM,data:YWNv97QCL5pCy8lowEb5jJtFJ6fXjamE5bB+takjWNbQhwxxHkprENN0jcuUtNfuSfQFRYymR+fI0lgtnQq4zw==,iv:iEHtpLwDBPbJ3Ny/ZZLf+jX2nWunP21VhgU5D6fiSyQ=,tag:yEqNeQKvgkgC8oCH/4schg==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: [] + lastmodified: "2023-09-01T10:51:26Z" + mac: ENC[AES256_GCM,data:KfZGx1QfBJiqKl2FSNvtPvoeHkV167h8K3WaZ/H+9Q9WlwLVPBMwzGasbM/0GI+HPcLd5u11r6szAaKKeYquImP/XGihTP8vwwinzXr7mtp2zwEJb4AQqKy8yklY7uSMHkIjNB6kRRcy0QYjrzUeoKlS8U5LQJ/qgN1yqJJJp4s=,iv:YhQU1f+xjL3OCWe8FRjQI56wzEgkk5yFEb0sOQa05IM=,tag:5Yn5FU99kFRrhiIg+iT13Q==,type:str] + pgp: + - created_at: "2023-09-28T11:48:21Z" + enc: |- + -----BEGIN PGP MESSAGE----- + + wcFMA32GcoRiZf6pARAAgsVcJIAiqcFhszY/OsMF7OxfaRJ1+CvNOBDPNyvdYJKS + AzP5ENZZnPRhXsZmWhi3wfOGoq70JQcUnpYQ1LUJIeWmdfbvX3zsxLJ3HlSElHPz + PQcg5kQWBmNHHxXcx/4NmKDZ+0YOAcoYrOMHiY5+slgKHAS3ZpwqaZfS27F1FTtd + dxCEtzlNJRFaN0nTiQL2dIFQH3bERpYxZqrZm2fYP1rxXEXN2FtnsWUhtxmrT7Cu + uN1ixBE3jxoPiwmwNPil5pbC34VymD5Ora0WR+066Ygmj0rd2LeA1fNAsjsYnTNE + eAwOmAb9Pso3O58299hGchTvamd2LdG7R8zq/u6d2v1ZwDLf76FjeJVVqDH64ikU + gklRdPOHY3xCXpLM7kwcaTRjVdbS+FXF8BVvXfuBqalrxUUjab+8q/T9+OVAMsTw + l2Rt6gOTsmu8G8g1jkstFNup1YbfY5vK42XfpiUQCyKJvMCHkDZZYft1tTXr/mWQ + KVsdH5Ip/D/BmPpX2T3vfAVEZdy4tWZyz9tj4deftGHcsDUgs+rkbTg5MdW5wpfQ + V4YMngrHIQ8FVPuRn+j63o14FjJKE1Q7xraIhnbwkginvStzNZ3Dfq/bj0vRYYhX + Xpi970JlTTMv2dJUYTSUJluIZEgmPfLhDuXoI1rt12RN/NA4snGjynHLly9zCuvS + UQHSMrWw0N4rJrSh4H0mFYUWuyPCiX9yVBRPck2h9GbvoLA50CmB+rM3e8AUHdJz + vuUUP2ttZ1MxroTxMiBhOxjvZMGiL+PrxjZVHfKa7ISPJA== + =SATG + -----END PGP MESSAGE----- + fp: 80DB2B4EF6CA4D9829C280605636BC0E08138A24 + - created_at: "2023-09-28T11:48:21Z" + enc: |- + -----BEGIN PGP MESSAGE----- + + wcFMA87Wber4r4dGAQ/+NrVGC9DtyttcgEfdWQ/5NSAGkS3FmweSlq5n7v4OPg11 + 3s3yduPzs9PAllkdGTQBi4OHjmI4OZJrDVWHAYbw0FUYljPfTzn1KJAQ18FAJd0r + kSNeuXtqHp33Q0pyca2eOZUZLcS0rsU/Gt8mxtVSVkWcuNnj9BlgVPSjrciNC+Pu + a/ZnDn2DBa6PMdY1FAHobeh//7mRwwhYyZKVfemp+p4QNRpbFYA4X92ztoHL6zcp + nkvRNrFxE5BAfuUfR1di0YrUOLnIbwXkvX3nnq7bdManAIs5j93rivI9uBTlW2+C + IGhciOyI4IRo3FhZ93glytan+u5KaU1fvGpEc15VLmhTm3HespkFeOOAs98YdM4R + az6AH4fqIa0CpTi/DYRjc0aSXT2YfcN7S1dO8YiYWNDQzl/fBgukCeWcwD+ao5RN + NenOWaqoXCLgOwlA9XVqjkayoxaU9LKiFWu/5VoLIfkzsn2piCJHaYTMLBPZG9h/ + VCHRAL5o4eh+Xqq1X+whTC7m+26mrnM6CXTK/MHr1+ndJTqnutC2D3L0aa5tUOBH + 57HT2O2TbI1uJZOscBurFws5iE9yxN1oxLCjmHDy9nECKWc+KYuCZP2wzCef8Hpx + lxDewioqyTLyUo1ISNDYcn818wQ8MZihqf/ay6V165dB4PbR/gkqAKFxly7peV3S + UQER228ct6oH6GyPR9x69BQtWpx4g5dKD1+9p29AIOkjvEHDMchmTK/HU0FBvFos + 3UtX8eARoIL/pf5IpaQJMr0ueRIgSTB+Rhf8GM00tSyg5g== + =lx0W + -----END PGP MESSAGE----- + fp: 69F66EEA7AE36CCB77DDB8CA1BC39532FB4A2DBD + - created_at: "2023-09-28T11:48:21Z" + enc: | + -----BEGIN PGP MESSAGE----- + + hQIMA4hw3nPn82LyARAAm0Ix52az8AnOQ337mtTOSxK5erN7w888sxK0WR/Qv9Zn + bvPkX7Mjr4OT7XugX3HhFF3VlaUNILVPN+jM877eADeTtqD5TmziPlC20jQL91Ng + q6hzj/SS3Ytc4rl1TrXwz36hfA9KirZ+qlrj33lg9+kb23TZ5uIQ2TT2YdpzcSKb + 9h2VagWs3FQiN9Nih5I/OBUEP+X5fI/IDGuy3hmi7lg/+E9IFyn22EBoeOkJfweA + 6TmwLBigO6KMELFs9UoZ+m7z/HsCNglem3UUnRrsDM1c2+Ezaod4WaOmTT/B7KYT + GrA+Q8QyC7BTYzws6W38VN32zEtl600ORj8rOQYOF5uZHCDhIMlYvgNKmi2IOaju + XNVQx2uemYUCw2+bzwx5mRHUqaQEZXzjftZmJH+HvNBoFfT7SzIaW1cszC9U1/hV + 7JEpf5AoI8rw5jOl6QVnqUzy6DqCuYLRgCVUzg3jhq7VDbqcB2eTkF8MmIyttoL3 + N+S2jOxLyGcKjvxKY5t9VsSJKvYqK0UDbRU0StdSLOPtgJkCAgM8SSZfRQFLgbKR + KLoulYDwMUdyF4gVDDksnzytjESR2AJtGRwJtje2QPtJIpLtVNq3fczwRQZPW6tN + fXM3g8F+vaUUjIK383D9RuQV+3S4L3gEuzq3yRK+OsQQTcuHGxUjDCgfmRRPjJvS + UQH9wECSB/qckvO8ZB5e/42x6KxlFZDvRp+NWB1AdqisXDTNeFuQbkpFMBK6+0zT + shAV4OQsnRIpURviKvsGGDBB7N5U4HBI1Ibxw+fH5hhJmg== + =HAY1 + -----END PGP MESSAGE----- + fp: D1002590180DE371BCB455EAEFCD4ACD0B4D3F6E + - created_at: "2023-09-28T11:48:21Z" + enc: |- + -----BEGIN PGP MESSAGE----- + + wcFMAw01qfIBwY0JAQ/+IuIBACFzYKS+FxBFo0xEVRNivvCaC7O1GD9qmxWXtutf + atdYKCclSfq3sO+eMunXG1B8jL3AUTJPYVG37CVksuLCpAbhw+3oNAxydFsjPCYw + h7NeQYWzbq7W3+ULtAnurlIimI8vfcFp0OQwl4U8zMuPiXF3ZTj2D6QCKSsduDlr + lSL/7T0yzJtHLkW+bLacqWpVwBuPOCoeohkdR9sRRr4KVgisaJSIOeoY6MS+njh/ + iEKwlnjBW134aPx1xSgBGFhgmcd7Z5qXcyN/Fo1kAe95g8S+8WA0EV9z4+CZ5MLu + MP28+Wb8UBPwDRLfZa8/easEn6zsQLwsCrv34c0PJAfTsNfjCmUQRNc8sQcvyvxv + Cfu572BbW1MbO5LvsAJc4Q2amxdF5S6UAbGL6eKz10xOnJbRgnzIT92iZefjM8uv + KMbjlL+GzYRi/zkqxxHqKYpRjdTgFQ5TN00RIlOEvsFvHTvwG6oElJ8cvCQ5H5e6 + tbK3GyJ/r3yh21TPl40zJr6mORMPQhOJmkepQitIfwoIvLzL2PiRvZ5E3dXfi1Do + exa4rjKMAh8fm0ftvcu/s6smTBotL6goVWVTQ/kus6G7T0XYrbcpzwLoko+3IvEF + MRDiq262QBDeW6/EZrxtYcHIXHICLNxcwzmC2F3E6/VXUin9s1JFi6ZpFGpc2qfS + UQFHghKmdL90d0iGaZYmTK6Kh0TmJCcc9RPp8eQkYOkDr3h48oiU+yjsatbnIasq + jVGxNz7iyOmeHfelEWjhEdA6g1PHsC75gx6UUzUKjB7zVA== + =u97e + -----END PGP MESSAGE----- + fp: B9F81F327CF5346860E85269D7AF98F214C59E4E + - created_at: "2023-09-28T11:48:21Z" + enc: |- + -----BEGIN PGP MESSAGE----- + + wcBMAwDFOgk9tOQ+AQgAgzfRJrI+jISm6Dm473pmYqVsXzQupY+/4WopZh8y9EBg + j8GzPAlP2QHYJ5j65Cg9WvF8JwpfFAWkrqbWWTuVvhnW/G8TRUEcl9GeuxsE+jko + Gv8Iw/IN0XrtuiLQLRi2unPNr9aWMfUc9kalDwWs92XOkJ5rvnoL8PrMg06giv2L + lLqileUVZVmUccpjhOdZmQ22DYU8d/ubWQKiFxpLjp/o8QjZ1Q2Xxrnhg9OZw3qF + +W9mX/phjCQV1OqwejJ8VXxbL0jKX1rPYTAJmha9yJ13l7Kaj3sjgf6KWdoD1pbN + N8j7ETDqeZyoXHLWi82JiVEhuE+AKL4AwRjLOYMKNdJRAVEVEXK6v5436FmUVUHU + wUyzWiz3IPjJm5o0mdyny9uuzgENWUnd9OIrEfhFsCZeEk4cYcnfgeqka1rSeXEf + N7R1yaiR+v2C7oWpqJ7XhHhe + =PmZA + -----END PGP MESSAGE----- + fp: 0600D41E1313E31016F7C55BF597BC0C5F22D1A2 + - created_at: "2023-09-28T11:48:21Z" + enc: | + -----BEGIN PGP MESSAGE----- + + hQIMAz4a8AV36xppAQ/5AduGaLiW6kVTFIuKUDe4Z5VO7J2RrIL3QparCb/ogDVo + 0fQ4KEAsMty7FP0IlBvpw3uh/ZsYsxX/HYMX01uLqf03z1RGdgGF76diicBS7Id0 + I42O7Umg1M4JgQsJuaEcLI91VCtwVYUQqnl3dJytO3T1e8YJ9rCe4d4Xp4qyGniq + zCmkJv180b50qT1qC/xNP9komU9OC0er8ZGyqIabEzT79oW6JA5RwI7pRI37JobV + OdnsL6xdAkDmYeFuuwPrsfXB9rCAx1y/863s56F3OEI+SL4A0CAPpG09l/E3FkP2 + 7AwHpxfBSrDiSBPL2QJoGdSshcdggfGiT8lO5ZrCMEN3+n0KkKeqGZdbKHfofYUk + 2ypRpaILQ+7oDgOLxIdXefVrc7kKOacontURM84Um7Dx0yH7qMiZ9nv2H9ywIrdR + FfHbaFXTzVMZyulb8KVX7jkMvpj9m+QZYEUaWnnI9Mhtk90hCH9r5NIZHpLAw7Sx + 4AdCMcGaz1LnEYeajGVQNlXgmgP518MnhiWAmBX+feIghE3e8IVRvw0BLbbiXdEI + SvJbdS8oUTNzCnU1unpdepqOwT4S1MfTOhc7Mv2VwYXt/LN93oSf/hps5SoJpvcW + 400s5j4s6HY6t2lJifdS5X5NoXQB674RD/8v4uW+wXVBdLpUs2TlWuzwfKOpRXnS + XAFm3A/9P2Ru0jJAzokwXBynsCz2XTFAWtWJ6/xRT0YB9XR72L0e17naxhPnaABI + eykk4sVTShzLMKl7nozbLg0cVGUtUmBELMwAsUB4vB6FXMs+N2Ik3seTZtEw + =Wgxv + -----END PGP MESSAGE----- + fp: 29C50D01122FDE78E257482DAA497EB2610A8435 + unencrypted_suffix: _unencrypted + version: 3.7.3 diff --git a/ansible/inventories/devnet-0/group_vars/bootnode.yaml b/ansible/inventories/devnet-0/group_vars/bootnode.yaml new file mode 100644 index 0000000..b96d96a --- /dev/null +++ b/ansible/inventories/devnet-0/group_vars/bootnode.yaml @@ -0,0 +1,115 @@ +ethereum_cl_bootnode: "{{ hostvars['bootnode-1']['cl_bootnode_fact_enr'] }}" + +# role: eth_inventory_web +eth_inventory_web_container_networks: "{{ docker_networks_shared }}" +eth_inventory_web_container_env: + VIRTUAL_HOST: "{{ server_fqdn }}" + VIRTUAL_PORT: "80" + VIRTUAL_PATH: "/meta/api" + VIRTUAL_DEST: "/" + LETSENCRYPT_HOST: "{{ server_fqdn }}" + +# role: ethpandaops.general.ethereum_node +ethereum_node_el: geth +ethereum_node_cl: teku +ethereum_node_cl_validator_enabled: false + +# role: ethpandaops.general.teku +teku_container_name: beacon +teku_container_image: "{{ default_ethereum_client_images.teku }}" +teku_container_env: + VIRTUAL_HOST: "{{ ethereum_node_beacon_hostname }}" + VIRTUAL_PORT: "{{ ethereum_node_cl_ports_http_beacon | string }}" + LETSENCRYPT_HOST: "{{ ethereum_node_beacon_hostname }}" +teku_container_volumes: + - "{{ teku_datadir }}:/data" + - "{{ teku_auth_jwt_path }}:/execution-auth.jwt:ro" + - "{{ eth_testnet_config_dir }}:/network-config:ro" +teku_container_command_extra_args: + - --network=/network-config/config.yaml + - --initial-state=/network-config/genesis.ssz + - --p2p-peer-upper-bound=100 + - --data-storage-non-canonical-blocks-enabled=true + - --data-storage-mode=PRUNE + - --logging=info + - --Xlog-include-p2p-warnings-enabled + - --metrics-block-timing-tracking-enabled + +# role: ethpandaops.general.geth +geth_container_name: execution +geth_container_image: "{{ default_ethereum_client_images.geth }}" +geth_container_env: + VIRTUAL_HOST: "{{ ethereum_node_rcp_hostname }}" + VIRTUAL_PORT: "{{ ethereum_node_el_ports_http_rpc | string }}" + LETSENCRYPT_HOST: "{{ ethereum_node_rcp_hostname }}" +geth_container_command_extra_args: + - --http.api=eth,net,web3,debug,admin + - --http.vhosts=* + - --networkid={{ ethereum_network_id }} + - --syncmode=full + - --gcmode=archive + - --state.scheme=hash + - --ethstats={{ inventory_hostname }}:{{ ethstats_secret }}@{{ ethstats_url }} +geth_init_custom_network: true +geth_init_custom_network_genesis_file: "{{ eth_testnet_config_dir }}/genesis.json" +geth_container_pull: true + +geth_init_custom_network_container_command: + - --datadir=/data + - init + - --state.scheme=hash + - /genesis.json + +# role: ethpandaops.general.prometheus +prometheus_remote_push_url: https://victoriametrics.ethdevops.io/insert/0/prometheus/api/v1/write +prometheus_remote_write_username: "{{ secret_prometheus_remote_write.username }}" +prometheus_remote_write_password: "{{ secret_prometheus_remote_write.password }}" +prometheus_config: | + global: + scrape_interval: 30s + evaluation_interval: 30s + scrape_timeout: 10s + external_labels: + instance: "{{ inventory_hostname }}" + ip_address: "{{ ansible_host }}" + network: "{{ ethereum_network_name }}" + testnet: "{{ ethereum_network_name }}" + execution_client: "{{ ethereum_node_el }}" + consensus_client: "{{ ethereum_node_cl }}" + remote_write: + - queue_config: + batch_send_deadline: 5s + max_backoff: 500ms + max_samples_per_send: 500 + min_backoff: 50ms + max_shards: 100 + url: {{ prometheus_remote_push_url }} + remote_timeout: 10s + basic_auth: + username: {{ prometheus_remote_write_username }} + password: {{ prometheus_remote_write_password }} + scrape_configs: + - job_name: "prometheus" + metrics_path: "/metrics" + static_configs: + - targets: ["localhost:9090"] + labels: + instance: "{{ inventory_hostname }}" + - job_name: "node" + metrics_path: "/metrics" + static_configs: + - targets: ["172.17.0.1:9100"] + labels: + instance: "{{ inventory_hostname }}" + - job_name: "exporter" + metrics_path: "/metrics" + static_configs: + - targets: ["ethereum-metrics-exporter:9090"] + labels: + instance: "{{ inventory_hostname }}" + - job_name: "consensus_node" + metrics_path: "/metrics" + static_configs: + - targets: ["{{ vars[ethereum_node_cl + '_container_name'] }}:{{ ethereum_node_cl_ports_metrics }}"] + labels: + instance: "{{ inventory_hostname }}" diff --git a/ansible/inventories/devnet-0/group_vars/erigon.yaml b/ansible/inventories/devnet-0/group_vars/erigon.yaml new file mode 100644 index 0000000..cd2a1a9 --- /dev/null +++ b/ansible/inventories/devnet-0/group_vars/erigon.yaml @@ -0,0 +1,83 @@ +# role: ethpandaops.general.bootstrap +bootstrap_default_user_authorized_keys_github_team_el: + - Giulio2002 + - yperbasis + +# role: ethpandaops.general.ethereum_node +ethereum_node_el: erigon + +# role: ethpandaops.general.erigon +erigon_container_name: execution +erigon_container_image: "{{ default_ethereum_client_images.erigon }}" +erigon_container_env: + VIRTUAL_HOST: "{{ ethereum_node_rcp_hostname }}" + VIRTUAL_PORT: "{{ ethereum_node_el_ports_http_rpc | string }}" + LETSENCRYPT_HOST: "{{ ethereum_node_rcp_hostname }}" +erigon_container_command_extra_args: + - --chain=dev + - --http.api=eth,erigon,engine,web3,net,debug,trace,txpool + - --http.vhosts=* + - --ws + - --prune=htc + - --networkid={{ ethereum_network_id }} + - --db.size.limit=500GB + - --bootnodes={{ ethereum_el_bootnodes | join(',') }} + - --ethstats={{ inventory_hostname }}:{{ ethstats_secret }}@{{ ethstats_url }} +erigon_init_custom_network: true +erigon_init_custom_network_genesis_file: "{{ eth_testnet_config_dir }}/genesis.json" + +prometheus_config: | + global: + scrape_interval: 30s + evaluation_interval: 30s + scrape_timeout: 10s + external_labels: + instance: "{{ ethereum_network_name }}-{{ inventory_hostname }}" + ip_address: "{{ ansible_host }}" + network: "{{ ethereum_network_name }}" + testnet: "{{ ethereum_network_name }}" + execution_client: "{{ ethereum_node_el }}" + consensus_client: "{{ ethereum_node_cl }}" + remote_write: + - queue_config: + batch_send_deadline: 5s + max_backoff: 500ms + max_samples_per_send: 500 + min_backoff: 50ms + max_shards: 100 + url: {{ prometheus_remote_push_url }} + remote_timeout: 10s + basic_auth: + username: {{ prometheus_remote_write_username }} + password: {{ prometheus_remote_write_password }} + scrape_configs: + - job_name: "prometheus" + metrics_path: "/metrics" + static_configs: + - targets: ["localhost:9090"] + labels: + instance: "{{ ethereum_network_name }}-{{ inventory_hostname }}" + - job_name: "node" + metrics_path: "/metrics" + static_configs: + - targets: ["172.17.0.1:9100"] + labels: + instance: "{{ ethereum_network_name }}-{{ inventory_hostname }}" + - job_name: "exporter" + metrics_path: "/metrics" + static_configs: + - targets: ["ethereum-metrics-exporter:9090"] + labels: + instance: "{{ ethereum_network_name }}-{{ inventory_hostname }}" + - job_name: "consensus_node" + metrics_path: "/metrics" + static_configs: + - targets: ["{{ vars[ethereum_node_cl + '_container_name'] }}:{{ ethereum_node_cl_ports_metrics }}"] + labels: + instance: "{{ ethereum_network_name }}-{{ inventory_hostname }}" + - job_name: "execution" + metrics_path: "/debug/metrics/prometheus" + static_configs: + - targets: ["execution:{{ ethereum_node_el_ports_metrics }}"] + labels: + instance: "{{ ethereum_network_name }}-{{ inventory_hostname }}" diff --git a/ansible/inventories/devnet-0/group_vars/ethereum_node.yaml b/ansible/inventories/devnet-0/group_vars/ethereum_node.yaml new file mode 100644 index 0000000..4a44618 --- /dev/null +++ b/ansible/inventories/devnet-0/group_vars/ethereum_node.yaml @@ -0,0 +1,60 @@ +ethereum_cl_bootnodes: + - "{{ hostvars['bootnode-1']['cl_bootnode_fact_enr'] }}" + - "{{ hostvars['bootnode-1']['ethereum_node_fact_cl_enr'] }}" + +ethereum_el_bootnodes: + - "{{ hostvars['bootnode-1']['ethereum_node_fact_el_enode'] }}" + +# role: ethpandaops.general.prometheus +prometheus_remote_push_url: https://victoriametrics-public.analytics.production.platform.ethpandaops.io/insert/1/prometheus +prometheus_remote_write_username: "{{ secret_prometheus_remote_write.username }}" +prometheus_remote_write_password: "{{ secret_prometheus_remote_write.password }}" +prometheus_config: | + global: + scrape_interval: 30s + evaluation_interval: 30s + scrape_timeout: 10s + external_labels: + instance: "{{ inventory_hostname }}" + ip_address: "{{ ansible_host }}" + network: "{{ ethereum_network_name }}" + testnet: "{{ ethereum_network_name }}" + execution_client: "{{ ethereum_node_el }}" + consensus_client: "{{ ethereum_node_cl }}" + remote_write: + - queue_config: + batch_send_deadline: 5s + max_backoff: 500ms + max_samples_per_send: 500 + min_backoff: 50ms + max_shards: 100 + url: {{ prometheus_remote_push_url }} + remote_timeout: 10s + basic_auth: + username: {{ prometheus_remote_write_username }} + password: {{ prometheus_remote_write_password }} + scrape_configs: + - job_name: "prometheus" + metrics_path: "/metrics" + static_configs: + - targets: ["localhost:9090"] + labels: + instance: "{{ inventory_hostname }}" + - job_name: "node" + metrics_path: "/metrics" + static_configs: + - targets: ["172.17.0.1:9100"] + labels: + instance: "{{ inventory_hostname }}" + - job_name: "exporter" + metrics_path: "/metrics" + static_configs: + - targets: ["ethereum-metrics-exporter:9090"] + labels: + instance: "{{ inventory_hostname }}" + - job_name: "consensus_node" + metrics_path: "/metrics" + static_configs: + - targets: ["{{ vars[ethereum_node_cl + '_container_name'] }}:{{ ethereum_node_cl_ports_metrics }}"] + labels: + instance: "{{ inventory_hostname }}" diff --git a/ansible/inventories/devnet-0/group_vars/ethereumjs.yaml b/ansible/inventories/devnet-0/group_vars/ethereumjs.yaml new file mode 100644 index 0000000..85f3ac5 --- /dev/null +++ b/ansible/inventories/devnet-0/group_vars/ethereumjs.yaml @@ -0,0 +1,84 @@ +# role: ethpandaops.general.bootstrap +bootstrap_default_user_authorized_keys_github_team_el: + - g11tech + - acolytec3 + - holgerd77 + - jochem-brouwer + +# role: ethpandaops.general.ethereum_node +ethereum_node_el: ethereumjs + +ethereum_node_fact_discovery_el_enode_cmd: + ethereumjs: cat /data/ethereumjs/genesis/rlpx + +# role: ethpandaops.general.ethereumjs +ethereumjs_container_name: execution +ethereumjs_container_image: "{{ default_ethereum_client_images.ethereumjs }}" +ethereumjs_container_env: + VIRTUAL_HOST: "{{ ethereum_node_rcp_hostname }}" + VIRTUAL_PORT: "{{ ethereum_node_el_ports_http_rpc | string }}" + LETSENCRYPT_HOST: "{{ ethereum_node_rcp_hostname }}" +ethereumjs_container_volumes: + - "{{ ethereumjs_datadir }}:/data" + - "{{ ethereumjs_auth_jwt_path }}:/execution-auth.jwt:ro" + - "{{ eth_testnet_config_dir }}:/network-config:ro" +ethereumjs_container_command_extra_args: + - --gethGenesis=/network-config/genesis.json + - --bootnodes={{ ethereum_el_bootnodes | join(',') }} + - --maxPeers=75 + - --isSingleNode=true +prometheus_config: | + global: + scrape_interval: 30s + evaluation_interval: 30s + scrape_timeout: 10s + external_labels: + instance: "{{ ethereum_network_name }}-{{ inventory_hostname }}" + ip_address: "{{ ansible_host }}" + network: "{{ ethereum_network_name }}" + testnet: "{{ ethereum_network_name }}" + execution_client: "{{ ethereum_node_el }}" + consensus_client: "{{ ethereum_node_cl }}" + remote_write: + - queue_config: + batch_send_deadline: 5s + max_backoff: 500ms + max_samples_per_send: 500 + min_backoff: 50ms + max_shards: 100 + url: {{ prometheus_remote_push_url }} + remote_timeout: 10s + basic_auth: + username: {{ prometheus_remote_write_username }} + password: {{ prometheus_remote_write_password }} + scrape_configs: + - job_name: "prometheus" + metrics_path: "/metrics" + static_configs: + - targets: ["localhost:9090"] + labels: + instance: "{{ ethereum_network_name }}-{{ inventory_hostname }}" + - job_name: "node" + metrics_path: "/metrics" + static_configs: + - targets: ["172.17.0.1:9100"] + labels: + instance: "{{ ethereum_network_name }}-{{ inventory_hostname }}" + - job_name: "exporter" + metrics_path: "/metrics" + static_configs: + - targets: ["ethereum-metrics-exporter:9090"] + labels: + instance: "{{ ethereum_network_name }}-{{ inventory_hostname }}" + - job_name: "consensus_node" + metrics_path: "/metrics" + static_configs: + - targets: ["{{ vars[ethereum_node_cl + '_container_name'] }}:{{ ethereum_node_cl_ports_metrics }}"] + labels: + instance: "{{ ethereum_network_name }}-{{ inventory_hostname }}" + - job_name: "execution" + metrics_path: "/metrics" + static_configs: + - targets: ["execution:{{ ethereum_node_el_ports_metrics }}"] + labels: + instance: "{{ ethereum_network_name }}-{{ inventory_hostname }}" diff --git a/ansible/inventories/devnet-0/group_vars/geth.yaml b/ansible/inventories/devnet-0/group_vars/geth.yaml new file mode 100644 index 0000000..409e01f --- /dev/null +++ b/ansible/inventories/devnet-0/group_vars/geth.yaml @@ -0,0 +1,87 @@ +# role: ethpandaops.general.bootstrap +bootstrap_default_user_authorized_keys_github_team_el: + - mariusVanDerWijden + - holiman + - karalabe + - g11tech + +# role: ethpandaops.general.ethereum_node +ethereum_node_el: geth + +# role: ethpandaops.general.geth +geth_container_name: execution +geth_container_image: "{{ default_ethereum_client_images.geth }}" +geth_container_env: + VIRTUAL_HOST: "{{ ethereum_node_rcp_hostname }}" + VIRTUAL_PORT: "{{ ethereum_node_el_ports_http_rpc | string }}" + LETSENCRYPT_HOST: "{{ ethereum_node_rcp_hostname }}" +geth_container_command_extra_args: + - --http.api=eth,net,web3,debug,admin + - --http.vhosts=* + - --networkid={{ ethereum_network_id }} + - --syncmode=full + - --bootnodes={{ ethereum_el_bootnodes | join(',') }} + - --ethstats={{ inventory_hostname }}:{{ ethstats_secret }}@{{ ethstats_url }} +geth_init_custom_network: true +geth_init_custom_network_genesis_file: "{{ eth_testnet_config_dir }}/genesis.json" +geth_init_custom_network_container_command: + - --datadir=/data + - init + - /genesis.json +geth_container_pull: true + +prometheus_config: | + global: + scrape_interval: 30s + evaluation_interval: 30s + scrape_timeout: 10s + external_labels: + instance: "{{ ethereum_network_name }}-{{ inventory_hostname }}" + ip_address: "{{ ansible_host }}" + network: "{{ ethereum_network_name }}" + testnet: "{{ ethereum_network_name }}" + execution_client: "{{ ethereum_node_el }}" + consensus_client: "{{ ethereum_node_cl }}" + remote_write: + - queue_config: + batch_send_deadline: 5s + max_backoff: 500ms + max_samples_per_send: 500 + min_backoff: 50ms + max_shards: 100 + url: {{ prometheus_remote_push_url }} + remote_timeout: 10s + basic_auth: + username: {{ prometheus_remote_write_username }} + password: {{ prometheus_remote_write_password }} + scrape_configs: + - job_name: "prometheus" + metrics_path: "/metrics" + static_configs: + - targets: ["localhost:9090"] + labels: + instance: "{{ ethereum_network_name }}-{{ inventory_hostname }}" + - job_name: "node" + metrics_path: "/metrics" + static_configs: + - targets: ["172.17.0.1:9100"] + labels: + instance: "{{ ethereum_network_name }}-{{ inventory_hostname }}" + - job_name: "exporter" + metrics_path: "/metrics" + static_configs: + - targets: ["ethereum-metrics-exporter:9090"] + labels: + instance: "{{ ethereum_network_name }}-{{ inventory_hostname }}" + - job_name: "consensus_node" + metrics_path: "/metrics" + static_configs: + - targets: ["{{ vars[ethereum_node_cl + '_container_name'] }}:{{ ethereum_node_cl_ports_metrics }}"] + labels: + instance: "{{ ethereum_network_name }}-{{ inventory_hostname }}" + - job_name: "execution" + metrics_path: "/debug/metrics/prometheus" + static_configs: + - targets: ["execution:{{ ethereum_node_el_ports_metrics }}"] + labels: + instance: "{{ ethereum_network_name }}-{{ inventory_hostname }}" diff --git a/ansible/inventories/devnet-0/group_vars/grandine.yaml b/ansible/inventories/devnet-0/group_vars/grandine.yaml new file mode 100644 index 0000000..0c9801c --- /dev/null +++ b/ansible/inventories/devnet-0/group_vars/grandine.yaml @@ -0,0 +1,39 @@ +# role: ethpandaops.general.bootstrap +bootstrap_default_user_authorized_keys_github_team_cl: + - sauliusgrigaitis + +# role: validator_keys +validator_keys_sync_files: + - src: "{{ inventory_dir }}/files/validator_keys/{{ inventory_hostname }}/teku-keys/" + dest: "{{ grandine_validator_datadir }}/keys/" + - src: "{{ inventory_dir }}/files/validator_keys/{{ inventory_hostname }}/teku-secrets/" + dest: "{{ grandine_validator_datadir }}/secrets/" + +validator_bls_sync_files: + - src: "{{ inventory_dir }}/files/validator_keys/{{ inventory_hostname }}/change_operations.json" + dest: "{{ grandine_validator_datadir }}/change_operations.json" + owner: grandine + group: grandine +# role: ethpandaops.general.ethereum_node +ethereum_node_cl: grandine + +# role: ethpandaops.general.grandine +grandine_container_name: beacon +grandine_container_image: "{{ default_ethereum_client_images.grandine }}" +grandine_container_env: + VIRTUAL_HOST: "{{ ethereum_node_beacon_hostname }}" + VIRTUAL_PORT: "{{ ethereum_node_cl_ports_http_beacon | string }}" + LETSENCRYPT_HOST: "{{ ethereum_node_beacon_hostname }}" +grandine_container_volumes: + - "{{ grandine_datadir }}:/data" + - "{{ grandine_auth_jwt_path }}:/execution-auth.jwt:ro" + - "{{ eth_testnet_config_dir }}:/network-config:ro" +grandine_container_command_extra_args: + - --configuration-directory=/network-config/ + - --boot-nodes={{ ethereum_cl_bootnodes | join(',') }} + - --graffiti={{ ansible_hostname }} + +grandine_validator_container_volumes: + - "{{ grandine_validator_datadir }}:/validator-data" + - "{{ eth_testnet_config_dir }}:/network-config:ro" +grandine_validator_datadir: /data/grandine-validator diff --git a/ansible/inventories/devnet-0/group_vars/lighthouse.yaml b/ansible/inventories/devnet-0/group_vars/lighthouse.yaml new file mode 100644 index 0000000..e90915a --- /dev/null +++ b/ansible/inventories/devnet-0/group_vars/lighthouse.yaml @@ -0,0 +1,50 @@ +# role: ethpandaops.general.bootstrap +bootstrap_default_user_authorized_keys_github_team_cl: + - AgeManning + - ethdreamer + - paulhauner + - pawanjay176 + - michaelsproul + - antondlr + - realbigsean + +# role: validator_keys +validator_keys_sync_files: + - src: "{{ inventory_dir }}/files/validator_keys/{{ inventory_hostname }}/keys/" + dest: "{{ lighthouse_validator_datadir }}/keys/" + - src: "{{ inventory_dir }}/files/validator_keys/{{ inventory_hostname }}/secrets/" + dest: "{{ lighthouse_validator_datadir }}/secrets/" + +validator_bls_sync_files: + - src: "{{ inventory_dir }}/files/validator_keys/{{ inventory_hostname }}/change_operations.json" + dest: "{{ lighthouse_validator_datadir }}/change_operations.json" + owner: lighthouse + group: lighthouse + +# role: ethpandaops.general.ethereum_node +ethereum_node_cl: lighthouse + +# role: ethpandaops.general.lighthouse +lighthouse_container_name: beacon +lighthouse_validator_container_name: validator +lighthouse_container_image: "{{ default_ethereum_client_images.lighthouse }}" +lighthouse_container_env: + VIRTUAL_HOST: "{{ ethereum_node_beacon_hostname }}" + VIRTUAL_PORT: "{{ ethereum_node_cl_ports_http_beacon | string }}" + LETSENCRYPT_HOST: "{{ ethereum_node_beacon_hostname }}" +lighthouse_container_volumes: + - "{{ lighthouse_datadir }}:/data" + - "{{ lighthouse_auth_jwt_path }}:/execution-auth.jwt:ro" + - "{{ eth_testnet_config_dir }}:/network-config:ro" +lighthouse_container_command_extra_args: + - --testnet-dir=/network-config + - --boot-nodes={{ ethereum_cl_bootnodes | join(',') }} + - --allow-insecure-genesis-sync +lighthouse_validator_container_volumes: + - "{{ lighthouse_validator_datadir }}:/validator-data" + - "{{ eth_testnet_config_dir }}:/network-config:ro" +lighthouse_validator_container_command_extra_args: + - --testnet-dir=/network-config + - --graffiti={{ ansible_hostname }} +lighthouse_validator_datadir: /data/lighthouse-validator +lighthouse_container_pull: true diff --git a/ansible/inventories/devnet-0/group_vars/lodestar.yaml b/ansible/inventories/devnet-0/group_vars/lodestar.yaml new file mode 100644 index 0000000..697370f --- /dev/null +++ b/ansible/inventories/devnet-0/group_vars/lodestar.yaml @@ -0,0 +1,51 @@ +# role: ethpandaops.general.bootstrap +bootstrap_default_user_authorized_keys_github_team_cl: + - wemeetagain + - twoeths + - g11tech + - philknows + - nazarhussain + +# role: validator_keys +validator_keys_sync_files: + - src: "{{ inventory_dir }}/files/validator_keys/{{ inventory_hostname }}/keys/" + dest: "{{ lodestar_validator_datadir }}/keys/" + - src: "{{ inventory_dir }}/files/validator_keys/{{ inventory_hostname }}/secrets/" + dest: "{{ lodestar_validator_datadir }}/secrets/" + +validator_bls_sync_files: + - src: "{{ inventory_dir }}/files/validator_keys/{{ inventory_hostname }}/change_operations.json" + dest: "{{ lodestar_validator_datadir }}/change_operations.json" + owner: lodestar + group: lodestar + +# role: ethpandaops.general.ethereum_node +ethereum_node_cl: lodestar + +# role: ethpandaops.general.lodestar +lodestar_container_name: beacon +lodestar_validator_container_name: validator +lodestar_container_image: "{{ default_ethereum_client_images.lodestar }}" +lodestar_container_env: + VIRTUAL_HOST: "{{ ethereum_node_beacon_hostname }}" + VIRTUAL_PORT: "{{ ethereum_node_cl_ports_http_beacon | string }}" + LETSENCRYPT_HOST: "{{ ethereum_node_beacon_hostname }}" +lodestar_container_volumes: + - "{{ lodestar_datadir }}:/data" + - "{{ lodestar_auth_jwt_path }}:/execution-auth.jwt:ro" + - "{{ eth_testnet_config_dir }}:/network-config:ro" +lodestar_container_command_extra_args: + - --paramsFile=/network-config/config.yaml + - --genesisStateFile=/network-config/genesis.ssz + - --bootnodes={{ ethereum_cl_bootnodes | join(',') }} + - --rest.namespace="*" + - --network.connectToDiscv5Bootnodes + - --nat=true +lodestar_validator_container_volumes: + - "{{ lodestar_validator_datadir }}:/validator-data" + - "{{ eth_testnet_config_dir }}:/network-config:ro" +lodestar_validator_container_command_extra_args: + - --paramsFile=/network-config/config.yaml + - --graffiti={{ ansible_hostname }} +lodestar_validator_datadir: /data/lodestar-validator +lodestar_container_pull: true diff --git a/ansible/inventories/devnet-0/group_vars/mev_boost.yaml b/ansible/inventories/devnet-0/group_vars/mev_boost.yaml new file mode 100644 index 0000000..3ed1300 --- /dev/null +++ b/ansible/inventories/devnet-0/group_vars/mev_boost.yaml @@ -0,0 +1,9 @@ +mev_boost_container_image: "{{ default_ethereum_client_images.mev_boost }}" + +mev_boost_container_env: + GENESIS_FORK_VERSION: "0x10{{ ethereum_genesis_fork_version_suffix }}" + SKIP_RELAY_SIGNATURE_CHECK: "1" + BOOST_LISTEN_ADDR: 0.0.0.0:{{ mev_boost_server_port }} + RELAYS: http://0xa55c1285d84ba83a5ad26420cd5ad3091e49c55a813eee651cd467db38a8c8e63192f47955e9376f6b42f6d190571cb5@mev-api.{{ network_subdomain }}:9062 + +ethereum_node_mev_boost_enabled: true diff --git a/ansible/inventories/devnet-0/group_vars/mev_flood.yaml b/ansible/inventories/devnet-0/group_vars/mev_flood.yaml new file mode 100644 index 0000000..bce8229 --- /dev/null +++ b/ansible/inventories/devnet-0/group_vars/mev_flood.yaml @@ -0,0 +1,9 @@ +mev_flood_container_command_extra_args: + - --rpcUrl=http://execution:8545 + - --privateKey=0x{{ secret_mev_flood_private_key }} + - --userKey=0x{{ secret_mev_flood_user_key }} + +mev_flood_spam_container_command_extra_args: + - --rpcUrl=http://execution:8545 + - --privateKey=0x{{ secret_mev_flood_private_key }} + - --userKey=0x{{ secret_mev_flood_user_key }} diff --git a/ansible/inventories/devnet-0/group_vars/nethermind.yaml b/ansible/inventories/devnet-0/group_vars/nethermind.yaml new file mode 100644 index 0000000..544c489 --- /dev/null +++ b/ansible/inventories/devnet-0/group_vars/nethermind.yaml @@ -0,0 +1,101 @@ +# role: ethpandaops.general.bootstrap +bootstrap_default_user_authorized_keys_github_team_el: + - MarekM25 + - kamilchodola + - LukaszRozmej + - marcindsobczak + - asdacap + - rubo + - smartprogrammer93 + - cbermudez97 + - flcl42 + - stdevMac + +# role: ethpandaops.general.ethereum_node +ethereum_node_el: nethermind +# role: ethpandaops.general.nethermind +nethermind_container_name: execution +nethermind_container_image: "{{ default_ethereum_client_images.nethermind }}" +nethermind_container_env: + VIRTUAL_HOST: "{{ ethereum_node_rcp_hostname }}" + VIRTUAL_PORT: "{{ ethereum_node_el_ports_http_rpc | string }}" + LETSENCRYPT_HOST: "{{ ethereum_node_rcp_hostname }}" +nethermind_container_entrypoint: + - /nethermind/nethermind +nethermind_container_volumes: + - "{{ nethermind_datadir }}:/data" + - "{{ nethermind_auth_jwt_path }}:/execution-auth.jwt:ro" + - "{{ eth_testnet_config_dir }}:/network-config:ro" +nethermind_container_command_extra_args: + - --Init.ChainSpecPath=/network-config/chainspec.json + - --JsonRpc.EnabledModules=Eth,Subscribe,Trace,TxPool,Web3,Personal,Proof,Net,Parity,Health,Rpc,Debug,Admin + - --Discovery.Bootnodes={{ ethereum_el_bootnodes | join(',') }} + - --Init.IsMining=false + - --Pruning.Mode=None + - --config=none.cfg + - --EthStats.Enabled=true + - --EthStats.Name={{ inventory_hostname }} + - --EthStats.Secret={{ ethstats_secret }} + - --EthStats.Server=wss://{{ ethstats_url }}/api/ + - --log=DEBUG + - --Seq.MinLevel=Info + - --Seq.ServerUrl={{ nethermind_seq_server }} + - --Seq.ApiKey={{ nethermind_seq_api_key }} + - --Metrics.PushGatewayUrl={{ nethermind_push_gateway }} +nethermind_container_pull: true + +prometheus_config: | + global: + scrape_interval: 30s + evaluation_interval: 30s + scrape_timeout: 10s + external_labels: + instance: "{{ ethereum_network_name }}-{{ inventory_hostname }}" + ip_address: "{{ ansible_host }}" + network: "{{ ethereum_network_name }}" + testnet: "{{ ethereum_network_name }}" + execution_client: "{{ ethereum_node_el }}" + consensus_client: "{{ ethereum_node_cl }}" + remote_write: + - queue_config: + batch_send_deadline: 5s + max_backoff: 500ms + max_samples_per_send: 500 + min_backoff: 50ms + max_shards: 100 + url: {{ prometheus_remote_push_url }} + remote_timeout: 10s + basic_auth: + username: {{ prometheus_remote_write_username }} + password: {{ prometheus_remote_write_password }} + scrape_configs: + - job_name: "prometheus" + metrics_path: "/metrics" + static_configs: + - targets: ["localhost:9090"] + labels: + instance: "{{ ethereum_network_name }}-{{ inventory_hostname }}" + - job_name: "node" + metrics_path: "/metrics" + static_configs: + - targets: ["172.17.0.1:9100"] + labels: + instance: "{{ ethereum_network_name }}-{{ inventory_hostname }}" + - job_name: "exporter" + metrics_path: "/metrics" + static_configs: + - targets: ["ethereum-metrics-exporter:9090"] + labels: + instance: "{{ ethereum_network_name }}-{{ inventory_hostname }}" + - job_name: "consensus_node" + metrics_path: "/metrics" + static_configs: + - targets: ["{{ vars[ethereum_node_cl + '_container_name'] }}:{{ ethereum_node_cl_ports_metrics }}"] + labels: + instance: "{{ ethereum_network_name }}-{{ inventory_hostname }}" + - job_name: "execution" + metrics_path: "/metrics" + static_configs: + - targets: ["execution:{{ ethereum_node_el_ports_metrics }}"] + labels: + instance: "{{ ethereum_network_name }}-{{ inventory_hostname }}" diff --git a/ansible/inventories/devnet-0/group_vars/nimbus.yaml b/ansible/inventories/devnet-0/group_vars/nimbus.yaml new file mode 100644 index 0000000..7775ee3 --- /dev/null +++ b/ansible/inventories/devnet-0/group_vars/nimbus.yaml @@ -0,0 +1,53 @@ +# role: ethpandaops.general.bootstrap +bootstrap_default_user_authorized_keys_github_team_cl: + - zah + - tersec + - etan-status + - arnetheduck + +# role: validator_keys +validator_keys_sync_files: + - src: "{{ inventory_dir }}/files/validator_keys/{{ inventory_hostname }}/nimbus-keys/" + dest: "{{ nimbus_validator_datadir }}/keys/" + - src: "{{ inventory_dir }}/files/validator_keys/{{ inventory_hostname }}/secrets/" + dest: "{{ nimbus_validator_datadir }}/secrets/" + +validator_bls_sync_files: + - src: "{{ inventory_dir }}/files/validator_keys/{{ inventory_hostname }}/change_operations.json" + dest: "{{ nimbus_validator_datadir }}/change_operations.json" + owner: nimbus + group: nimbus + +# role: ethpandaops.general.ethereum_node +ethereum_node_cl: nimbus + +# Checkpointsync +nimbus_checkpoint_autoremove_enabled: true + +# role: ethpandaops.general.nimbus +nimbus_container_name: beacon +nimbus_container_image: "{{ default_ethereum_client_images.nimbus }}" +nimbus_container_env: + VIRTUAL_HOST: "{{ ethereum_node_beacon_hostname }}" + VIRTUAL_PORT: "{{ ethereum_node_cl_ports_http_beacon | string }}" + LETSENCRYPT_HOST: "{{ ethereum_node_beacon_hostname }}" +nimbus_container_volumes: + - "{{ nimbus_datadir }}:/data" + - "{{ nimbus_auth_jwt_path }}:/execution-auth.jwt:ro" + - "{{ eth_testnet_config_dir }}:/network-config:ro" +nimbus_container_command_extra_args: >- + {{ nimbus_container_command_extra_simple_args + nimbus_container_command_extra_bootnode_args }} +nimbus_container_command_extra_simple_args: + - --network=/network-config + - --validator-monitor-auto=false + - --doppelganger-detection=off + - --log-level=INFO + - --light-client-data-serve=false + - --graffiti={{ ansible_hostname }} +nimbus_container_command_extra_bootnode_args: >- + {{ ethereum_cl_bootnodes | map('regex_replace', '^', '--bootstrap-node=') | list }} + +nimbus_validator_datadir: /data/nimbus-validator +nimbus_container_validator_volumes: + - "{{ nimbus_validator_datadir }}:/validator-data" +nimbus_container_pull: true diff --git a/ansible/inventories/devnet-0/group_vars/nimbusel.yaml b/ansible/inventories/devnet-0/group_vars/nimbusel.yaml new file mode 100644 index 0000000..f131979 --- /dev/null +++ b/ansible/inventories/devnet-0/group_vars/nimbusel.yaml @@ -0,0 +1,82 @@ +# role: ethpandaops.general.bootstrap +bootstrap_default_user_authorized_keys_github_team_el: + - tersec + - jangko + - advaita-saha + - mjfh + +# role: ethpandaops.general.ethereum_node +ethereum_node_el: nimbusel +# role: ethpandaops.general.nimbusel +nimbusel_container_name: execution +nimbusel_container_image: "{{ default_ethereum_client_images.nimbusel }}" +nimbusel_container_env: + VIRTUAL_HOST: "{{ ethereum_node_rcp_hostname }}" + VIRTUAL_PORT: "{{ ethereum_node_el_ports_http_rpc | string }}" + LETSENCRYPT_HOST: "{{ ethereum_node_rcp_hostname }}" + +nimbusel_container_volumes: + - "{{ nimbusel_datadir }}:/data" + - "{{ nimbusel_auth_jwt_path }}:/execution-auth.jwt:ro" + - "{{ eth_testnet_config_dir }}:/network-config:ro" +nimbusel_container_command_extra_args: + - --custom-network=/network-config/genesis.json + - --bootstrap-node={{ ethereum_el_bootnodes | join(',') }} + - --rpc-api=eth,debug + - --ws-api=eth,debug + +prometheus_config: | + global: + scrape_interval: 30s + evaluation_interval: 30s + scrape_timeout: 10s + external_labels: + instance: "{{ ethereum_network_name }}-{{ inventory_hostname }}" + ip_address: "{{ ansible_host }}" + network: "{{ ethereum_network_name }}" + testnet: "{{ ethereum_network_name }}" + execution_client: "{{ ethereum_node_el }}" + consensus_client: "{{ ethereum_node_cl }}" + remote_write: + - queue_config: + batch_send_deadline: 5s + max_backoff: 500ms + max_samples_per_send: 500 + min_backoff: 50ms + max_shards: 100 + url: {{ prometheus_remote_push_url }} + remote_timeout: 10s + basic_auth: + username: {{ prometheus_remote_write_username }} + password: {{ prometheus_remote_write_password }} + scrape_configs: + - job_name: "prometheus" + metrics_path: "/metrics" + static_configs: + - targets: ["localhost:9090"] + labels: + instance: "{{ ethereum_network_name }}-{{ inventory_hostname }}" + - job_name: "node" + metrics_path: "/metrics" + static_configs: + - targets: ["172.17.0.1:9100"] + labels: + instance: "{{ ethereum_network_name }}-{{ inventory_hostname }}" + - job_name: "exporter" + metrics_path: "/metrics" + static_configs: + - targets: ["ethereum-metrics-exporter:9090"] + labels: + instance: "{{ ethereum_network_name }}-{{ inventory_hostname }}" + - job_name: "consensus_node" + metrics_path: "/metrics" + static_configs: + - targets: ["{{ vars[ethereum_node_cl + '_container_name'] }}:{{ ethereum_node_cl_ports_metrics }}"] + labels: + instance: "{{ ethereum_network_name }}-{{ inventory_hostname }}" + - job_name: "execution" + metrics_path: "/metrics" + static_configs: + - targets: ["execution:{{ ethereum_node_el_ports_metrics }}"] + labels: + instance: "{{ ethereum_network_name }}-{{ inventory_hostname }}" diff --git a/ansible/inventories/devnet-0/group_vars/prysm.yaml b/ansible/inventories/devnet-0/group_vars/prysm.yaml new file mode 100644 index 0000000..9833889 --- /dev/null +++ b/ansible/inventories/devnet-0/group_vars/prysm.yaml @@ -0,0 +1,68 @@ +# role: ethpandaops.general.bootstrap +bootstrap_default_user_authorized_keys_github_team_cl: + - kasey + - terencechain + - potuz + - nisdas + - prestonvanloon + - rkapka + - nalepae + - james-prysm + +# role: validator_keys +validator_keys_sync_files: + - src: "{{ inventory_dir }}/files/validator_keys/prysm_wallet_pass.txt" + dest: "{{ prysm_validator_datadir }}/wallet_pass.txt" + - src: "{{ inventory_dir }}/files/validator_keys/{{ inventory_hostname }}/prysm/direct/accounts/all-accounts.keystore.json" + dest: "{{ prysm_validator_datadir }}/wallet/direct/accounts/all-accounts.keystore.json" + - src: "{{ inventory_dir }}/files/validator_keys/{{ inventory_hostname }}/prysm/keymanageropts.json" + dest: "{{ prysm_validator_datadir }}/wallet/direct/keymanageropts.json" + +validator_bls_sync_files: + - src: "{{ inventory_dir }}/files/validator_keys/{{ inventory_hostname }}/change_operations.json" + dest: "{{ prysm_validator_datadir }}/change_operations.json" + owner: prysm + group: prysm + +# role: ethpandaops.general.ethereum_node +ethereum_node_cl: prysm + +# role: ethpandaops.general.prysm +prysm_container_name: beacon +prysm_validator_container_name: validator +prysm_container_image: "{{ default_ethereum_client_images.prysm }}" +prysm_container_env: + VIRTUAL_HOST: "{{ ethereum_node_beacon_hostname }}" + VIRTUAL_PORT: "{{ ethereum_node_cl_ports_http_beacon | string }}" + LETSENCRYPT_HOST: "{{ ethereum_node_beacon_hostname }}" +prysm_container_volumes: + - "{{ prysm_datadir }}:/data" + - "{{ prysm_auth_jwt_path }}:/execution-auth.jwt:ro" + - "{{ eth_testnet_config_dir }}:/network-config:ro" +prysm_container_entrypoint: + - /app/cmd/beacon-chain/beacon-chain +prysm_container_command_extra_args: >- + {{ prysm_container_command_extra_simple_args + prysm_container_command_extra_bootnode_args }} +prysm_container_command_extra_simple_args: + - --grpc-gateway-corsdomain=* + - --chain-config-file=/network-config/config.yaml + - --genesis-state=/network-config/genesis.ssz + - --contract-deployment-block={{ ethereum_network_deposit_contract_block }} + - --min-sync-peers=1 + - --pprof + - --enable-debug-rpc-endpoints + - --verbosity=debug + - --subscribe-all-subnets +prysm_container_command_extra_bootnode_args: >- + {{ ethereum_cl_bootnodes | map('regex_replace', '^', '--bootstrap-node=') | list }} + +prysm_validator_container_image: "{{ default_ethereum_client_images.prysm_validator }}" +prysm_validator_container_volumes: + - "{{ prysm_validator_datadir }}:/validator-data" + - "{{ eth_testnet_config_dir }}:/network-config:ro" +prysm_validator_container_entrypoint: + - /app/cmd/validator/validator +prysm_validator_container_command_extra_args: + - --chain-config-file=/network-config/config.yaml + - --graffiti={{ ansible_hostname }} +prysm_validator_datadir: /data/prysm-validator diff --git a/ansible/inventories/devnet-0/group_vars/reth.yaml b/ansible/inventories/devnet-0/group_vars/reth.yaml new file mode 100644 index 0000000..0e9d2e1 --- /dev/null +++ b/ansible/inventories/devnet-0/group_vars/reth.yaml @@ -0,0 +1,76 @@ +# role: ethpandaops.general.bootstrap +bootstrap_default_user_authorized_keys_github_team_el: + - gakonst + +# role: ethpandaops.general.ethereum_node +ethereum_node_el: reth +# role: ethpandaops.general.reth +reth_container_name: execution +reth_container_image: "{{ default_ethereum_client_images.reth }}" +reth_container_env: + VIRTUAL_HOST: "{{ ethereum_node_rcp_hostname }}" + VIRTUAL_PORT: "{{ ethereum_node_el_ports_http_rpc | string }}" + LETSENCRYPT_HOST: "{{ ethereum_node_rcp_hostname }}" + RUST_BACKTRACE: "full" +reth_container_volumes: + - "{{ reth_datadir }}:/data" + - "{{ reth_auth_jwt_path }}:/execution-auth.jwt:ro" + - "{{ eth_testnet_config_dir }}:/network-config:ro" +reth_container_command_extra_args: + - --chain=/network-config/genesis.json + - --bootnodes={{ ethereum_el_bootnodes | join(',') }} +prometheus_config: | + global: + scrape_interval: 30s + evaluation_interval: 30s + scrape_timeout: 10s + external_labels: + instance: "{{ ethereum_network_name }}-{{ inventory_hostname }}" + ip_address: "{{ ansible_host }}" + network: "{{ ethereum_network_name }}" + testnet: "{{ ethereum_network_name }}" + execution_client: "{{ ethereum_node_el }}" + consensus_client: "{{ ethereum_node_cl }}" + remote_write: + - queue_config: + batch_send_deadline: 5s + max_backoff: 500ms + max_samples_per_send: 500 + min_backoff: 50ms + max_shards: 100 + url: {{ prometheus_remote_push_url }} + remote_timeout: 10s + basic_auth: + username: {{ prometheus_remote_write_username }} + password: {{ prometheus_remote_write_password }} + scrape_configs: + - job_name: "prometheus" + metrics_path: "/metrics" + static_configs: + - targets: ["localhost:9090"] + labels: + instance: "{{ ethereum_network_name }}-{{ inventory_hostname }}" + - job_name: "node" + metrics_path: "/metrics" + static_configs: + - targets: ["172.17.0.1:9100"] + labels: + instance: "{{ ethereum_network_name }}-{{ inventory_hostname }}" + - job_name: "exporter" + metrics_path: "/metrics" + static_configs: + - targets: ["ethereum-metrics-exporter:9090"] + labels: + instance: "{{ ethereum_network_name }}-{{ inventory_hostname }}" + - job_name: "consensus_node" + metrics_path: "/metrics" + static_configs: + - targets: ["{{ vars[ethereum_node_cl + '_container_name'] }}:{{ ethereum_node_cl_ports_metrics }}"] + labels: + instance: "{{ ethereum_network_name }}-{{ inventory_hostname }}" + - job_name: "execution" + metrics_path: "/metrics" + static_configs: + - targets: ["execution:{{ ethereum_node_el_ports_metrics }}"] + labels: + instance: "{{ ethereum_network_name }}-{{ inventory_hostname }}" diff --git a/ansible/inventories/devnet-0/group_vars/teku.yaml b/ansible/inventories/devnet-0/group_vars/teku.yaml new file mode 100644 index 0000000..e769032 --- /dev/null +++ b/ansible/inventories/devnet-0/group_vars/teku.yaml @@ -0,0 +1,54 @@ +# role: ethpandaops.general.bootstrap +bootstrap_default_user_authorized_keys_github_team_cl: + - tbenr + - ajsutton + - rolfyone + - siladu + - lucassaldanha + - StefanBratanov + - zilm13 + - mehdi-aouadi + +# role: validator_keys +validator_keys_sync_files: + - src: "{{ inventory_dir }}/files/validator_keys/{{ inventory_hostname }}/teku-keys/" + dest: "{{ teku_validator_datadir }}/keys/" + - src: "{{ inventory_dir }}/files/validator_keys/{{ inventory_hostname }}/teku-secrets/" + dest: "{{ teku_validator_datadir }}/secrets/" + +validator_bls_sync_files: + - src: "{{ inventory_dir }}/files/validator_keys/{{ inventory_hostname }}/change_operations.json" + dest: "{{ teku_validator_datadir }}/change_operations.json" + owner: teku + group: teku +# role: ethpandaops.general.ethereum_node +ethereum_node_cl: teku + +# role: ethpandaops.general.teku +teku_container_name: beacon +teku_container_image: "{{ default_ethereum_client_images.teku }}" +teku_container_env: + VIRTUAL_HOST: "{{ ethereum_node_beacon_hostname }}" + VIRTUAL_PORT: "{{ ethereum_node_cl_ports_http_beacon | string }}" + LETSENCRYPT_HOST: "{{ ethereum_node_beacon_hostname }}" +teku_container_volumes: + - "{{ teku_datadir }}:/data" + - "{{ teku_auth_jwt_path }}:/execution-auth.jwt:ro" + - "{{ eth_testnet_config_dir }}:/network-config:ro" +teku_container_command_extra_args: + - --network=/network-config/config.yaml + - --genesis-state=/network-config/genesis.ssz + - --p2p-discovery-bootnodes={{ ethereum_cl_bootnodes | join(',') }} + - --p2p-peer-upper-bound=100 + - --data-storage-non-canonical-blocks-enabled=true + - --data-storage-mode=PRUNE + - --validators-graffiti={{ ansible_hostname }} + - --logging=info + - --Xlog-include-p2p-warnings-enabled + - --metrics-block-timing-tracking-enabled + - --ignore-weak-subjectivity-period-enabled + - --rest-api-docs-enabled +teku_validator_container_volumes: + - "{{ teku_validator_datadir }}:/validator-data" + - "{{ eth_testnet_config_dir }}:/network-config:ro" +teku_validator_datadir: /data/teku-validator diff --git a/ansible/inventories/devnet-0/group_vars/tx_fuzz_blobs.yaml b/ansible/inventories/devnet-0/group_vars/tx_fuzz_blobs.yaml new file mode 100644 index 0000000..215949d --- /dev/null +++ b/ansible/inventories/devnet-0/group_vars/tx_fuzz_blobs.yaml @@ -0,0 +1,12 @@ +tx_fuzz_blobs_container_image: "{{ default_tooling_images.tx_fuzz }}" +tx_fuzz_blobs_container_name: tx_fuzz_blobs + + +tx_fuzz_blobs_container_command: + - blobs + - --no-al + - --rpc=https://{{ secret_nginx_shared_basic_auth.name }}:{{ secret_nginx_shared_basic_auth.password }}@rpc.bootnode-1.{{ network_subdomain }} + - --sk={{ tx_fuzz_blobs_privkey }} + - --txcount=10 + +tx_fuzz_container_networks: "{{ docker_networks_shared }}" diff --git a/ansible/inventories/devnet-0/group_vars/tx_fuzz_txs.yaml b/ansible/inventories/devnet-0/group_vars/tx_fuzz_txs.yaml new file mode 100644 index 0000000..91a405c --- /dev/null +++ b/ansible/inventories/devnet-0/group_vars/tx_fuzz_txs.yaml @@ -0,0 +1,11 @@ +tx_fuzz_txs_container_image: "{{ default_tooling_images.tx_fuzz }}" +tx_fuzz_txs_container_name: tx_fuzz_txs + +tx_fuzz_txs_container_command: + - spam + - --no-al + - --rpc=https://{{ secret_nginx_shared_basic_auth.name }}:{{ secret_nginx_shared_basic_auth.password }}@rpc.bootnode-1.{{ network_subdomain }} + - --sk={{ tx_fuzz_txs_privkey }} + + +tx_fuzz_container_networks: "{{ docker_networks_shared }}" diff --git a/ansible/inventories/devnet-0/group_vars/xatu.yaml b/ansible/inventories/devnet-0/group_vars/xatu.yaml new file mode 100644 index 0000000..903d0e1 --- /dev/null +++ b/ansible/inventories/devnet-0/group_vars/xatu.yaml @@ -0,0 +1,85 @@ +# role: ethpandaops.general.xatu_sentry +xatu_sentry_config_name: "{{ ethereum_network_name }}-{{ inventory_hostname }}" +xatu_sentry_config_server_address: "{{ secret_xatu_sentry.server_address }}" +xatu_sentry_config_server_auth_user: "{{ secret_xatu_sentry.user }}" +xatu_sentry_config_server_auth_password: "{{ secret_xatu_sentry.password }}" +xatu_sentry_config_network_name_override: "{{ ethereum_network_name }}" +xatu_sentry_container_networks: "{{ docker_networks_shared }}" +xatu_sentry_container_image: "{{ default_tooling_images.xatu_sentry }}" + +ethereum_node_xatu_sentry_enabled: true + +xatu_sentry_container_command: + - sentry + - --config=/config.yaml + +xatu_sentry_config: + logging: "info" + metricsAddr: ":9090" + name: "{{ xatu_sentry_config_name }}" + ntpServer: time.google.com + ethereum: + beaconNodeAddress: "{{ vars[ethereum_node_cl + '_container_name'] }}:{{ethereum_node_cl_ports_http_beacon}}" + overrideNetworkName: "{{ xatu_sentry_config_network_name_override }}" + beaconSubscriptions: + - attestation + - block + - chain_reorg + - finalized_checkpoint + - head + - voluntary_exit + - contribution_and_proof + - blob_sidecar + attestationData: + enabled: false + beaconCommittees: + enabled: false + forkChoice: + enabled: false + outputs: + - config: + address: "{{ xatu_sentry_config_server_address }}" + headers: + authorization: "Basic {{ (xatu_sentry_config_server_auth_user + ':' + xatu_sentry_config_server_auth_password) | b64encode }}" + maxExportBatchSize: 32 + maxQueueSize: 1000000 + workers: 5 + tls: true + filter: + eventNames: + - BEACON_API_ETH_V1_EVENTS_UNKNOWN + - BEACON_API_ETH_V1_BEACON_COMMITTEE + - BEACON_API_ETH_V1_EVENTS_BLOB_SIDECAR + - BEACON_API_ETH_V1_EVENTS_BLOCK + - BEACON_API_ETH_V1_EVENTS_BLOCK_V2 + - BEACON_API_ETH_V1_EVENTS_CHAIN_REORG + - BEACON_API_ETH_V1_EVENTS_CHAIN_REORG_V2 + - BEACON_API_ETH_V1_EVENTS_FINALIZED_CHECKPOINT + - BEACON_API_ETH_V1_EVENTS_FINALIZED_CHECKPOINT_V2 + - BEACON_API_ETH_V1_EVENTS_HEAD + - BEACON_API_ETH_V1_EVENTS_HEAD_V2 + - BEACON_API_ETH_V1_EVENTS_VOLUNTARY_EXIT + - BEACON_API_ETH_V1_EVENTS_VOLUNTARY_EXIT_V2 + - BEACON_API_ETH_V1_EVENTS_CONTRIBUTION_AND_PROOF + - BEACON_API_ETH_V1_EVENTS_CONTRIBUTION_AND_PROOF_V2 + - BEACON_API_ETH_V1_VALIDATOR_ATTESTATION_DATA + - MEMPOOL_TRANSACTION + - MEMPOOL_TRANSACTION_V2 + - BEACON_API_ETH_V2_BEACON_BLOCK + - BEACON_API_ETH_V2_BEACON_BLOCK_V2 + name: grpc-general + type: xatu + - config: + address: "{{ xatu_sentry_config_server_address }}" + headers: + authorization: "Basic {{ (xatu_sentry_config_server_auth_user + ':' + xatu_sentry_config_server_auth_password) | b64encode }}" + maxExportBatchSize: 128 + maxQueueSize: 1000000 + workers: 10 + tls: true + filter: + eventNames: + - BEACON_API_ETH_V1_EVENTS_ATTESTATION + - BEACON_API_ETH_V1_EVENTS_ATTESTATION_V2 + name: grpc-attestation + type: xatu diff --git a/ansible/inventories/devnet-0/host_vars/localhost b/ansible/inventories/devnet-0/host_vars/localhost new file mode 100644 index 0000000..e187c8f --- /dev/null +++ b/ansible/inventories/devnet-0/host_vars/localhost @@ -0,0 +1,2 @@ +ansible_connection: local +ansible_python_interpreter: "{{ ansible_playbook_python }}" diff --git a/ansible/inventories/devnet-0/host_vars/mev-relay-1.yaml b/ansible/inventories/devnet-0/host_vars/mev-relay-1.yaml new file mode 100644 index 0000000..37b9cc8 --- /dev/null +++ b/ansible/inventories/devnet-0/host_vars/mev-relay-1.yaml @@ -0,0 +1,178 @@ +--- +bootstrap_default_user_authorized_keys_github_team_el: + - avalonche + - Wazzymandias + +mev_relay_cleanup_all: false + +mev_relay_user: mev_relay +mev_relay_datadir: "/data/mev_relay" +mev_relay_docker_network_name: shared +mev_relay_docker_networks: + - name: "{{ mev_relay_docker_network_name }}" + +beacon_endpoint: http://beacon:5052 + +gen_validators_root: "0x31c7fb3b0dc46ad79c8117cbeafe6060a973f662823b08618d915b644472449d" + +# ------------------------------------------------------------------ +# mev-relay-housekeeper +mev_relay_housekeeper_enabled: true +mev_relay_housekeeper_datadir: "{{ mev_relay_datadir }}/mev-relay-housekeeper" +mev_relay_housekeeper_container_name: mev-relay-housekeeper +mev_relay_housekeeper_container_image: "{{ default_ethereum_client_images.mev_relay }}" +mev_relay_housekeeper_container_env: + GENESIS_FORK_VERSION=0x10{{ ethereum_genesis_fork_version_suffix }} + GENESIS_VALIDATORS_ROOT={{ gen_validators_root }} + BELLATRIX_FORK_VERSION=0x30{{ ethereum_genesis_fork_version_suffix }} + CAPELLA_FORK_VERSION=0x40{{ ethereum_genesis_fork_version_suffix }} + DENEB_FORK_VERSION=0x50{{ ethereum_genesis_fork_version_suffix }} + DB_TABLE_PREFIX=custom + LOG_LEVEL=debug + +mev_relay_housekeeper_container_pull: true +mev_relay_housekeeper_container_command_extra_args: + - --network=custom + - --beacon-uris={{ beacon_endpoint }} + - --redis-uri=mev-relay-redis:6379 + - --db=postgres://postgres:postgres@mev-relay-database:5432/boostrelay?sslmode=disable + +# ------------------------------------------------------------------ +# mev-relay-api +mev_relay_api_enabled: true +mev_relay_api_datadir: "{{ mev_relay_datadir }}/mev-relay-api" +mev_relay_api_container_name: mev-relay-api +mev_relay_api_container_image: "{{ default_ethereum_client_images.mev_relay }}" +mev_relay_api_container_env: + GENESIS_FORK_VERSION=0x10{{ ethereum_genesis_fork_version_suffix }} + GENESIS_VALIDATORS_ROOT={{ gen_validators_root }} + BELLATRIX_FORK_VERSION=0x30{{ ethereum_genesis_fork_version_suffix }} + CAPELLA_FORK_VERSION=0x40{{ ethereum_genesis_fork_version_suffix }} + DENEB_FORK_VERSION=0x50{{ ethereum_genesis_fork_version_suffix }} + DB_TABLE_PREFIX=custom + LOG_LEVEL=debug + DISABLE_PAYLOAD_DATABASE_STORAGE=1 +mev_relay_api_container_pull: true +mev_relay_api_container_networks: "{{ mev_relay_docker_networks }}" +mev_relay_api_container_ports: + - "{{ mev_relay_api_listening_port }}:{{ mev_relay_api_listening_port }}" +mev_relay_api_container_command_extra_args: + - --network=custom + - --beacon-uris={{ beacon_endpoint }} + - --pprof + - --debug + - --redis-uri=mev-relay-redis:6379 + - --db=postgres://postgres:postgres@mev-relay-database:5432/boostrelay?sslmode=disable + - --secret-key=0x607a11b45a7219cc61a3d9c5fd08c7eebd602a6a19a977f8d3771d5711a550f2 + - --listen-addr=0.0.0.0:9062 + - --blocksim=http://execution:8545 +# ------------------------------------------------------------------ +# mev-relay-website +mev_relay_website_enabled: true +mev_relay_website_datadir: "{{ mev_relay_datadir }}/mev-relay-website" +mev_relay_website_container_name: mev-relay-website +mev_relay_website_container_image: "{{ default_ethereum_client_images.mev_relay }}" +mev_relay_website_container_env: + GENESIS_FORK_VERSION=0x10{{ ethereum_genesis_fork_version_suffix }} + GENESIS_VALIDATORS_ROOT={{ gen_validators_root }} + BELLATRIX_FORK_VERSION=0x30{{ ethereum_genesis_fork_version_suffix }} + CAPELLA_FORK_VERSION=0x40{{ ethereum_genesis_fork_version_suffix }} + DENEB_FORK_VERSION=0x50{{ ethereum_genesis_fork_version_suffix }} + DB_TABLE_PREFIX=custom + LOG_LEVEL=debug + LINK_DATA_API=http://mev-api.{{ network_subdomain }}:9062 + RELAY_URL=http://0xa55c1285d84ba83a5ad26420cd5ad3091e49c55a813eee651cd467db38a8c8e63192f47955e9376f6b42f6d190571cb5@mev-api.{{ network_subdomain }}:9062 +mev_relay_website_container_ports: + - "9060:9060" +mev_relay_website_container_pull: true +mev_relay_website_container_networks: "{{ mev_relay_docker_networks }}" +mev_relay_website_container_command_extra_args: + - --network=custom + - --redis-uri=mev-relay-redis:6379 + - --db=postgres://postgres:postgres@mev-relay-database:5432/boostrelay?sslmode=disable + - --show-config-details + - --listen-addr=0.0.0.0:9060 + - https://0xa55c1285d84ba83a5ad26420cd5ad3091e49c55a813eee651cd467db38a8c8e63192f47955e9376f6b42f6d190571cb5@mev-relay-api.{{ network_subdomain }}:9062 + + + +# role: ethpandaops.general.ethereum_node +ethereum_node_cl: lighthouse + +lighthouse_checkpoint_sync_enabled: false + +# role: ethpandaops.general.lighthouse +lighthouse_container_name: beacon +lighthouse_container_image: "{{ default_ethereum_client_images.lighthouse }}" +lighthouse_container_env: + VIRTUAL_HOST: "{{ ethereum_node_beacon_hostname }}" + VIRTUAL_PORT: "{{ ethereum_node_cl_ports_http_beacon | string }}" + LETSENCRYPT_HOST: "{{ ethereum_node_beacon_hostname }}" +lighthouse_container_volumes: + - "{{ lighthouse_datadir }}:/data" + - "{{ lighthouse_auth_jwt_path }}:/execution-auth.jwt:ro" + - "{{ eth_testnet_config_dir }}:/network-config:ro" +lighthouse_container_command_extra_args: + - --testnet-dir=/network-config + - --boot-nodes={{ ethereum_cl_bootnodes | join(',') }} + - --self-limiter=blob_sidecars_by_range:256/10 + - --debug-level=debug + - --always-prepare-payload + - --prepare-payload-lookahead=12000 + - --disable-peer-scoring + - --checkpoint-sync-url={{ checkpoint_sync_url }} + +lighthouse_validator_container_volumes: validator +lighthouse_validator_container_volumes: + - "{{ lighthouse_validator_datadir }}:/validator-data" + - "{{ eth_testnet_config_dir }}:/network-config:ro" +lighthouse_validator_container_command_extra_args: + - --testnet-dir=/network-config + - --graffiti={{ ethereum_node_cl }}/{{ ethereum_node_el }} +lighthouse_validator_datadir: /data/lighthouse-validator +lighthouse_container_pull: true + + +ethereum_el_bootnodes: + - "{{ hostvars['bootnode-1']['ethereum_node_fact_el_enode'] }}" + +ethereum_cl_bootnodes: + - "{{ hostvars['bootnode-1']['cl_bootnode_fact_enr'] }}" + + +# role: ethpandaops.general.ethereum_node +ethereum_node_el: geth + +# role: ethpandaops.general.geth +geth_container_name: execution +geth_container_env: + VIRTUAL_HOST: "{{ ethereum_node_rcp_hostname }}" + VIRTUAL_PORT: "{{ ethereum_node_el_ports_http_rpc | string }}" + LETSENCRYPT_HOST: "{{ ethereum_node_rcp_hostname }}" + BUILDER_TX_SIGNING_KEY: 0x{{ secret_mev_signingkey }} +geth_container_command_extra_args: + - --http.api=admin,engine,net,eth,web3,debug,flashbots,mev + - --http.vhosts=* + - --ws + - --ws.api=admin,engine,net,eth,web3,debug,flashbots,mev + - --ws.addr=0.0.0.0 + - --ws.port=8545 + - --ws.origins=* + - --networkid={{ ethereum_network_id }} + - --bootnodes={{ ethereum_el_bootnodes | join(',') }} + - --ethstats={{ inventory_hostname }}:{{ ethstats_secret }}@{{ ethstats_url }} + - --builder + - --builder.remote_relay_endpoint=http://mev-api.{{ network_subdomain }}:9062 + - --builder.beacon_endpoints=http://beacon:5052 + - --builder.bellatrix_fork_version=0x30{{ ethereum_genesis_fork_version_suffix }} + - --builder.genesis_fork_version=0x10{{ ethereum_genesis_fork_version_suffix }} + - --builder.genesis_validators_root={{ gen_validators_root }}s + - --builder.algotype=greedy +geth_init_custom_network: true +geth_init_custom_network_genesis_file: "{{ eth_testnet_config_dir }}/genesis.json" +geth_container_pull: true + +geth_container_image: "{{ default_ethereum_client_images.mev_builder }}" + +ethereum_node_json_rpc_snooper_engine_enabled: false + diff --git a/ansible/playbook.yaml b/ansible/playbook.yaml new file mode 100644 index 0000000..d3f9323 --- /dev/null +++ b/ansible/playbook.yaml @@ -0,0 +1,110 @@ +- hosts: localhost + roles: + - role: ethpandaops.general.ethereum_genesis + tags: [ethereum_genesis] + +- import_playbook: ethpandaops.general.bootstrap_server + vars: + target: "all:!localhost" + tags: [init-server, bootstrap] + +- hosts: all:!localhost + serial: "{{ batch_count | default('100%') }}" + become: true + roles: + # - role: robertdebock.fail2ban + # tags: [init-server, fail2ban] + - role: geerlingguy.docker + tags: [init-server, docker] + - role: geerlingguy.pip + pip_install_packages: + - name: docker + extra_args: --break-system-packages + tags: [init-server, pip] + - role: ethpandaops.general.docker_cleanup + tags: [init-server, docker_cleanup] + - role: ethpandaops.general.docker_network + tags: [init-server, docker_network] + - role: ethpandaops.general.node_exporter + tags: [init-server, node_exporter] + - role: ethpandaops.general.prometheus + tags: [init-server, prometheus] + - role: ethpandaops.general.vector + tags: [init-server, vector] + +- hosts: bootnode + become: true + roles: + - role: ethpandaops.general.cl_bootnode + tags: [cl_bootnode] + - role: ethpandaops.general.ethereum_testnet_config + tags: [ethereum, eth_testnet_config, ethereum_testnet_config] + - role: ethpandaops.general.validator_keys + when: ethereum_node_cl_validator_enabled == true + tags: [ethereum, validator_keys] + - role: ethpandaops.general.ethereum_node + tags: [ethereum, ethereum_node] + - role: ethpandaops.general.docker_nginx_proxy + tags: [docker_nginx_proxy] + - role: ethpandaops.general.generate_basic_auth_nginx + tags: [docker_nginx_proxy] + +- hosts: ethereum_node + serial: "{{ batch_count | default('100%') }}" + become: true + roles: + - role: ethpandaops.general.ethereum_testnet_config + tags: [ethereum, eth_testnet_config, ethereum_testnet_config] + - role: ethpandaops.general.validator_keys + when: ethereum_node_cl_validator_enabled == true + tags: [ethereum, validator_keys] + - role: ethpandaops.general.ethereum_node + tags: [ethereum, ethereum_node] + - role: ethpandaops.general.docker_nginx_proxy + tags: [docker_nginx_proxy] + - role: ethpandaops.general.generate_basic_auth_nginx + tags: [docker_nginx_proxy] + post_tasks: + - name: Wait between runs + tags: [ethereum, ethereum_node] + ansible.builtin.pause: + seconds: >- + {{ + batch_count is defined | ternary( + (batch_wait_seconds | default(30)), + 0 + ) + }} + - name: Refresh inventory web + ansible.builtin.import_role: + name: ethpandaops.general.ethereum_inventory_web + tags: [eth_inventory_web, ethereum_inventory_web] + delegate_to: bootnode-1 + run_once: true + vars: + eth_inventory_web_container_networks: "{{ docker_networks_shared }}" # noqa var-naming[no-role-prefix] + eth_inventory_web_container_env: # noqa var-naming[no-role-prefix] + VIRTUAL_HOST: "bootnode-1.{{ network_subdomain }}" + VIRTUAL_PORT: "80" + VIRTUAL_PATH: "/meta/api" + VIRTUAL_DEST: "/" + LETSENCRYPT_HOST: "bootnode-1.{{ network_subdomain }}" + +- hosts: bootnode + become: true + roles: + - role: ethpandaops.general.ethereum_inventory_web + tags: [eth_inventory_web, ethereum_inventory_web] + +- hosts: dora + become: true + roles: + - role: ethpandaops.general.dora + tags: [dora] + +- hosts: localhost + roles: + - role: ethpandaops.general.ethereum_post_network_setup + tags: [eth_post_network_setup, ethereum_post_network_setup] + - role: ethpandaops.general.generate_kubernetes_config + tags: [gen_kubernetes_config, generate_kubernetes_config] diff --git a/ansible/requirements.yaml b/ansible/requirements.yaml new file mode 100644 index 0000000..5c47bb6 --- /dev/null +++ b/ansible/requirements.yaml @@ -0,0 +1,20 @@ +roles: + - name: gantsign.oh-my-zsh + version: "2.7.0" + - name: geerlingguy.docker + version: "6.0.3" + - name: geerlingguy.firewall + version: "2.5.0" + - src: geerlingguy.pip + version: "3.0.3" + - name: robertdebock.fail2ban + version: "4.2.3" + +collections: + - name: ansible.posix + - name: community.sops + version: 1.7.0 + - name: ethpandaops.general + source: https://github.com/ethpandaops/ansible-collection-general.git,master + type: git + - name: kubernetes.core diff --git a/docs/images/panda.png b/docs/images/panda.png new file mode 100644 index 0000000000000000000000000000000000000000..4a9881798bbf1134be74dba17757217fe2bf17e8 GIT binary patch literal 629740 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%0DJ;fg_HC0ju?7NPQl1F*DEvJ(LIQ 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
MyG$)&0zUh;+6ua9zENK1M^f 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%0D69Z>FwqGrIh$^QoNe}?17OS5G; z)oDz3_2JSRw*fsTvm5bt(T?e^lh$yTu%zjuI0IT&g|_}qr=qzfi?f6+eoR&=`Vy7B zx7l`d=yOM+(?`Lm+%XaUw);~q`dD&7Q!I!s8Ad5<21!7d0RnWXY7m%_mZLkjoOp_W z;5mi>4g$a3wt>Xg4bNgW*`%IVwy1Eim($QtpWnHS@V{}2|L$$^(>ndfX+rP%`x{+; zCX@H3)Nr=asP+y!HMQQa{GW8}=S~?g6dt9ad1E(JNL|>X!uNdJcTm$6^9|<773FQQ zVGvFP9AnX}uaYB+uQsN(HvT6F#~!5!RIiSi277_rU4|by?-7;pL~$cfcFIcyvXYXM zA%R-AIi;2^Hd=;Y!WoZ^>gm)$VwE_nIpGGl{(e!H%9Rzjo#m}rHfX1ax`&j?>uLaD~3d>`MiO-Ilw&1eYO_og(I@7m<8XHbbeCGGkli)jZ zjQJ1hj=QpF+TAWG;i}M zPW~H2x!Pw{>)UGZr|=#3n4CiJRf2kkm^envKxDuys;mpB2i6^<-m4b-r}+Kf&we?T zKMW1>{|^Lk%gwn)sa=oFNr{!d1)!LQz!}xxqIgCxHmqyQ-y-&BF*Ub1X=kB<(wMj2I_lIz2*L}sLX^X=^t%O0~C*7M5i&*nI&Npct?{ z6>@Cl%iTy=W$&Ys1~<3(N3aiieb3PsT#@m_RjoX3a+!+o2(NBFyZgetVo>xfg6xLl zK`3Pn_pE-d1R@#lTsm%h31R;n*yG;R*R+r(4kPV;Vd$l)mjza=areG&O`epx$M8s4 zRL|T%2adXK9>1#N^T(QHU=@QY_NnS<6Ixj3+PKGAm+`W}4!sR^lbZVza5CrH<}l`v z>Fy~THQeG8NyOl=_{0vqm7U@2OwEpz@|FV)Pa$S!Jp+AIdrM(d@n zLja)~I=fOi;)JM(2K63gZnqL8u0DcSQ<@$uL#D&iNRLZ81l)Tr_e4T^Y~9O|kTHI{ zN&{=Pqt^z8IYWQG4OhAA;tCB+?(->c-fLdwQc@l)BRKi}fWNn`%zpQH;Y$=B+ar#M zPYW%u*(yt9)%5Mf&?aA#0k09d@h_UReH zWFiDDHR#bsG&VSi{=vClC=aauxhqcr_xogbawy{PbjpimS``myW6?y?B5@)KA>pi| zql4Wj>?FL@^G5Q*n?Nzgr!+tbIh&<+ZVTEp&gF#^a)VM=(yR`y7VyWrCcWBRDfXZ5 zxq`)Ex;j|WGQ>cUr?fp7-eOi!oKqz+-=RPomE`sLf!Eqxw}Rxt$Kqfy!Q$LIodq~( zxUaI>{{3mCc3Ga0m2@zZbV&NN6j%oIXl{Y{Zhzyscp91kNo=!4*a?%ycS$own?Hlb zPG)09@0)1L;(ure*Rkw=DB78rzQZ>|zxrEZ-yc2bJF~YB9-rRz)9|e}rW{C$|HC-- zrqrBe8>9?zDqnU0eQS?V&PXW{f`heB|Csq|sIkz^lo9Jo8GLYycfxbC>T^dK#dYl0 z6(29OIs7_yM9I9+q41N}BZEAuC<2(A)J4zV23?w^I>~i zk{N^$=5_h52gA$R=zJKduYfzrb6(xoa|~B{4|}M!m40#W)LdT3iJ!(FE&t;sA)1P9 ziueeM=!x)VcTsQmL4Z{Dl3={C7nXN1Hvsfh=|T6 zaDOWye5ulBjQQ+VDbCxIQvq=(!x<^qJ+#O$(uQ}{1ZRDl<2>4*g#5uf0t@o$KnPlE z%=hRR(@E|WglCB0+)d$U(E%hxu!PIC192-g0=u={*1_W6rjhl|GR8YjTA z^1R;3``9vSR?Omac*}F{Ffu0`mXmr`{OPBGH!tau6dN2th~*@N zQ2EkKG*4}daDO*jNsmHj!tA^_&D)bM;@p>r)5DG=5-HqO;+5WQ zaeLm>#p!J;^M$@7#ZR+P!icB`6b1r%6D1DC9r8)R zvVvQwFmM6>c+Iy}xdSl{ZF%;qg}sGUF0Hwn?qBUM^Xi)+G1Ir5e*$plUD$}~O(~37 z;X>znSyh5}7rkJW*A-=RfuNTKaXo#Wijsp~Gb3!(v%YL`uU-^w&TSno7dbgc?%3z$ zT-*MK9ohGIW%TIccnjjy%rgaE&-q%9WcZ7KJSaZC@6-gfN z!(esvj`j;Y6InQ>H69tt_ZJiSlwq%lQ(+@27!|;t&xge>8_$#YQDPSZX@!BAvnRE)7@-p*-pdbeKmUo3L9IM00e2UmM@Gxc z^k6tsx(}1@@atYi+Fz9ssOxfDz7<XRL7s#|UCph_0sX+(SS$>V$NGx#yBPP~FFSYf`@jJ5vHQVkQ zcPF!5sZ2D7BmF<5L{T~b&s5c0R(hfkU^jy-*4^28u`?o4&F@gT9BU1+=1={kuKWNn zz^_rUV|8C<9K~3Um+MT)pD?oAesS@gTtmI3cz?yQvk(7t+WrP_R{E{pBJdyPxE?vW zt)8;O#=cxFJ{oplMGh`i%HXM)iV-z8Uj1S#+P3;g{FqbgqDv~uj7zWArs%CbbDtUk zjUu^z6XjF%PcS9(Tv~ROV1tjKJZ;BDON6Y9`XkMAXQm$LIW)~TdZFx&vFpFfyP0hd z%fq}fPJMbWP5y&YqSJJCZe8LlFQk+C>HVso-+8p*9H1AoWfQD_m9sY|aDB6DdWXx+ z&4q%HsrC?rUEX&H(J;Ze@ zs=t_+lK|?BeMb1;3cSdtnJHXs9Rc6s-*#0MoNmQ2G$#~b{XJ`oP>;0H(yn7wDvA!74zH0BY% z9nSn0-~AB^;a7{+rHp+%+TI7Ei>6%Q)ZG5;ce8|IS%Sx+!M^~qKBtMd?M19OcBjwC zp(4&U?j|wa7DocUr>v4$E0R{@z0HU-bOKlAT~c|c%&5b$5KKRID}o}6$MK$3sy|Ao z>X=(;?k@_sdf$Q?0YT~6bbonPMXNno#WCU9l@f%)n$jUk^MfQBnD=RbDp$&)Y2t;G z41&EaE#akP{^ING)qN#@lr`Y4P&lc}WjK<+Yw) z%TR2ks$l!VH0;5w_W8V=FmRWetb`SoO#<2mFG6m=^85I=`OmhX2SI3x2H8 zRF{(2{IS@E;0NMM+ul;oRWi2xsgFI>vloxHa=k`>OTl_Pp$84F=@)k7_xCJQ@-}?J zs?+G0HR@P$EryT?tceaplliEz(Y8}7$(nIER^uV6cN*tgHGyyuBfH)u-IChfS{&-; z(Nx0Q7pZzKo<|s*qf4-=|8ZPRu(@Twwnd$ecD28DvOt1J+R~MT)!)WT3HnwpYir() z0j`Y&Frm(v^!1^%#$5x!8CK6Ewv8&CQ)U@tjdN=uUSm!0t@%c&o&3&s{}FOIl>?>P zscp02HkUr!R3#|<@e5(~T<%OZTv;lP?^>B`p1^a0O)lW)Bi)_Y3(UP0Q_8=7wj8qHW4jga00%-(vOLCjJ=xal6*Mp!DfXaO4Ag#fj(DYkecNfpO0}K;N4q2T zF3M6&OspBeDq8uh{bWnfyKk9LoZQLwxbVitPX&GG;^er=S8om1cLAi~iQ^iehHzU~ z5NXnCxBUe3)<}8*ck=pTlkZMB&gj}f;NSkE;C0RPNB-k2=?gS7Wp%70 zM&4t| zXxeKNRBr8k4fATXVV~3IXK^k+mAocHuJ9VzS|6A4S!8y`g5COiNMLU@t3a1EN>f*~V?j)zin=Lj!{{y3z zFMK?5cg_l81pfzk^57b>Uwp8$Hqz$(;zyuE$(TM|(TqLKR$19yR^V8+#+BIZLhhk) zrPumYhJX5_Uds!ueM-spf)DxQJ=JdCS$4z&>P6r!B_l0i&+(4~N=?yNoc!1qwLx-` z)(sqLfS6UO@wuA%)IJ!Lb{j(tA2bwTaHb&-|ys6u8)VF4uTd+5dy zw=^+)-2RK!iHO&&wj@+xtGDYw&L#+Kz8TC6z_|=f$EyVgi%UuxMhW);!(?{aH_T*-)m;7pf%H8BUT5{T~d^Qna+(nn_7GeCB_m4p~F_(PAoY#RhI1tKP;`Y<> z#ayKvKX~LH@C8nwYTjSHpY(90&vemwy!k3`JdGmwiWIyFda?Yp9LK|Rzxl01(_|nL zUjv0am2^2sQRd`N4=H8WjCn9gkZ~NQQqHYz87471{dMe%{6NXm3u5S|54Ljsx3@>v z!DSlVw`sK8`|WxS3eDbnK&QJSEBw#@49SwWFEh^o3r6z?$$m$2>9RB?n(WK9NbfSX zrxegKlRovf*qS>?U8xt{Jf^T{9z$j`_Ig_e#A@~^x2)MZ?KKu|J`qdptqglsT~;tn zI*Bikv`mYs}l9vQKx zpP42O2uB1Yn2J1knMWQL2I)fRqqdo1z=?S7-;N{CYX$pcXBz-^oi_zB`6cc$*5d-_A} z9c31m0UrYsw~f15RIGL~p3iHVC+W2#>X?s2pEMJP9xKy*!Onts`AyV%% zL=l8c>X}`4uaeQQ`!b=oz%@4N;(mi5I$?FAsYgmPQ%}o^>a{`8Q1M2Z>zmmP(=H!z zO%L_jy0%${30+t9T9}p+&-roBYZtZjTZI8}Z}-`?IW-b4Rua&qE=?WXjzXSk&!SC@ zqV@aU%k>+i+aqw&!4NYR4`P3Gyv4D9pt#Ge_C299RlIwb=yZTN+`}Z+gR}nznrllJ zi7_j|U7woCqJr=|bp^OdCh3M-pC5AfNZsP2xE-fy)u+}ivDZ;NzmKh&=DY0l=L>nY zXz1jYfvkOU(%IiW%Rix^t3Af#ro%R=JaZlKh}aiVYbKKFUq|NNzw-;cQ+Z)RZ@tpN zB(qcXR0R*2OL?Jjwork7a{ygM1r;=}U*EIC4&V(`PkOG(Wmfmbp+|@8e|#|HW-wyW zifu1VhfvwJs}$bgp`?CdzZNdPztvIEB`4jF9M?9o){f-kV)RrA&z&y*Edup8opdk2 zicz_!Eg16D_}Ro(IgU!WZRi=qi;w%2p6?qf@{}}*$8^O{v)*zga~9Vx#fg^jCHh^u zc`9Dr(+I$TX>XlY4nw;FESsoJ2QiwIBY3s@99It{UIVKLe!rIgysw6CRrKf^SfNL=ry*10bu4B;iCbwQb%d1S*gjVOk zgY<5E!O3pVL`|)A%dzx{l(XJqc02`*QF$_cwG@s?G*&-H>+qq)Hdzq`A8S$lS_S!ykD zpMb#E&VS+%o9g}Zm0A!7P!UpR>NCba`!%y4lpS%B)1L_`P&^MX1&b~%<*7rSi1JW* zV!B3gzUo!u;NWiYj9`tnh%rMG4*XIUzL#SeEf(VME5?Ema|auPDk9J$9QgCmunaey zd40+XrD1W649rGFE|K|-p{%33ETbG(v}&{H8O~>?`lbA*wBFIa;eeYUA^4O@0+J#>BqH*vzKDCFqr0#0}`(+Ua~Fctsk9x zeD}fzM1r~0>Ot_ft5OQE`piuRbkc7(Byf-?ZOX3VI-H_tnw7o8P1iJF?*1IGq*?t| z-PVZJTn8v1YIn3{K9iph}qOyiy6<9X44w>mn(#=-}DQm7U_c zX%&00OVm(owD_}s61;kX`{1dK!YH43$UoAJzXQ?XSI-qE(~eW`bapKEBZnf}`QGVe z3UjdYIAD&In#QCl-xFdq5sT^yHXn&C-{C&9Xz2{PHWL~?&}- zavU(zZA zKDwHrF}Go0DvF9gbdCCxaQ~W90|U(mQI=(JyRAd9cGi0w#T`##_3db8?;z*_}? zSn}p7d!aiA_-6F8q@<|mO5BHjeJ)KwOmdALd8cd1ysLY2vKN%OJ9-TH08Dgy@TLay z4A!sUb6tqJyrc2Y8lSz~-P^KvJ=( z93;}yIRsW{LO(X_tCa`>rpeWg$>~y(6WpNq75VSpmPC_*e;$>8m_Q+b7T{>H?o*B) zKhjD*ZSQUBpm@o(`L1NrXGLUB%sWBFHZ8idUmqu0eyDZl)_s4~?K%yga>(1#FHyN? zX2;te(R8MlS)<$H~c zCLB?>Lg@v>h!X(;TZgryIBRiLMQc_f`fXSNoX?yF9D-rFFsgs|@BUJtD3>-hyECu6 z$jr7-dhC_e+ylSC-A(!Zeq-Oo%(?uNXWgmoA3b`sY}d!IG(=YspY3@N`bx#fgkhAw zJqf7`_jG|0ikheodi4UTcRt`{KmFOW19;SR?d?-?d$U26G{3pi-;Vab5E@&#Kw$Sv z)#_}l$vC+24Dv*!+U?78HhEvC&V1`Pw_L26%{fz z;WlWd+ImeUu+6SSE9F8sVcfvpt{cUSfUdEp;oIO5<1Y|2i6%5n3i@MRKACBjB1~+K zCUU9bi~-)dZd(R*2|LZ=$af649=|ZSd2!h;m|-&f-uK@o&jLj`X=7BIW1TlY5ak8E zM*R`nO>_ov;^W>;6!2+Q){@&0DhGRKkZE;}2q^!lIw7>!AovA5*s=KQx9mFDrdOTY zmttiZT}&j~5e8UrBHv|8-ruC3^8ZiU{0(8*>I4=8bCzBlG7?i^>fFp9g+99)HDV&C zez2F(a)+F~Z(qgnEst){%x!%vI0)`h`oxa@naR{7oW$}Kmys)S+7bJ$njK$^&h~Xe z-!Mv*&>YVQpALrvqvaCp-$CDY2AQ~9LBKH3ae-v^GxZ<+O8YgXw}CM&O}q7l-pE81 z&Vr2J4iedkp|Gc2D%l!7L%aBj11pwPkyao*h%@H5IgVzyGZdTH(iU+xKJrBEMqK_q zh0E=M9n-Oksu*CbYA=~6D>(Hd;nGnco92MVSsBwW@BuA zu12uhkeg~nC|+=OJMcy%Bt~hKDRP#&ujHne(UMj2VoAFiXB0~T6E2GIz`A2$uLqAN2;T}K#Ucz5xV&dC+^-)Jw z-{CFkfDuP8@cRTj@WJL+Yz~0}U{ES>AP7-iAEsZep(NJ&=9q@gbD^Iuq9=)5N_n6v z13$Jj+`9d7|JB@<)F5q7O}F+rJEL6lAE9LZcS%q5vmWG3aw8N5vkR?|k9 zm11)Bj6Hb_>~#&`?+fxVoI91su}v37-1#@N`onP1XnXw~_Le*W6l*(eG^qF_v?W9p zcQr93SENidWLn}a#9*S!x@4}ng_TEs`^$ydH)7+%7{4#4>oPMl&!aub61~r5q%+cg z?4^CujxZELdDQhp zk#8InWt&d$iU%K&QFO97H=f~45}!hnx*_(Ey?SD8(L>5dmUo{R`D19TqMuL&e!R=J z4OV^_qy9>-q}7IgC_Hu}ceTpD9b+F+`Gzr(-PEE>pby60VEp!&AJ6V)2$C+E~xa=w(@X z#imEg3Hvgh*O#FOUx(V zLW)2b?5M~{;gbhg7GsB(qW5P@M#2mHkQ%iWXuI4H8hJ4nb+9h=&qwk<3L>+o0M~8v z*tU{O;(wmWzhkRN;vu%fku2l6j1cG!Sk!Hg@oHu_k_Oac$t z!W~-lU{zXq+lX12eSg0RBmcZHpvU>fsx;)soqF^}#k@o4LVos6C3v=sZ#efMf&G^H z?7lHLGeiGNI#w0@`JqsWR8_CuuE}|9K2*VDnZ||_)BBU3f!??ON<@H++jyv31*qDxHA{!5H^^1h;5B^KuCnU9K73=d?5rf}MSc`+ zsl~ZvjOc=tL?+3)n&Z3`#0xN-Een~;jk75yjE$>SwOfmqT5R3((l4inu$U05zr$Zx zJIF`_$~t}qvGJSBrL&wI8r&5$Pl)%zE>F$6N;2m4l6mx-X$ZZ)Fu3~njC+p*xs<>_ zY*6{wu3&0+qDmA;JR#K!S+y1}t!|?nyfRzUCF-HZ-Z&;j&v%g$K7JC3BXiPJ@aJn4 zm_7T_y&%(SQ5--iW=!`;0B1?Fsq>KjZo4oS=HqN=U?xoc@^X zjh6TI?$;~F%tot`qTL_n-J@i}Y+je3(+eCv@vy1ZH}^+Vi#lg)6!7xcLD6&dFn zE<-=mweur}=iM8aDk6er|4t;*;!j%QZRg(sttL?vuuOiguwvYi@3Mfj>;LsOv$fqEX{Zi#3H^q+IN!(~3u0nQl) z&d4h;6wx%i`7<2$RKe|Zl1uZIiAusaFpMN1A!JSqpD7u!D*50ZDpz|#X*Ki1d&rXH zmDirL2}N$J(&r8EPXscsm&cSaz~0_f_(gC)K3-{LEY|c4gm|qe-vS%MB%c$46}dV6 z3{_HrGroV%Ky^R^TdrxKK5CXh)%ie~Wj0`Mt1ugWS+p(g>ic&e6HRMhz&&m=Ngw;= zppKCr*H@VL++mZ)E5k;gS8k_t6yhZFQPnRAHTI6xiyZ&jS8}*dIHfmlzQ|pNZRlAoD2i zjoqz$coS;c^kXSUAfG5x=Z^k7A+usCP(9gQ^c%ePkN+C5Tm9sD+w}+!3e<&Fk)zCb z^CYse8)<+9DmT-vZ#kGq|NG@-W&BHRUayV z%9ZQptcW*n?(N_{W!FK`#mBMQE>Pwnpl*hD4ORERQ*z*iXCbJhQof9ed(+kZuA0il zi4b~LcG5!YEVDA(dOmp1u=ndrmE-Is4pqDd^YK1w^YL}^>)KVhx$S=5!-Ay^6pY@p z+K*)(6ttMAJiqxHFY~x={mD=sH>u?LRvGPpvianSiCfc$42S)-)I`oy@4hZW9L?7K z3y?wqRDhWrj2KcX*Rm8hCdFvM`UZP=h}m8n6w88it7Lt3du}J`&s(7t-m6w6<>*=tfkrRIt@K3Oue%!u zB#)y#>~ncIm(&_>WHBu%K1Fi9f6c+y0(5@DE=%@Fe}BbRf{h2!a^u4Wmt#MyewgsHN3a^(TisTZ`bEsA7um za~yd4@A%})&B-p0x@!mJkKaGG+HsEL;%+=%KO*v0gi^3@N@ZyJaA zE0a${uuo9pMw&zHOS$QgeD?;N$6x3nEH;bmf{)K_?bi|PU%=Fm%bWn>%rH3)=#_K~ zM>X$cv@Baa!aTyJc5Y7p4g94AoUJ?t?^szj)|wB@)M=HGTe&5SPq6O*VD_*R;TeKn zOdT;+8E;O!gCt`M_b689@N!qiJw0}eTYY7R+%`NOP4sh^nA4s>O3+nTSC<@CjbjI- zp69{q11Y{oZTXug!%+-Fn&+&s-(%ovAC|iY zQCJs0O?@sA{x8X&+-14-24CAvsDk%AMnmpxyjgO90++(X<*D?}(kCX0)gn)iyIRj> z50|c25mTV;2Y$13rL&hn2^wOUG9eR5UJMfdy|uRBi$u?J+1B~=Uj(~zmSoAX+fo_P z@kufBwG!RC___ca|GivO0Q8+3ehQZ}1sD;xtpEbG+Hs7dNj7wh0?kw?+W>JVceTgFY`X*6!oj;+S#{&Ck6?`9M`iRsD0vBppa#;6%$1*2 z?SF=c!;14!;NIpK@$e(DbWzc8L1$Un09fvM^%MRWSg>l___#9Z#* zm`4xPWkZPCp{o1`$tnH5W5(WK|C?zjA#?L6W10k7gi9@*ic0mj&O5=gtHWihk*#yGoA`k# zXokDdHEw7Uo(IPXUG61vh&5bOqeb&k3aA}NpyBunj{%$-|B$AI|1@)c8%oU?fvgKh zRAWVqb(n>#Vk%*jvf2D0Vk;W%bd(&x&I+Js-yyyGqp22fbqN*YzSt2H2Fkvt@F2so zyu_F@5D?`r_DNv*^|Xe^$)W54+RF15+u@pSYZ~J5@`pp`xAg&yVE~HuBs6}rpQS+6 z-*tbC<=AMQ!eVnTOn$1BCM>QN4zJ1~qc(Ua1Xbsn5CQV|Mo{iFP;|cGhI~Uh}L8@^-pS{fFo9|`=%oj&+=E+ z@6I+eb|MJ1Hpeki28;`Vxbbryp7u5yC0@c~z|=9etIDFn3lcRCF`DaK;!PDGU!iL( zVIlcTMa$1sT6EW}=H&V>G@JcKSNJc?qLcIOu4DRkO3INI%%YW;NqfEzTNRGdx`H0x z50`OPZNweDU(^2KV@HQPaq0mYWBk$h+jW&)^pmDuz8 z^mwBm!Ol1mY0L?uESA+SsYSey#39%j1X2<2fYN739;@q$u z%nWTj)6H8*Gk-+zO!GOhvkFsMv;Fb$h-?i&VoeWrPyz`OF5e|f&}Q~(Vu%}hn>Pw| zG+WzIcR#W>>QFxyWIHqKdc7=P43D6z&>E6N%t(I5BGH?6=OE(M{xrn&itmauE*B6f zmG%Xs>a|wg^4T`w*U=PxI3s%Uz8?`12^%QT#Nm?l@oT}buZ)teA0g9_qX z4Gf@MzX<7pb9ATMOSs`3@!X4#(|eA2ss^Yk&l__k8!@a6C7$i5C63!0jQA^&V_M(B zA%d?aM!yW4EE>zWCp@rpVjSr8p}KH98{cu{xS@Ek(j;XafLm(&F zkqxV(+|+4_!1p{wM<78!9KCA>@K7T5Fm-zvHaAm0mssLBlyFcEFRKwqk9){#m9MU--TmZZFvqX;$EP7$ep9iic3BK~{0Q>1KOBO(jmp(Lq|Y zrb$P%=*)-P%Ydq13?ImvC1BTO?Mswa0)V-~(RMtA`T3m`<{~FD1R&Y4vOH)7dwW5+ z?9W&Zpkbau+-^6L85bi)zZISviDkjk%<}G-z4KXU2<~79pz4CUeP8JV)mGztFtM^Qc+=c#*E_WC<_BmSR|><#|B5T@)%&1Z?hC;7OLoU1h`3sOdd0T&F}8N z=JAhQR{P^l(ZjguOujK;RO$O$x$@t~PeJ!|(n_aOiVHE>%QQiCJ5yZ@!^NYh<}D3= zd(}niwACPFWaca#G5Iw%XnymmYp}!R(CNaPc4Rr>Z7))X}~B5 zvtS&-$A3U)Vtk4kZqwIj;Hd*8mLC<^`hf$H3%D*Dk7A0L^cEO7^02-T9^cpooi_48d=wejD2yZDN9T+_DC8%QdlKv*Xa)kc|1V zzguQKmgFIlRyCj8jdiINsT`n(OI8ls0~(*TUp1nI*w_8y#Z?fB#byD=Y>E=uZ9>{I zKqdS+i?cAvHFas4jT#-BYpE<^4#Rn^QJjR~cH5*QuzO&2%?U#nM9}l&KZEmsrnZ1d zZLI^V1d!enk~XP(-vR87n(tyLZt*>*+C7X_1;iWVAadcmNqA0gF(d|PP`-(ZkF+$> zLb0}h8HNh)gTS&y@LB_-Gcw3~V?JKMW*JcnyZXBZgFv0&=$j`%^+Zjn`(=65{9I?M z6N}%E+rm!cGNt=F*u)1J_k0}BF~$|Mt^A_ji@bT7Xj&yxl6*}wRc?&b{zlw4*4Q=V zu={aE$nq8MDZX3>HJ)T>rtT9k3)-^p$_0ws7iU=RSW;*Dr~2LT;x|Is8_j)wmK~)p zZ8HeBTbxV#zCiG*Cp+*2$k@!iSc#-R)0zO&ES=Ebf`(S_GyS=D2^65ubta!4r>@-D zjxR-Wr)~ff zG3NFhzKuvfz&A3Wp4Cd0#4{5602l-!B29Ev8>&!@% z?EdKONM;Ax8cBBXR?ilmb=x87gy(I3WxQ)T@lyBLs(i8-3vYx2ZWPBxBeUBx{#zLO zANBdwqU+>58?ffr#!ulteZ_y(2f!Qk3UpfyFX{a^;C17hYXx0hZ!EcNTd%~jvqf>M zTyKu8SHJg6$Q-Q|J@Z0U)M;9C57BM9KjY}|mYyS}O09X9Ir_PNaZN+SFx3h4M9 zGDti1os{FJI)7$Xhn1)NqYHMsP@MY-23(+e*p0hKV;KZdFF(3GRNyqFU-}3VE zy6CagBzZd{2>TXG__*78z~17H%lx{`d7J-=48Psm!10s%>(H=qVb=?yr_;cSgaadEBD1m$>{c*K3B8L4!lC2&`ZY#3OaX-M5s&k zTE5j1rv+Qm<;W#tJR?E(`emD4B>y+uauogFSkk&U8RMN8$q04-<^07_<%~9D2UGiP z!xSL4c(pKl#U(mbecexcQ}B^Fzl&K`Wk8M+if|2pHV^v9i$*m^Umo^t*&9%s4;yj# zH;Fd61>1(H7PuHX9s_caoCOe&-SJ^vEtoqy|6Tec+?_(&^`e{!mxmM|{+HE$y>`wz z5LjHa9vV=!(#$I0=QIU}Ml+)au(cK?z7e7i~<;$u3E(JkLsHxwPLK@%b|x;8oi zdD)~#6(1lOYD9)nlZtc*ctl%Yup;;VQX9rM&)fn0*8_bK@#^n0v}c?TSAdPbQ)Yew ztWi?P&CGSeWXJo=}thZ!^?N$aCaA00!Qg`9X>fyN$T32`&Eo8}!|kL;Od`nsKRwmMR% z>A`nm$lS%BC;Wc~)#yuxiv$V%o!9P1`b&zU`i0(%gWaX}!sTl|Zy$0*@l)I$e#A`| zY$;Twc$tC^DL}?(^z{+)#glbe^%8y~&DSD1P7kwTzBv)iYC&*_eFe3*`=j%GwM4JZ z918iVJbacUvMb#-Y9I{+PowJvFBONw(1MU{po0B?7mM1qgC z>978Z9_vbh+Ww#J^?&hyG#6UZxH-cWRqHZcAgm>`U+H7tKu&rtiiZPSYn9I;}j>d8wF3I@W~fVumSqnQnEFycu0H1c%=}pX9`MiE`wj6!@~7!*D5Q zxa`Vql$JE)1NOIG*l&09r!fun0_k@AE%XHL1sru00lf%g?{Oc~s(CyVI1UJczr%gZ z+q>qH4$)UNR8#oac!;wzXXADVW=j##=?}nK8$5mbEpNS5pKE)TUG{eOXAXvMaEN@& zC%ZvZ4SMS?3Xv`J07grAL2&id)^lUd$4ddoAs%2=bpk0UP6P0DFc$i)aMp0Tyl&+i@S z`YBJZuSfXlo1IQLGV*qE{m2yXn+mX2Pjvxw0!5wJ$nfwoFlBGlt2b2EP*1(D?*$~^ z393$uP&*K3r4x6=e3w`G2IcErk7Lkfw?84I6f<=8${EWS^9#%asIERy0Ets^J~1+F zHH(Z9t^b%;y=rNqpYnby66`{nd``0&F1KU5)~e;-XE{w*2{t9!+#h|QwGqPc>-GfF zo$uLx*(EuO>>J?-@(_!QBUizUlv*c(0CzUJSy2~Hq~{j_nA$G%PdL|-XKL=x%X;Qs zX{0u;>QLaTRL%)tFevQKoab&)Y5Afg4F$0yJwp#zLaY<~XjIMPVyddINV?AG+Q3K{ zn^q=Q)els6k33N2XC5M_4Iykov_Bv4FOT+H)4AskdEM@;0I?chjpYaCkXmnEcmcU0 zpED2xmV`Zu+e)kN!&GaXCt%=S&+geKEfN~^%h#9<~gzp-it`P*7I3xsQrxcd& z-qO!>s_2ahTn-PX7It6IF2xog5{^?#4ofdgKJWB(U2fE6*cvLKNOcE**f5>XmIkHE zo@CrV16-gSWhHCuXQu)l+x9O_mrduGUViX7R1hO=t<0^oum}_Ch$(=!^I%oTuI-yH z4fj0jVfV*|7uv#ErNY6O3>MCakYg3XYF$+2r7tGh&1t<;mS>G0%=ukupjKUNy4#ZK z+{h)rx2RPZBG7tNSw(BeMlS1*D!y0HoOa|sn zFJbx?-EY567+(=ZW^7QMW*B5o1n{j|{wu?twLF0kgW|>p93JJOv;nEh*|RVBFqLF^ z4Aj0|P;;eZT)T8ET-w`I9xt)>RlvWutQ`KxQ?_vNDmW8lP&^P_>(TED>&c!|{JX;p zqwT2*3M$~?v2208K0gfT7iD)60*Fvyi@9^9wkwaL+AY;p=dR*gtjazoMhr`;u@;EG zO<1_0on;=~sX@s&sK+o!zbqn!|0|aLJ%noT!5rFZ1e0#jRMN5bT4$*Gv5k!lMp=HR zw@%CNaUXI+$?aEH=(mIP>u}|rAtNS#OSqhP>&Up0b-r?UwVhadh*nll0^0Lq=%LNP z6DqI2Dw==dMdUv*r-EdEuXS6*Ari*Bo*XpKM@``z(;;3Xbd*lw$Z*CS;$F@=M8cJ+ zr+D6d(1A+&$!SoGZrN=JpA#TxHLhZz1#I4^${w-o*WjMEHI*eid%%BF?}@@MAvQy@ zKvzS!+h55b?~-b`BSFA#q64`n>M5>yAK}4S{qc{bq9Z$; zivq(X$tJm;;>60)=;#g;I3zNm>)^5sNQzER=+K>Kw!RMJ@A9o?+X_tIk;Oun=xivpf3Z{lB>#$3DBl?$SH#)&q1k6_t9>bqvS*iOF8%b69_fnNVIb zFSZoLN?e#CALTF0_jEC0{#w~jtSu-g@Jlo`)!sUG{=^AjV}aY_Hxk@}g9 z9KHeQZvD%0Km4y8g_IvEn{h@kLmSv=~3xdTycmM$-`g`bQ{iaVgr@#K2@=67C=-GN{KJmvrLO zy|CfYWl7&M$&L5A9pCuif+a#3j4^-Xmo{Wz73dU{5Wf;o+d1mjuQ3Pg1QCy9600)i zPcXd?mv}n~Ppq(g3L*`&CihOfdAH`sl0iQxskU0#E#9ZaSRG=P+BEW);>Ht^Bph7g zBcDQaJzScu5I&}N^HP76!{%PH*ZAyQq7!0+*DK}M-~C_ru89A{s24l-JKFfqYcURi z6NW&6uq$pYNmT+Y+<_@IFT5>#7j!~jxGTcAo-Om7p)(Q{eCzO9!2JC~X6^0?+(2*z zF0GX=6YPy}{4!1hMVfT)>1SzmXXKB@x5?U`ZVRfiI_ZjN%Y0ESKI*KrmMH*hW!fw+ zOo#~Boz4R5&kkuc$rscj@>uNSR80$(yNdr0s16L|OgoUJc~;*=V_ftoRdJqdr|)16 zQ}sM%_LO;BdchJ?=VuW=S^H*nVe`flYk-`2C$Aq7j8Vqe%flZ9MxR%acx`XAudm4X z=Ak@&)OOh(D4glmYW#&3|LI0uP5C`SxmW#PM`q$A4%5{>`*{nY&o^FLp^ zyhT2-Jyg+EeSjnhEG;aL-b`$DKVcpht)P1I+WYq>blT2eYWt=dc2{!9(n~B^lm2@) zeos1ir^mC2t^zDr(@o}BJ4ea)emENnUJGbu;Gx=DXhSpf^u@-U-L6@&nr(+~1SJ4n z0*v2wyQvtk;5+w{J8Lq5@U|kHWrBO^tAH^8BE7qeH{aSRJr0M#V|Y+U5$N? zd2MiE9Peg`DJDv~O-p?tH4}|cwp1))HOPX#PXbhyizde(iGAZsPt(yBsxl58d6J#n zK}I6j07CY(!VYUwo0pn&%pPhgVF1C%`)~av&wLc!vOM>56;SToG`Vxj&oDx%eFq~| z&uZUxkj3ztIN+7)C-om=iFrl*&sJ_QanCcxk>&Xyu?*F?+J+7lLPbQ_@qd}C?a&Fm~*hQHJjEw?x zsku#zlehqYkxIqzi;fs~!TaSLH6NUT*|R6o*@|4ligqv`Ff*)#I9(;%e!mZMts0H& z>gq~QbSzmp8|**J6KlE~l^SM05G-|Mc>q2uvV*h)Ph3D9-Q&79nV6llTC2?JKZ9wH z;lmg|Yf@uZkP%7j%3;Lnz;1ednK*^Cz_Jqak!CIcc58i{rrRIN2ZorHS; zxtR?RI&JK0ks_6ui9zLGMk$Id>6A-HvJw-X(@1_{a$QKb#zgGN3xBK~ga0COQNW+> z6HN~gg>J|8oa%OM!(nNPNHdcpX_UI(%wPXn_ERz8kLkLy{&7>K-B{6cRf)fsNpb#? zBg?I#yZU&%2l*WNNVOMe?@LFy%lt{x+dRS1(-dTm9uT4aETf2?0BMAFdxrGPq zRPzs|b&tf)cTyGhi0pd=>Z+rrsT9)AoCud){bnj7wz3kSk*RBShJ3aiV7BMg@I{R8 zk&<@mJ^O4nUQ~>UBCH^hv3A;?dkjgB*z{o4DIgW$D+7H+(P!-tKVtA;(3n8qk3F{Zfg5dI6NYyeSYoUabr-x zdd8vRfep3vt}~FN!TYRxV_sDtir0O2`rgKx=!(n6jvB*C!heoR<;6WE5pqdRHJhFX zZ#4GrtL=Rv)UJhBO>bg4ft zt)1e;#bJ$a=lidbwl-QGefH?m)%YrPGg?(DxIB@B_>6EIi5cx{+MhM;s$DK=FDRp{ zIg+A#T%jHoAau+z8gwN5mY_6QCfqFpZ3JfH?>qx|GCh6lTDX_D-?o>R@kTnUg}w+3 zEpZyGJpt-F@26tb7hiDooKR%oJCO%_L)n1ltrNjTm*b}vz)a*R@4lmf!d3EZBlJM!(6NVZf72D1YEs z^}jTsc+)9hArkc zP^J~QjT-yXB`*_EV8rP`>}nmLol4iJ^gJb%ow{bRq6kFTj> zV-)}ZzSpa0dR#1VXGw;y9m=eks)#9wAmQ&v2?L4PMj3%GwO=2mCwYDwz&KpgHZ7pv6ISXDIm|&pKlp9}Qo239QXPW2n?Pes%j{TO-%4l1Y^2Yr2P{^<_5?Yv;y zlG-x?_A{I+_{=2gCRZ`vb5!kxxGFpW2ud1z6(;FJ6!h97;j zIyVKt51tb)pSNea~r#|P*LV!gSkA%Hs zm8?8T(v1Xk5)OsuTUWU+QfAcxjESJJfKZP@`EMT>8*m>@9-54w;7xJf+z*uxc?%c5 zXES0f_QD30=KmnF#CN&Z%oGH1O0yaoNR@%%V& z8c>*d7IJ|zMK8t~e$T&u(fzYAweU+t7g;WP_N~4gGRN*U_6N)GXle-7>wZF$(K|w< z{>OYo0}_v#8HUvcs|u`a58P~bL3$Zz#UUg+TmFzONG8+~VE-l6X zwB+=eTm@Qkm2Z72-xN33T~P-FC|*`$qZ9X0IvMXiLE@?e>t$;u=lD)k>k&6{{0J_b zkDiiB+WFlIW!KbEedwHmo;|UPl)4gmLJx=LnbWTSU!AZ{s~yoF{P zr$D>*u*nmifH^8LHCCb6fAzcAoa6-|(?EIH`M1`ljhOw= z%#q+pI8we9_E5LKAc{U|e~b`tKw`!BQ+$5$zq*J&Upwa(Xuc9*98~oe;;0GA)8`li z)%cNHsVShHST(dXIveP$I28A&mA(wjFKv9>Rw6Jo?YRJfDx^c03C?F6X%gp+{FT-3 zHVD3~k>Wj(_2V7QYaDe8feazR+XD zqHV)swtw9@Hsh;K#L2;2{i|iZ(I5+J4(7-(uoj^)f=|Ia0VaU}&n8#h(D3*dwB92r!zv7|Wvz z{8sYlZmoN(#YKc8?*CH-@M*u5HB-N70soc$h&aBIht&T6gerQClu!uL|Fz_m1n`6V6*8~g?z?Sdq?d{j( z(;~w-cj-@$MbNeBL(!V29fP-NhpEZ%MFL}({53$w^X$ZJZmwq#m)*(JG*OD4WqdK=+Ie#njdFP4-Zj*l9=~%soa;p9i`vG?GcUW^ zra1Km+%=xMvx;8$*GJmmEh>ELzP>+?9T7jvN*j(z?(x54wf&k7&ndqh0-c!(9xLsZ z!@`Z8BC4uJCU~$T?nU9?3HcAEo4fR~B$LMzpx2ws%>lA2WDuBBarIECXY+W4A%CnI zus9-YP{n4Mq^-2}X|n?Czukgd2QUn`qRnW}BT-=`zWO?x!~o$K=E$mq;^vQn+=-1v z5^E*lfXC7;gD$+7R-=K1{Oj7b;&XPGMMA|5uM*V+u7su#{M~@mYcD+;edW3@KzaEA- zc$ALHaO(3BYbOlDfa}Tbi^KfEiGKGr)+Ep7v-28eO`_MY^pAaYsvZWr_uh5vdZ%33 zo1sh`=FHFaNv&NpssA`l z<;3osIQ}yrwsUPO--8alNz_ABaGVceF?Z&(SwJY13xG4dKKU~4n0z4IWOzMv)^{6Y z(d&QfriI%}01V~G)r}J-y*f3%k8-M;ZDQU3;gnNxhwCV~N*hEzn1UD>`pfmGnZlQMRiAj^iynhk|2>DbP2_@sK{<@G+=l)v=mTpkvb6d8Mvq+WPX zyYIE(Ucess*dj{0ic)FJMc&Xk>Qt)V<~%F94MUYR+Tn0G$M0W4@S|&8ZZ^rV80n3H z{?R11xh<(}<8hSA4Yj~B^MIb^tN;E7NPnFUG}Y^e^-R$7?J^3SgoiSU*Dyf=;CGAw zY`^s)jCmpQK@~esy||-SiT%z8>sWN{L#4|39A0(ONss;P)w6nAtMq(?H#Y~)SPY)+ zpOO{CDvBk(!FY8gU&@KFajkl2z|k*g-uPmcKItGx+Oc+T(`kK3Zua-H^PecG0w3jq z59JYZG{7$_ygB2y)2wB>9hJJjHHVY-WE!!pbpmncG*I7qQuwywjI!}|&4R*nR5b3z z<|!eTFtJl5@_Q!YC*VqzDi#~3bB=it)1Jmh8!dc(=$MXgqLCl%Ocd{~-Hucn^|>_X zcx9|_EH@L~!*i~;=h4ld7u1>V)p*5+elT+~K9Gc8leL!z(q_lmw&;S=(tc4gb5LEstev82)9I;y71FzDebVDo515{}qT=rPR4u|3#3})-zP<%WR(&44 z&Nx!x-WDsqiZp$Rk|mqA_++Z#0-4!%<%$s%w{AUxQBP2p%hF@ZJ=;456N+ zB~|1+v+(80%OAf>C)7_$bB=FobS=;EiN;cCzXEL}Bqol{v__3Fj{l$_!YfRtfWeWu zM<5V%`33qFMO9Pdcw3We^S__*`JWAq~OvlKceE2GwzW=6u^XKW!hk9J`k zwL&proBRP**NTwm)3)H6b!1rZz3@uz`R59YdG8~Ctoko+Os3P` zd`qhL?sLjpMhca-fmuoHiI0oDjU~<7r@p+tbP4YFu)6fEzzse}Cc-JrSz%7A0Pgl3 zbkb000c$eeo>5d+Yf89Q#I^$BInWz6!jQBO#RT#BFdk@ zH2Q}9`{N9!Dy*Aa#B-$wW9^8k&V>)gXw&rLDM%?(`uV=Cd$aMG_!jy7;zOBFf{}C? zV>1cE8AH^%>UWC=mb-wd_GboNtKk&mN0S^)S*Q6KvHRgVGOOR%2*}kop1Spl08#~U zJ>Sai$TL&ULz~k6{|I}pu%@?fU04wWL5d1NK}41Xq*^FS7gStIQ;-&_NDT=+NC`zL z%L3RC=^)aC&`D?k1O=sqUJ^o)5+Ec&APEoy-;cHT+0XgTv;XnN8*%~DnK8$B$6JOd zNBkbK`?~JqAaL;dDA`wTK3yi%RaE#E#2}A?3h&7MVR_7ne0{oAjeTuw57~TW6z*muOzC6>LN_K%$$14|5b2!4eGLe2PUO?bdOR z{(4;%>D|d;p2#il)77GhMuZbtEM$4&d=3&}UNm)+x60-6iR3$ZnysaF z4HJd;awob|t`HnD0^Vrs{#L8?w~r_lzXCTrRCKcXek535`LJk);)4aH|Elg7KAChR zU=rAwjiOwsFB6t8M@qdep9;S))z4VLk@pC*jADmf9BW=F0w5=s!5iQ!KJiP{5O=Qt zUO1`a(FPDHy6juF7XQnwg#&}A<8@g3*p=(Bpp0Z#C`o<|s<3T(H7dCC6%gxSC}c|( zO%;D2`#I_7R-YvzRtU{ZGIbZWzF;Js zKe(h=EMDbf+}dghV8r%lH1TiQ#D!3Ej9=5ljVyyCXe_<87Rx{E`R&o=C4Ja(um)$X z$O7t98pPAn?-){=vb9cZC@!to>w9|@lY3n3aN%J$7-eCKM5>AB6}LfNnB2*e zlm|Hq?c9n&P38|!eR$D^&Jd@`@bQjj2i}!L52)R4JD*}B4T6qfL7cArkA&xc*5Us* z77~@o!9tuG^oK66KcriYEum$>3^&Q(M?bic+{6n-=IWL*b8kVJvVm#i1UFZP(=C5p zr)@_qe_nD-d<^^$EcvEhVgYY$QS!h=nU`du!oFm*;{$#Dry7*n*$EO-l)}Xas;%=U z*8dG!7I^x^m$UZi!GC|*DAu89-5QF-FhvTCZv1IcW;37p__uEmK!C0*$PDRJE84Di zyO2%}g`$E9T|=>*w1LFe?x$z3LEP+;0BG|&7Q)#(>1*9`yByLG3XU z&3*-|+7`Rjc0OBR>MQI${_kCmI&gHX&c6T*C`>7djGZqEh=mhqukp+1PzG!YFjg2I z!N^RYl_d@m8k869^RLf96$BZo4&Sr(AG*CA|G|y_*Dl-CfP;z9HZuU7lx5d}Mn)d84gMxF754L&^yJ$vSAz?;lMK)LRXlEV zkNW(nr$hebu!mFTyHhIP&LxCD3#Hbu+E3}s}2fg=;av5qe zUuw!b8{?BnH(+K$Ax&@@(O)i~$vuqd33Hp>^Xl;{D7S%;b%Nou=@r55@>HEf^w?PEMxuVw1@YY*Aq zD+I5tU;oWrl-D?)Xkb8qp`q1njU;0D!VE~>1Zc8$a+P#RH&@A9v)#z9o?Q0 zY@h~FsUuMQ#I_2AAW6ZD5&}odCYFbbZ7nS=m%<;?ghyPjZg9+WnFW}%iWUjY8Mhy! zH)vY3gc2d{?u+G-@Q<&s($3EwtKx@;9h+-^x?)pl(;7S55?L6EzGS@y4m8NV4L|?~ z>Ar1|X2bqtf#-aP89|vlZ-HT|4Xf3>(gRxcboca{Ncr)|M&VP^rGKLB-?J+0(HZrG zaFzLCoxH^>a#@0?;kMccg?kMq9P^nfh{QAr;CQ_2_NsZz$T5aTK^A49N2Av$O&imo zK4ro*DmlHFeTSK|?}c6HXzQqm@jC z+do67c9Y>@9pV1c<08Sk&ok`o;sG1)udHOiUJokC`YIhR22J*0f36sz4Jz%vS5+kK9(Ruve zUgo5Flur*z^5F#=Y**ei3SJNET-@_Vy7y6)~Hq}(vC8oe=>EsAh-HGbG{rybh_Ur>o%(`SL zvoCO?T&vbw8p)=E(#_zxku^B~SlX}*VV;-U(gU=$ns)`RFoVV*T^@c&XHOSUv71YLM+eFI)&s=r@__VO)p`s=R zxvEziZ|C!c3)Wd(RN5c1h!P3$dO+S%mF)~QfA}we@A#dwHPO?(1X68BeNk`B%rOl} z@d6A_$lQ{TPs4W+jJmwL$@OGBx&hFJ)m7UO1CiL|k##M92u5gU1o7AF+gF+UMI)MJ zR63`gN(nWcj6t;$P`Kn0cY>)>iD>(4+8SH{h=IrT6a|D3qYoW(X#8E-)x7b{1o6`# zNAV90L=@i!eZqBGVUV4}7BEZq@P^UegB5E5cCB{fTHXVqC|}Gc+GJrL?5y}ufxcky znM`ZiGt%^f=U^Xz5VCbpq<(!yyXQims1inkcPqvR?eJ(nCO`kY8lb-l>c1)a@7J=; zt;f%~BcAp}YxvMosNTeY<6d_Yn-tk>;5}aX4Qkb_P2YGM0S6SWW&c7By%`z}2gZ5f za<8BaxFl|brN!B-V&MpOS&qSnSAT0Z&zhO$jaIrf(Pkz%RI^x2XSbExLm9zCq>eJD`6xa?zJVWs<(%zeM4;VU+ zr?@Q@9efjL-PYx%$u3Wvo8;X1s5Tu5zH+kdUg?5eC7SmHg4auyO*1ZlnqG7$e6Xa% zJZN}*`zvd5EN!uam+G-7;N3A>>KLVk92_2=7ZVdFSi5B|f#hu$6SU~ZgSsm^wojuS z{*D+ju8XHsevif-!uM6jUX(0qKMTD2rpX-rkVnGVHg$R^3edhl|vsOe9FsYwgLFqMJcqkK? z^MGOBPp2$5FAGn0dUoWvz>i*Kiku{!AoRZQ^KqD}S+T9KMQA^$zBzI%#L~dPU=~ob zpqpq4-k2@P=CwSH&ou_@oM!;d+7}TXY?uJ7xSBoo3fu^_u#H?x)=p6Kt^*hi)9QSp z9}oITsgATlVKA)n{QP_gkm4PZi_>4UmW=A;CxqqY6r#nM&6oGw4QIZTaMg+Mp1k7v zGEFn^v&Pc9w}dTX7S;Ib4(F(P{xE~`c~VCuI@|iH7uT`j7sc&4ai$7`ntSk^sS?Kw zt`L${THFuG&O+n!STc8l1jqe;1is0wP z=&^gBx%>c6X=_T?iL*Ez61N`Zh0idxI5An8j>U%-356GR&>mk(xq}L-4pJ`OpCLEf zp6C$VJ5CHEqP)XrU&PU6#?{&Nz@`oyGr=YZ2^9mj-dm?H7II{5j!Bnp4(dnL`+a*p zPZVC?%3oMmK!SuJ7N^ycj9t_<)H}fLC5{@etCI(u^OULC6p?tr{K!c#*I^Ofjs0F} ziQtRnz|Pz#{c3*(f<8{!7&Hk2!~svzF1tKWyBv6jK@s-LYeA_v5~`AMeR?$_tug(p z4;jz@?dw!zv!{`vmUXxXG|tQRbGkqKq+J$K8Tkar#`?sj2wd?^!04ab%!7%L68!2uRs2=b{Dlijd(zSZS_kBC3 zP>%GSfE8Wiqb}pp&?IDORcfz|wdTEg%q>8I;2O6Taz&yOpv;jx@h89ADR4HCxqW^! zuL3zdF3A|0g4)#T50jm297={QE-iH2CMrskPYkE!0%6~^ow1)DQJM-FN!%rIt2H%x ztcUSYjbY_NXc|Xq`77_vC$8^*DbRU*z)kd>TqJz%k%;010R-g>a z2vVLO6S7On9M8=ps9i~U*_>#cq0LGGw!e$TYJ{-CU4H0A_RT*qyJ=-oPi_;O1li+3 z%h#t-c$fxrw7Hh#ZBc3!e%-*07!AAu0({cv6+$-S)1z zw7SHCih#b9gHM_oEP#Z=O#m|3xy;8u525E?pQGd@DPcm$_vhDW@+BRQAMq?wj#3Qs zGitzB;a|(VKAid1Pw>U7IPfPidMi0>*l8@o( zmV>-ra@`VD4~H!mM;uJNa1Y?e%__D+ukOq)KprL<7CqR1P}Uf z_kue_s`f)n(Cl*5n;aCE@Z%w7dXFnB$|f;a`zuly%yVD%c*@eUA80uU;JLw8Hh;lV zW9meH+5S4 zBmTrmW+vdr+@%6gX7rmlBG?~HY>n>5R$uw#JvdwOpl-G{=OlfkYu97AQ^d_1*SPhV zYesmk#u3~e;$UoD7*7PNgo#CGf132?sve$&^O(g|EH5_pSp}BJ!IROGwIXvCTZ`{O zYKZp3L7f*0YJnWUo(!L#&q`eaUO+rxzPUE3p^HTb{osP6qmZ z;#K&JhSGG4rJ|)p<`n1nN=@Z!Z%pJvOB|gqzYYi{UDt?~J@974tPrgKf~(H0Cw1Pq z<}~A%bo#Vwulj^h#i=@JN%#i`(1_FCY~CjGj&rgnECChBNOmI9VSrI&Tp7;^XN~y{A>qA@(DrFu?mtM+8E$TEL(t^cRVp{R@)2K;r{vC~YBQ;eO za_w)Z_wFijXU2b5yD}jY!_a{ZaoF7dQWUx zZs|!uXH>gt=LbQLNwT2lKW=DdR;|6ed~Za>-Hfnf6eGm0j9inZW7~$ zqeg!9Ml(LyTy+psMRX(6pO7+@LSq=_&>N$IgE{1Mt}`MV7P|NK0WzQXAa3~<{_Yp@ zTjNyk>y%*1=4@h69N2{L<6TInkrlNLbb8cua>stKDSKNI3RdE}>_4JkE9i=AG&W(m z-9^X~dYzl8{mxQftqJc2aG*Y-S=ND!-F|Fh0?vW^uedU7;__Fo>zj?6TWf*Zwg;;3 zY`%^&RT_9HhYOTS?rLa6+zNu?DW?EJuoi77i?B8?XN#{_MTZiN(LJ4bJRYIJ>sg#p z%c{K*wvX|yysRJL6f(!N$f}}Bebdt}GczSdi-#I%s!ri65Cqy$pPQiG8GlL(2e^FKj#N0)J$vKy$cIVW!+?)WhA(%T;aChJ=- zWk;r}b*5wmG(wCwNnzdL7tb&7jvK0ukB!yhdz(KIBm-zl0j`(hjdD}b0P?)T1c+F_ zslYi%?%urV-_6$afaj%8)Ic-O@fq$f6gCj-9$r$=q5@#Hd?uP(Uz6}CSVo$0frk9) znqs-PCyMuF@!wgZ-Cn+6n`bI=02tGFElI=u{WD@>Vqs%dK)7b}K1a;zf~}=0>HJGc zYQojE+k3t)wa)V2wGizAYCy`Nn#;1e8gzN+A#SAjq`a=Dv~z#Rit%UZ$8Id74Zevn zO!>U*fe#Y3)mF(R7Uk#Wv`~^h=w=IWc1n#=&I~tdpU;_yP&Hq8iqD&@yQ`DXhk2g$ zeViCHxX=T$!>gk`2G66%^BrvJTD54zf{D&#dq1$3J#@>y8d?ImUOnoq@^Ky~aDd~w zE-^YoZe$#;U3xifuRA-G2?SN+LQSsyOJMj<1v{I!1xL0WXtCE?uqoci2v)*{mNrgbY)_CN z<(p(t5>hord(tnp^<;zw`~s?S;E#aM)sj-wI>s@ZjNEXId7w8R&y#YhKZLTW)a7!M{WFwiY%gTJy~+HNNC2pvW}2@T zzuWjU)C6we)S7;^;$h5oXwXoBn8E)M0sgPw_@U&M$zA#Eri85AKU8_CC}0~P=e;?P z4gb|2NE%hBjD$j3pP-5!U4}S)Hs_g+dFAk-ET@fVdhoOmM|MuKT@UHxJs}ee4AOU* zA8x!gZEtCrTt7pL!oD<;>sIp|k{KNuTMQ*zcu&kq8~PYnD-qUB)PDfjeov29NNH8( zjGeyo+bYQut6I$Z=LINS!js6ufD99@tN1o>>){t`lXm05VvDlMNEBC1vSJ`sDRdHP zU4tV}R(0%t*9#487`*#5WN<{Niuq(WY@7(rS_kxLS%iV=W~DLiYp>-II~!XJ(mNfZ zO)sYH?GPc$CnW*M#$ur*nKD+%_@-iL&e+zyYX2+mJ-x;Non*92nFcX%s*W}S-Zdda z`L_J8C;H!)S66~B+U;(jVN1>*D#6DVFyLOKA!k|A=tHEF2anB9BhP&fbH}!Zyzh|f zI~JtS^y`4;d0MT69-h~I+k+3j9a#`_^+CS6nD9Q@YZEz3A?2Zat2Ti{#bv$MNP#t> z8J}WmqyZMtLQfhIaEO*sbL%~+))umOO3ev~%7DRv0boa^rOh#r(^JneF{U&Km~r4# z+ldSW&O}v+h z7PO0CQI}1gpJ6|x7t*~BiLf1;0LtF2X#_PGTafkm=MRYds+yWh&iJFtuPb_OW=pNg z(;sNMMK!&P=OgUbB3&DNG8xS0d@d{!dp7Li-M{8r9D1gGPHS-n2o%N<`etid(^HMl zy-{@djt_PWHkKRo$PS5l63&x7G>Z}&2>v)PR&A@V+=r}u7%a{kFFS^uc5nu09$ssY z)S%nSYNSSCT^V-FIwA247ZIqDCu!5CYMzf6SsQSx3DAyV4P0){w7C#*s#V>l z*^yaHdqdBa^wb}XTJ#%sD!jKpLu20m0a5oVgSGW=N@S&w71!E(NJHe<_!C6ot!z&ChH2irXTo7zl8P{H?e)lY)hW1o_o+YED*Apd=KN#A>8{EUnb5U18e0knx* zG$loco%{gV;nx8bjWLx2bZO`z%9EIN;SpomPcHKp;`JT7+TXvZc?>$h@$_`IZZ^jg zF`|F)=^PGODclFVAZJ5U<< zYvk9g1%`y7vKpFqzZ>j??n`rh!1hZPC3bXLGI^*k?MDv#mwCfzTERQGOU<&W_U8)F zkM&fTI!@|68~NgDdu=G1t4@4HDmAb^qZ{|i;*}gMuq1BozF(zxS~iG-b=35t#eO?} z-Y=f^QC3M8WC~kgJY-c>)%t^>7y3SDI;EwiP5|DUgq86sLWySa(*r5)M|aiL-atT4|tH`TbK`tlEY$H_5sdYk6R(lE+@1 zTUlb^Dfk1mM?w6MWwF{4WqSk?wkkl?pTH?$)=`9k_E5-35%Do!b$zK}a+hl*fM?gz z>F}vgx+kBDl0(x3(yn0ySv6S+P?dh}jbd0x20kMrqtu@uiyEL4?A4g7<1fk{Gx1GZlaMky&F>92*lJhy zahx$ct$9V#siB9$z8^h((I+Y~Z0-ydG2O(RLI+ zAbXHpu4JJ++y>vL$iI@2xT>LGeuU?`P0T@+=&eo<1~}7bxT+Bnc3*pspWn!CRlC=S+9@_)~muKLPZrk$;ol72b*e!kn3ZT zM#Y-)d{RzH5Qki5smCy%^YAlN?pBD{+?le%xCEUKoP*_>>QiZNmlyLcV%l?%lgn-m zm$j`3ll?RFmGRloZNZX={oCcvt3nnNRQX z2U)Br)PZ>{L2c;4wF4ab7aVoc`|~8B6+`gu($^XyW0QmZ{i*16|AmdE#NMokHM^-T zO3;pz4C5L5Kpvi#@<3+d84~NEH+zut;NR1Gq5OU3o~Ju= zYPU$V;`hiDzV3+{73Bh&6;9OZm4&K&~i@sMwm9`1)!PWVv+X<>kMC_5u z=8)c7$pB%IB`DZmT7H6k89E}b>l4b^9K6DIR|#x-MK_tit!FVN{jpQPJGfQ*jti_3 zeflAf(W&3afrkKneKgNcFmvAQVK zOxq}2KxU)N6#k`kWZQsSy;*r=?PB!0!YR3$BfTmSrNvE{-JRdnbmhV(`t`0{qPu(I zC61>G+3RJRa|-1I__jyEPDfBP10$|4#h(4LpL6>!U7rS}J45VgrG*+%-jm_X6dmR` zR;M2YBLFcQ<66B(pZ7kQxD#kSa?v&T+rtU_RJtm!n5WIIHD`sero2+IhNeL66vxiQ zv-G>_SsT3iJbrRk$6I4&oXUFZOf7RPU$`@ehw_(W{mr_R3vFF&Km?e(nvDUi8X6NO zE?QGE<+D}0 z)q-(e<>>6WQ}mWeJ`%s(scWH099Uk(hjpNIausEaUMyIDSML{Wl zKmGUNeyC+%VCI2#>2gKG2-dXqbt|&u^|m`#kWhBvudZ{6~8l!jjTaX zao$K0;=yt744}Jm#ME4HAe(I1_WQ>81j>wtWkpEy{vR)ZRg0A6072CgmbbygB9Udg zdraRN==pQf*6(_|`rwRh!_$2xQ9g=a&zlJo}ro$^s+2iLx z6;_kfkkvddx%(h+Z(s7CChEN(ES9xMh21Ai+2yf`0snU_in}!pO!KVGD<)cjOSoZ3 zuW4c5llTmfd$-NBoYPEaz+dlW9{G<~ClSqEFLZo3CxW0>HHkjLL*=NGTS8|^ijEvn zVn_bTBog8t6@({ZqY$9hg6lNenv)&hZ_o4!NB_>&uLh@r9|e^S@QNg6UHlSXGucGj zx_8ye$+<^Pn4;fek$>H3wuGjx)f=*#sSd3l?qNFmGj_}k%?ZTk>NwY|gBtIVpwE*J zwQP#*Vm>0Qa2CBb7X#81@b%CJ+M5hoS9RGkA*3f&Wv8}ULSl6JL2-IWuK=Fknfx@r zMopU&x%9p1X2AnX{UGvf%)rr|kr%pG9kxRnS;(nTICpMl>52MN(O)98JEKt<A)U8YG zTQPu$CdpM=x18bd7}$@MdU$*5819Gh!PMH1J`0n5UES!CUuP;~V{s(~?OP=GbM082 zP@(y&m;0kaL>6iL1FxBv2;~cUgWbm&SCNvs->|3_*PZYxV>>G>wyq}8;eudd#;#;+){M#pSHJ==_BA9k@Hzw`vK08ZMYVB30f`1;8-uVgWyf&zkjgu6JdFIP*tCmGmm$y zt4dkaG+fBZHj!ial&M_HO2aEvAudG))1}Z{i&Yz~rO%_Dh;U`(^}*MUu8DpMgKma1 zRKMGUqoX1Ezs6sL_tt1(0yJ@w{OYlbzJ-Qe=K1ygEIP@`dcHj9Zx{Xr()DbdTM^Ee z6n2l`Ga0>99xhX68x+wcN0R)!wVE!!d0RuYhH;En2*5FrNk1iX1)00vSpV$;} z%ku9HqHHcmI9xMlcC!`t0<$#uv?ipOoIAJphca;dMwFaV^G_0>bFm*nl|t`L=oRww zFTFh1KJfnQ$*;%(WsWl@*|-CqTxf-#D+hXc?QL2Hti9=k{lv~}|C(Hj@7JR1^dDcb zG3gTCC%Gb3UxpLp&oLa7EuLsLRpLZHXg0`@9X(PiKTtB2gCiEE#`Yc?j!)3Xbgo^L zd~eX7kZbUdIA3Os3vSDV}%y?ZKTb9r9Q!nS0ewVAW?C76T{ zSm?@9=)M~04gFMZr?<*cE&m)Xq(`d5wC9@T~6B2GKrh63@Nt2;(1*mHu{_L z7p6;e;Q`h>-o=Jp4=kZETVL7-;MF}sO#*nnj$9Xjr|)6Y^^y5`t&@hlC&D;RS6r(2 zkRm2hNI$VmHr00oceMo^j|==ryaz~G<<-k*dRj)7ie}ah+%;ET(P}bQ#|Hv7(}M!x zb?IEFL~Y6#H%P%|q(}W4rvve-6j!ZUo~@y%M4S@gx8B15;5BHN@Im z>gEbyaalH|^hBsorGUyuwR^U85&s6Ku)o4hO%vTboyYbE!6aVcFcy1K?NQ1-y`XHuN( z3^YkldDF%-y}1pLj$sorOx0g+HdeyMf35Z{~kKr+*J&D5(WMwL`~e zZm(yREq6Y$;oAy(`t7dWUm!Uv(<*l<>=UO#8CNZV;=3~+xYVjZx9(aIYW0wx-Jb3Y zC5dx`!5kRvbW}^8UYAoLJQGsaNqauRKR7&cFVqRsM>l<$%QUZR9!5zbk7Z02!<4cj zN_j*79yYwrbGdnYX{;k>>B>;owfl7zSKa8tutKvs*atyUY)I02j(xz%)pyY4!NC%$nU?8*LUuUkFv22((*g)*f zV0Hii{Yrvh*z^Gg{_?-ve>P_(kfQro5&j(>$M z=B`1pQqQ22XQSpv*5c<|YzDY>6sq3??2wTI-XU2|y&+#_uNpM!4#y3?1{5heEjd>s zWxq@arAs{Tsfzz1Qn-C$3Ho-X>R9hHcOMOPyNagX|CcF_h7~?{nhG*$Yan4`s+9#)(boW}ebEWq#T#&hzx@1ikT*T+|CZ1{D1UNOGL{!y^%k1Zv`VIpJ^kpDIVlk;e>;vaJqcW(4I8;C&*2A0JN{@&*3` z#w50jcslDkUgg`^-lraYyJlTIF?YRfD>9bU^uU(yqh;)3sE~qWY24+b3^`9t8KxvF zESjPI?xv0oGfjX*50dV}1p56;{ItDL16?q8UKeIIs{O~K%gH^iZ+Rj3qsfNn z_yD}d9??CK8?l?OhS{2$1gOnACvgwilldcCd_)Vwv{fe<$t?EVMBQvf&ZbaeMuE;| zL7Wnxrn%w`#*e_$Pp#w)dWcrp|9wK}cqvfUA_Z~=XX)K(2 zBuKuLSm`33Z5+*keJDdAh7Wa}8B|viX!ng?zYC37Di_aTxd+P(3aS;lksszvN4)w3 z(1Wd&@UZRf6ghz`EmF=~lWX(IS=&Pe;lh9ZyKWy{3|CZr15ZV;-+1X}PjUi5T-y-p zZkwde*vJSxm8-Tve&fB#*`wo+HD4>uRmOu7UVzK;Qfw7R-7)X;2a3!?`|B^)IHre? z6RfdChvK`+LS|H=&>VW5JEiPrwCL=!6gzP)$>r%qnU!{j=@X~qADrnTD1Y@QBMC-kNK2#CKF z8_l(Je_3oeR?Ko{HTI5Uv)fT3&J-h(M_!TsaQAV;uD8L}4j0jU=G2`el~y->s`Y$8 zb&20FLZP^%c*~u25$UVL&4tp(j@vv?7-O}gKl&Ll=VeEKeSNqEc#B2{ejyLU$B(~X zSOC;=fkOzljP-g+V8uq$VaTm<|Dg?$yhGk}%1?Z%yJ41QzClMdq@(ri_2C%E0}s_*NKB{yez?q};+U z8F&*J^zLhdn6j+oKsa`WB~jn|Ynm|XQFDT0sDH`S;@aet_KJ6~yHY*!BBnWzQ8STX ziSZ=mNglZ8gKrNe#cMceL71$!-`j*M#(lIXu+O} zjqP&l{T8wMO4%(iC4K7M5bKiHQb>QEKV+P(?;39FvA>(r5{);+bK@_J2Cpp3ObyY7GU zyZ>WypajK;heh{Wq=`*aXurwdiW;tpc?t}2ucs#-EY2MyXk2W0=AOp9rdE#@zSeY` zii!e-IKr`*K+N~jW#a4jKE}+!_~z9%hT#V))bnYPYd=8Df#7@KhenMcqcX) zl0diXmeu4=*ydkH11=o>b+)QW|47?jPFjB1@sLZS@%SthvatWC$kO#Sy-o`L2x{sc}<2(8v&&X+8m4epwOW)#e9$`%N2Vh%?^RW4c) z!+5OXd?SKTewfa!=k%c$D7z`GB)jGsY4!^Rp~7QPz*M!Kti9fS#jVVy#?uL3j~e8y z3)45#Z=*bxw>LGJ*a~avm-+eQ#$Ujf`Xnnqa96bt+eFrNOxwZJDvmAc4_cPJkA@LqDc=hCdV%UWs z3A2m%3)vD2fro$HXk8nN0bImhsC^Qr&+%=2x+HAg(Mijd5bNOG3iE57Ys*a2a_h}q zU+4*4ec|x?XY)qVi;(~LAOBxJ7)oo2%rqDg2X(L)7)9zT@Pz^9U6_@o1}b8-Gua{& z>V!GS=Sh^WO}=AQi`5IiU<4MeIz;q;F>T5fM`XSiQyYjax_wH3W^!qX&s z`RT$Dp@&FJ(8nwTVUCUm7JNAivM+9V-5Xx7Rx&uo?-sY+U%41yb*jB>(LY;q+H?~a z9^J-`CgWDx@J^OwF>*wJ{wRzO9%M~;c<(w?e4N&d0H~T+dE4q$X@>?fN~2Z%zs+a< zbER>d;^6+B?l;v_Da^h`@8`T#*`l!P)Ag;nnaH4ym%|7b>{7aG^|aMGLkKX_GUQT# zdhRI{GTDOmouCzMk5)MA{B?lzec8;yad0cV*!-jEkHN2djdMF|DC zjqt!+V!%bSz4vA^TwDUj%j-%?m5>O4j!0Qe;ibOX4XNNuNg8PeD$SaNR-AN3$g+3y zW}Z^GM*XQj2-tyW2eqixuuAWmBDQ&tdtFDM^lFcH_E2xSY30D{8rARg=m1Nyyk#vd;C>5GpzvUWBKc02qdf+^`P zSe=L;BbN3lZ_4*McIr)lc;#hkwH|4-#>U!ak8*c&qT_yJj;|inKVFv{8|(iVOmv#x ziK(>5_S+{^js6rG5Fo-=dFO2|8OEt&RN?NRXh4Iyw|I8UAwPS29-5^BxOaARYXG)z zfRrm|&wQs}zbeQ}g#9Ip!U$I3(A#^wH@5!eS9m+ZN%l|5cG5yUuet<8IX2P_+S zeemibAdk0z)_c``+~j8KdY3&w;qCPZ#o?tFD#sTd|MmI>xUm1p#CyEr`C~tB^qPo1 z|CCe2VTx~p}GI4KM zM0r1%{$L})fWDNY&;q~k2(kgmpr8f_dJ#e$QQ+&^RvD>NNL##Se{HJlAfwc4^rC1Y zJ`f-ijH<9oW2U^8WCCbaM|*_VONFW+4@dH8v&UtthWUOyLE^`Uhlc=qD`cqfUfJ2V zKN4madK#F3ryXl)>UYo7?=Q=L+$FRK9Xh;uZC;2hoyLCu2Qy_NCcN)?NedZ4UWWfyad@)8#}+a6mulWs5<1E z-)(&5RGvXPuZAbjIzXd*`d2wNuCrg4l)isTjO~3;%<%VD$CP<;U$wiKzSe9Tn=ycL9$HqEf>-vY0K*KNOXuD$oEH_aa z(R&of>(vk@MP1u^qVR%9-Uh z?zTTaanpT(YeM6CAN9na$|>ONrR2jTqq7*_e|{4MyyxCp0)VyQ$o^tADA$QIO0-&} zBFb5+9GU}*Iq9#ORTBJ3|8XQn+w{~&U6PdM#`bu1YbW!>N0k6$ckP#qs%33aOH@B; z3*>RmOGEf3u`QfZmEl9NIEC(f0D2$CfB2`>jF%lzIhvGN3Z?6VnkGV~6>Y3EMsT?L zokGA=qpj!#==Yi#fGX^Yf3^F_-gE>gt;e%lw6iP)%App2=wN}Va{HVQ-qO2aT9C0j zlS(6vWZ?QIwLP$z^h4ub?cWs6ry62X`vsgj!c~mt5xk2tzRgd{m|pQQXY{f!H%@dJ z$F2WWe|0;NUpCnQo42T*T51b|7F5FK8&PJ~&6Op7O_lMVzpO|JctNs$KD(iv+;jdp zU0;OGCu}@xE<2wJzC}GbJkjX;)9G!d&dg?TP{dZT1FPM>L-)U}d;jx;b{HJh>6Y3C zHyFS4$GWK#g$1Bp5rC=}j(cyEmf#5i2Q7~v!EVLLHnclwfQb?)ygTVZYZcbA(71o;th{MiJqbll zbjoX{tnwXu_JsdJTH-k`+_DWwGsnlJyL0%HL3OZ>h2uo$?={l}(V_2>63B$=fT0Hh zpV8Bhq|d_f7o!lIwQaAXH+(-NW=ba!ja&%j#`9Nkx8^VR#KGIH+DLmjM*vcprA(B+ zb(R~Vmu77teklzNi7Wev4bO4!@|sNUlBS@ARf{18t;_SYN)J2B5>L(IV7xE5L8z*8 zBn5s6cAb0+qNED%9#h$KDHAkF)!A)Iob+ict7pU=`s1xQ6m=jZ-1?Y7@AbX9_n&VX zu)#LsnfOI3%UWNYP0XqZ+v*%dL8sKKaxu=0c^6)Q-g#A=cB!n$@ikG*f>b^=vML;S z{(Qtb=%eE-;AJuhsvPn+Q}B^h;=ULxx1rAiS%)DVe&k0BcgEW<1eX^TDS6a3zA!fwzQXw zjrnYJ_lZ-R?%5@Fb|5oXw%5Wr>W98}qY06E#AHTJsNI;hRfCzRz;gLI(-9(av&qKn z>vQwc^u+$cyG_4u;k0tq+}F6sa%$V|6l9;M?#FBO&{SjwBoldhb0>0lUm>f6LZNKA z{iDZ5AN99~QV4CO+uS*Y9exwf)8Cvc8VJb__L<1%hkZ1l-fh#WHPwDe)Mz}Rcr$Zh zN50H#Z-It%J#G7TVdkYPO+99bSBYV1tGQ1InBYf_%Ve4l$^7eqIVI?n3r=}e{UT5L zTjwVeg7@R^Je;Gi70jGGx3Tyl^1&{VLsxbIL(_zqMp{$UX;#ysGKEugv;%GdpCWke8A^^X{N_GrPEl zt8r`q867EY+iKQy7Z0ow7VCzlBa1jctP-`3??=C+^_t7MS`A(^j|B6F=667LS$FRf|H92gdZmFA|peKzrX97pU)?)Ih<4&gFoFRZb)l6^62cF6jf)Un_}~n zE)T;q9lH=X@*r`+!bMBuS8dpR=`)SXatFIJBLARKWsOYg6d!p$FcPzfH6ibnNO4FN zmon1{yY{A+5UNxbHXEt(64|5maq0>|v-g?E@<6V60 zQ|l$jwuPeNj48Wlz1bbp?BCH}EbL1so~DQHc<0x;)tStQ%94m!qROPx)Yqp&vwN>A z*Im}nbtboAMl}@j9I8q?&Koc^ew*PKQm3+Hqk0yzqXmT-W^)_`@-Lr#-6uGhu7(iF zUmWQ_-`@RvbqKQL_4yd5Vpul%P9(}yQ9*fFOq~^sAcaqpth06~_w?lvN;)s@{5ln1 z!YT0Fb&TbvELnNO)7#Q@=b}d?nmkOW)J~4u<4Lu(&lNh8W*=}5Rru6fqmpM97H<4L zE5k$EWlidj?J5b|35yMfLU0Bt>s-c#7F~v;mSn>9W_1OASDlke`VLHbs=&4@BWg;a zrlmU#%?lWhkFuvtsmb;|8zrCj%0bCmMOS;R*1S6NaH!YuwMFO})cdCa&)DwkFzG%; zs2mUb57$vovcyCpkrPZ13!M+jxhsa3<>!wysYlH4sf5}77Fjv%QOwrQ_Whp`F-Mg- z5C1ZZ-;!wcxgqkexL+15vXJo9XBx}#>S$wX@%RYRun6sWDWb*2saq74mzR5(?qwBR z!I3+>u?Y);i?HP2GhH`aFK7&6wjb3wAtK)J*SW$@!l1Rk$_l;qo62)~{Q3}NI+v`v zr|pr`_-`rq+GfqkC^z>brgTkfE%B+>yF*T?VK)pG@y?gazg^kXJob~npRY{XFxgH*KVCQ9ZW zGiJ~ixF*b)YM6;55nN)Yu!+0H?%^3#x%|mzB|ce>^^q-VFND}Y_sQxv-{bMajSUUq zJ1s1tdb?jldt?v>v&9)vvr{f9lruJS$BMbxcVfDqxr^lYSM>fTt|QgUDktl5y3G7U zGi0KXpUB2K-DDzug%5=($X;P@l~$b8GbsJx{Z9Kn;tdUlAO--=>7*|g?AaYwoNVG+SBgNxo4@$ z)6(Fh@xKJ=^aWt*Iv%4UFn+6+UkDb-De0;ki$=(5QN7tN=2P!Aa5B#CHtI4avZ^L8 zsovz9xdz^)YBWldbDcAqQ}&t6^sixuG}L@AM`4179MxwhTUV>6Nd)Su7LigtJuI@i zUrQM4lU0<%;2SumI#w7m1qYTK(Qe$A`K~eFE4ZMxDmR(Av0KH$L+e&(x2P<uJ&P{E0$Z?Xk%<&bS#Uh^OC95O0uKtOU+IwtE*GjSX|2AZfsm$ z?BOXczuw2|3LPJ%N6ifFXqHNb6VzrxLv_ObIwgNPaH;N6Qsf6|MJ0-{W$q9z)*9)| zAx8vXxG>O@*sNz>P+2Lhk-U1vl1L=1SG5yU2l;%ZtL&#c=?`kZW!D~HKeWT`+{Au% zJpQfMD94aSHY_^FYaueRUwhmwRrOevTXk>yFjB0)NP+f}rh-1M8K$5@jye*AUdk#6 zrqVoun4_$)e0|=bhE)Bl>G+-INnJv&blctzrDsjaML7i~L1v3PjK8d?dQWe!_xEm$ zjjbE!RC&;Y50j8ZG2)@|hVcQKqS^Q?>*185T9~Nd1G2u9rT0_9>^yl}cde$2cGqJH zuXJuuySul_B)4%HE+!P;!SMky(F{N7bx>Q|Mu%uTmb{|6-R+uiMWgkhLp4{}f|I{g z6x=(bbU)9-*T7ys!6s>ALiZ3l!pc-tsw*F%IDC#duH|*x%{Q%LFYmx{TiuETqRXU8 z9y6#Ce?8rck{&X>JbJ-wYM?;g6E(nJ;X$udsjm+5F_!rg_qkS_jK!R2A~iHM5#LjB zU9sh~<+2LjvpoVNQ7XDbPH|SI}{`1ARRwLM{@2NxyRamj8U8E!p-?`^P|x|<&f9x9jW&+Q1lAQDf`I!4`u>>?XukWe6o8xhu(YOV;n#&aZZ-@e0%G$Uq z4F6qyk4U-A_#&JSEyDfESj?GUq-P^?KRV^MrqQRAOKU^#?QZh-Q8Ll{s}JY!FIz*&R{o>m6PZ|9u}aQw zbo^55#}#X{rL5i#jNjc8<(&jum6=Qu3bmg9>NVSx)aI3Elyy=8W38>r83^(kUHWSC zvo`Oz;pdEmVUwR{OZH2H>07t7k70ujTVrolN8$X%9~}ZnLS*%KAb~&#J$<^TMkCSG zKRhyW_5(7J+LPBZ9du~!^P=2g*N=jc=*fO!>OAB5X!m=YD2ctcwpUnc3QE!WAcNHF;)gtq`#`W)f{%%c`_=Di;SRJ@{BFM;i>e(b z2zPQy^5hrLdpT9^RoKKQoRG73`AS=wbdJ6JkmN~H7}V!DRaP`TPLF%H$=3oGpCt%Sk!H|Q#vzz)p1EqPG0{l z8)j^QV|L+MvrT`ne~K)4P3SA$(Tdg@syq2{2s1IHzERrV=bm%wQq4~+rP5&`$E@U? zw}HcLr8;7#*~FU~Qf$2Zd0eY!d{ZkYyTt6+F_dCsv!0Mi!A(3)#Y)It#N$i<_i6Mq ziPL+vX4hg|j@_J)KJ}>KS0Nwb4QIV00wX*l+#);!14CtmPR<0I&YEV2taSCIR z%SDFM+@LD^p>ttT<3q|D`K-0#BdTkzy_gDZrcDdU->T)L^FCP0X7PQ?I+gl;N|=Jt zaE^PXpB7*L7CI+`_ms&#xhE|1_czIf8ZFMs%$rQF=ElY779VwKj`x zQj(HtL~P4&6GmE-tk5R1uwIWku>*^FfRY zz`n5JJk@~w!~#OtlP9TSbyk#*yXW9-&!P^m5{HR0>d7OO?Pi4W{${d?Wzu{-GWSu< z*Y%$v1|K-j2$(nb{N?P$Jjo3r50MA3pa2wr0#E=7K*4`XK|>EE>d#sL&

mUVz9$ zC;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7KmjNK1)u;F zfC5ke3P1rU00p1`6o3Ly017|>DENCS=$3UnT)c1r^0z_8*tg%eyZZ8Cxs|F$(10Mo zNB{+(02F`%Pyh-*0Vn_kpa2y7-4&ePB_Hr-EdcnX4ATWLX95a90Vn_kpa2wr0#E=7 zKmjNK1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zKmjNK1)u;FfC5ke3P1rU00p4n->0B@C0hPdU7!V1RD-=&AoBmd$V2fZs6Yi}xIh6Y z`0rP6Yss?WKWhQ}_kUaXhLBYttAGMf017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zKmjNK1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zKmjNK1)u;FfC5ke3jY5qh{pUnwqOB@@Z%4A>{k9QiZxvd>Oc9ZM3Cz(>V)Rx+Pz<_ zSpS`C^`(W2p#edFkpK!n0Vn_kpa2wr0#E=7KmjNK1)u;FfC5ke3P1rU_`gz6ZN6&c Y*9|h-t#i4b=A?hLwEls#*Y(Oj0AsEDfB*mh literal 0 HcmV?d00001 diff --git a/renovate.json b/renovate.json new file mode 100644 index 0000000..7190a60 --- /dev/null +++ b/renovate.json @@ -0,0 +1,3 @@ +{ + "$schema": "https://docs.renovatebot.com/renovate-schema.json" +} diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..207a18e --- /dev/null +++ b/requirements.txt @@ -0,0 +1,7 @@ +ansible-lint==24.6.0 +ansible==10.1.0 +molecule-containers==2.0.0 +molecule==24.6.0 +netaddr==1.3.0 +pip==24.0 +requests==2.31 # Fix for not being able to run 'molecule test' using docker on mac. Issue: https://github.com/docker/docker-py/issues/3256 diff --git a/scripts/run.zsh b/scripts/run.zsh new file mode 100755 index 0000000..51abe01 --- /dev/null +++ b/scripts/run.zsh @@ -0,0 +1,497 @@ +#!/bin/zsh +node="bootnode-1" +network="devnet-0" +domain="ethpandaops.io" +prefix="devnet" +sops_name=$(sops --decrypt ../ansible/inventories/$network/group_vars/all/all.sops.yaml | yq -r '.secret_nginx_shared_basic_auth.name') +sops_password=$(sops --decrypt ../ansible/inventories/$network/group_vars/all/all.sops.yaml | yq -r '.secret_nginx_shared_basic_auth.password') +sops_mnemonic=$(sops --decrypt ../ansible/inventories/$network/group_vars/all/all.sops.yaml | yq -r '.secret_genesis_mnemonic') +bn_endpoint="${BEACON_ENDPOINT:-https://$sops_name:$sops_password@bn.$node.$prefix-$network.$domain}" +rpc_endpoint="${RPC_ENDPOINT:-https://$sops_name:$sops_password@rpc.$node.$prefix-$network.$domain}" +bootnode_endpoint="${BOOTNODE_ENDPOINT:-https://bootnode-1.$prefix-$network.$domain}" + +# Helper function to display available options +print_usage() { + echo "Usage:" + echo " ./run.zsh [command]" + echo + echo "Available commands:" + echo " genesis Get the genesis block" + echo " validators Get the validator ranges" + echo " latest_root Get the latest root" + echo " latest_slot Get the latest slot" + echo " latest_slot_verbose Get the latest slot with verbose output" + echo " latest_block Get the latest block" + echo " get_slot n Get the slot number n [default head]" + echo " get_block n Get the block number n [default latest]" + echo " get_balance address Get the balance of address - mandatory argument" + echo " finalized_epoch Get the finalized epoch" + echo " finalized_slot Get the finalized slot" + echo " finalized_slot_verbose Get the finalized slot with verbose output" + echo " finalized_slot_exec_payload Get the finalized slot execution payload" + echo " epoch_summary n Get the epoch summary for epoch n [default current - 1 epoch]" + echo " get_slot_for_blob txhash Get the slot for a given blob given txhash, or send blob now" + echo " get_slot_for_blob_verbose txhash Get the slot for a given blob with verbose output given txhash, or send blob now" + echo " get_block_for_slot n Get the block for a given slot - mandatory argument" + echo " whose_validator_for_slot n Get the validator for a given slot "n" - mandatory argument" + echo " get_enrs Get the ENRs of the network" + echo " get_enodes Get the enodes of the network" + echo " get_peerid Get the peerid of the network" + echo " get_rpc Get the rpc of the network" + echo " get_beacon Get the beacon of the network" + echo " get_inventory Get the inventory of the network" + echo " fork_choice Get the fork choice of the network" + echo " send_blob n Send "n" number of blob(s) to the network [default 1]" + echo " deposit s e Deposit to the network from validator index start to end - mandatory argument" + echo " exit s e Exit from the network from validator index start to end - mandatory argument" + echo " set_withdrawal_addr s e address Set the withdrawal credentials for validator index start (mandatory) to end (optional) and Ethereum address" + echo " full_withdrawal s e Withdraw from the network from validator index start to end - mandatory argument" + echo " help Print this help message" + echo "" + echo " To use an alternative endpoint run the script by setting the environment variable:" + echo " BEACON_ENDPOINT=https://bn.alternative.beacon.endpoint \\" + echo " RPC_ENDPOINT=https://rpc.alternative.rpc.endpoint \\" + echo " BOOTNODE_ENDPOINT=https://bootnode.alternative.endpoint \\" + echo " ./run.zsh [command]" + echo +} + +# Store the command in an array +command=("$@") + +# Check if no command are provided +if [[ $# -eq 0 ]]; then + echo "Please provide at least one argument." + print_usage + exit 1 +fi + +# Loop through each argument +for arg in "${command[@]}"; do + case $arg in + "genesis") + # Get the genesis block of the network + genesis=$(curl -s $bn_endpoint/eth/v1/beacon/genesis | jq .data) + echo "Genesis Block: $genesis" + ;; + "validators") + # Get the validators of the network + validators=$(curl -s $bootnode_endpoint/meta/api/v1/validator-ranges.json | jq .ranges) + echo "Validator ranges: $validators" + ;; + "latest_root") + # Get the latest root of the network + latest_root=$(curl -s $bn_endpoint/eth/v1/beacon/states/head/root | jq .data.root) + echo "Latest Root: $latest_root" + ;; + "latest_slot") + # Get the latest slot of the network + latest_slot=$(curl -s $bn_endpoint/eth/v1/beacon/headers/head | jq .) + echo "Latest Slot: $latest_slot"\ + ;; + "latest_slot_verbose") + # Get the latest slot of the network + latest_slot=$(ethdo --connection=$bn_endpoint block info --verbose ) + echo "Latest Slot: $latest_slot" + ;; + "latest_block") + # Get the latest block of the network + latest_block=$(curl -s --data-raw '{"jsonrpc":"2.0","method":"eth_getBlockByNumber", "params":["latest"], "id":0}' $rpc_endpoint | jq .) + echo "Latest Block: $latest_block" + ;; + "get_slot") + if [[ -z "${command[2]}" ]]; then + echo "Please provide a slot number as the second argument, or get the latest slot" + echo " Example: ${0} get_slot 100" + # since none is provided, get latest slot + ${0} latest_slot + exit; + else + slot=${command[2]} + # Get the slot specified on the network + get_slot=$(curl -s $bn_endpoint/eth/v2/beacon/blocks/${slot} | jq .) + echo "$get_slot" + exit; + fi + ;; + "get_block") + # Get a specific block of the network + if [[ -z "${command[2]}" ]]; then + echo "Please provide a block number as the second argument, or get the latest block" + echo " Example: ${0} get_block 100" + ${0} latest_block + exit; + else + block=${command[2]} + hex_block=$(printf "%x\n" $block) + get_block=$(curl -s --data-raw '{"jsonrpc":"2.0","method":"eth_getBlockByNumber", "params":["0x'${hex_block}'"], "id":0}' $rpc_endpoint | jq .) + echo "Block $block: $get_block" + exit; + fi + ;; + "get_balance") + # Get a specific block of the network + if [[ -z "${command[2]}" ]]; then + echo "Please provide a address as the second argument" + echo " Example: ${0} get_balance 0xf97e180c050e5ab072211ad2c213eb5aee4df134" + exit; + elif [[ (${#command[2]} == 42) && (${command[2]} == 0x*) ]]; then + balance=$(curl -s --header 'Content-Type: application/json' --data-raw '{"jsonrpc":"2.0","method":"eth_getBalance", "params":["'${command[2]}'","latest"], "id":0}' $rpc_endpoint | jq -r '.result' | python -c "import sys; print(int(sys.stdin.read(), 16) / 1e18)") + echo "balance ${command[2]}: $balance Ether" + exit; + else + echo "You did not provide a valid address as the second argument" + echo " Example: ${0} get_balance 0xf97e180c050e5ab072211ad2c213eb5aee4df134" + exit; + fi + ;; + "finalized_epoch") + # Get the finalized slot of the network + finalized_epoch=$(ethdo --connection=$bn_endpoint chain status --verbose | awk '/Finalized epoch:/{print $NF}') + echo "Finalized epoch: $finalized_epoch" + ;; + "finalized_slot") + # Get the finalized slot of the network + finalized_epoch=$(ethdo --connection=$bn_endpoint chain status --verbose | awk '/Finalized epoch:/{print $NF}') + finalized_slotnum=$((finalized_epoch * 32)) + echo "Finalized slot: $finalized_slotnum" + ;; + "finalized_slot_verbose") + # Get the finalized slot of the network + finalized_epoch=$(ethdo --connection=$bn_endpoint chain status --verbose | awk '/Finalized epoch:/{print $NF}') + finalized_slotnum=$((finalized_epoch * 32)) + block_info=$(ethdo --connection=$bn_endpoint block info --blockid $finalized_slotnum --verbose) + echo "Finalized slot:\n$block_info" + ;; + "finalized_slot_exec_payload") + # Get the finalized slot of the network + finalized_epoch=$(ethdo --connection=$bn_endpoint chain status --verbose | awk '/Finalized epoch:/{print $NF}') + finalized_slotnum=$((finalized_epoch * 32)) + block_info=$(ethdo --connection=$bn_endpoint block info --blockid $finalized_slotnum --verbose) + execution_payload=$(echo "$block_info" | awk '/Execution payload/ {flag=1; next} flag && /^[[:blank:]]+/ {print}') + echo "Finalized slot exec payload:\n$execution_payload" + ;; + "epoch_summary") + # Get the epoch summary of the network + #if second arg is not provided, get the current - 1 epoch, else query the specific epoch + if [[ -z "${command[2]}" ]]; then + current_epoch=$(ethdo --connection=$bn_endpoint epoch summary | awk -F'[: ]' '/Epoch/{print $2}') + last_epoch=$((current_epoch - 1)) + echo "Last epoch: $last_epoch" + epoch_summary=$(ethdo --connection=$bn_endpoint epoch summary --epoch $last_epoch) + echo "Epoch Summary: $epoch_summary" + else + epoch_summary=$(ethdo --connection=$bn_endpoint epoch summary --epoch ${command[2]}) + echo "Epoch Summary: $epoch_summary" + exit; + fi + ;; + "get_slot_for_blob") + # Get the slot for a given blob + if [[ -z "${command[2]}" ]]; then + echo "Please provide a blob tx hash as the second argument or send a blob now" + echo "Would you like to send a blob right now? (y/n)" + read -r response + if [[ $response == y ]] + then + echo "Sending single blob to the network" + blob_hash=$(${0} send_blob 1 | awk '/Result:/{print $NF}' | awk -F ':' '{print $2}') + echo $blob_hash + echo "Waiting for blob to be included in a block (sleeping 30 seconds)" + sleep 30 + ${0} get_slot_for_blob $blob_hash + exit; + else + echo "Exiting without sending a blob to the network" + exit; + fi + exit; + else + blob=${command[2]} + block_hash=$(curl -s -X POST -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","method":"eth_getTransactionByHash","params":["'$blob'"],"id":0}' $rpc_endpoint | jq .result.blockHash) + get_block_timestamp=$(curl -s -X POST -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","method":"eth_getBlockByHash","params":['$block_hash',false],"id":0}' $rpc_endpoint| jq -r .result.timestamp ) + slot=$(ethdo --connection=$bn_endpoint block info --block-time=$get_block_timestamp | awk '/Slot/{print $NF}') + echo "Slot for blob $blob: $slot" + exit; + fi + ;; + "get_slot_for_blob_verbose") + # Get the slot for a given blob + if [[ -z "${command[2]}" ]]; then + echo "Please provide a blob tx hash as the second argument or send a blob now" + echo "Would you like to send a blob right now? (y/n)" + read -r response + if [[ $response == y ]] + then + echo "Sending single blob to the network" + blob_hash=$(${0} send_blob 1 | awk '/Result:/{print $NF}' | awk -F ':' '{print $2}') + echo "Waiting for blob to be included in a block (sleeping 30 seconds)" + sleep 30 + ${0} get_slot_for_blob_verbose $blob_hash + exit; + else + echo "Exiting without sending a blob to the network" + exit; + fi + exit; + else + blob=${command[2]} + block_hash=$(curl -s -X POST -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","method":"eth_getTransactionByHash","params":["'$blob'"],"id":0}' $rpc_endpoint | jq .result.blockHash) + get_block_timestamp=$(curl -s -X POST -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","method":"eth_getBlockByHash","params":['$block_hash',false],"id":0}' $rpc_endpoint | jq -r .result.timestamp) + slot=$(ethdo --connection=$bn_endpoint block info --block-time=$get_block_timestamp) + echo "Slot for blob $blob: $slot" + exit; + fi + ;; + "get_block_for_slot") + # Get the block for a given slot + if [[ -z "${command[2]}" ]]; then + echo "Please provide a slot number as the second argument" + echo " Example: ${0} get_block_for_slot 100" + exit; + else + slot=${command[2]} + block_number=$(curl -s $bn_endpoint/eth/v2/beacon/blocks/$slot | jq -r '.data.message.body.execution_payload.block_number' ) + if [[ $block_number == null ]]; then + echo "Block for slot $slot has not been produced" + echo "Would you like to look for the next block? (y/n)" + read -r response + if [[ $response == y ]] + then + slot=$((slot + 1)) + echo "Looking for the next block for slot $slot" + ${0} get_block_for_slot $slot + exit; + else + echo "Exiting without looking for the next block" + exit; + fi + exit; + fi + echo "Block is $block_number for slot $slot" + exit; + fi + ;; + "whose_validator_for_slot") + # Get validator for specific slot + if [[ -z "${command[2]}" ]]; then + echo "Please provide a slot number as the second argument" + echo " Example: ${0} whose_validator_for_slot 100" + exit; + else + slot=${command[2]} + proposer_index=$(ethdo --connection=$bn_endpoint proposer duties --slot=$slot | grep -oE '[0-9]+') + curl -s $bootnode_endpoint/meta/api/v1/validator-ranges.json | jq .ranges | jq -r 'to_entries[] | "\(.key | split("-") | .[0]),\(.key | split("-") | .[1] | tonumber - 1),\(.value)"' > validator.csv + declare -A validators + while IFS="," read -r low high whose + do + for i in $(seq ${low} ${high}) + do + validators["${i}"]="${whose}" + done + done < validator.csv + echo ${validators["$proposer_index"]} + rm validator.csv + exit; + fi + ;; + "get_enrs") + # Get the ENRs of the network + curl -s https://config.$prefix-$network.$domain/api/v1/nodes/inventory | jq -r '.ethereum_pairs[] | .consensus.enr' + ;; + "get_enodes") + # Get the enodes of the network + curl -s https://config.$prefix-$network.$domain/api/v1/nodes/inventory | jq -r '.ethereum_pairs[] | .execution.enode' + ;; + "get_peerid") + # Get the peerid of the network + curl -s https://config.$prefix-$network.$domain/api/v1/nodes/inventory | jq -r '.ethereum_pairs[] | .consensus.peer_id' + ;; + "get_rpc") + # Get the rpc of the network + curl -s https://config.$prefix-$network.$domain/api/v1/nodes/inventory | jq -r '.ethereum_pairs[] | .execution.rpc_uri' + ;; + "get_beacon") + # Get the beacon of the network + curl -s https://config.$prefix-$network.$domain/api/v1/nodes/inventory | jq -r '.ethereum_pairs[] | .consensus.beacon_uri' + ;; + "get_inventory") + # Get the inventory of the network + curl -s https://config.$prefix-$network.$domain/api/v1/nodes/inventory | jq -r '.ethereum_pairs[]' + ;; + "fork_choice") + # Get the fork choice of the network + curl -s $bn_endpoint/eth/v1/debug/fork_choice | jq '.fork_choice_nodes | .[-1]' + ;; + "send_blob") + # Get a private key from a mnemonic + privatekey=$(ethereal hd keys --path="m/44'/60'/0'/0/7" --seed="$sops_mnemonic" | awk '/Private key/{print $NF}') + if [[ -z "${command[2]}" ]]; then + # sending only one blob + echo "Sending a blob" + blob=$(docker run --platform linux/x86_64 --rm ghcr.io/flcl42/send-blobs:latest $rpc_endpoint 1 "$privatekey" 0x000000000000000000000000000000000000f1c1 | awk '/Result:/{print $NF}' | awk -F ':' '{print $2}') + echo "Blob submitted with hash $blob" + echo "Would you like to check which slot the blob was included in? (y/n)" + read -r response + if [[ $response == y ]] + then + echo "Waiting for blob to be included in a block (sleeping 10 seconds)" + sleep 10 + ${0} get_slot_for_blob $blob + exit; + fi + exit; + else + echo "Sending ${command[2]} blobs" + docker run --platform linux/x86_64 --rm ghcr.io/flcl42/send-blobs:latest $rpc_endpoint ${command[2]} "$privatekey" 0x000000000000000000000000000000000000f1c1 + exit; + fi + ;; + "deposit") + if [[ $# -ne 3 ]]; then + echo "Deposit calls for exactly 2 arguments!" + echo " Usage: ${0} deposit startIndex endIndex" + echo " Example: ${0} deposit 0 10" + exit; + else + deposit_path="m/44'/60'/0'/0/7" + privatekey=$(ethereal hd keys --path="$deposit_path" --seed="$sops_mnemonic" | awk '/Private key/{print $NF}') + publickey=$(ethereal hd keys --path="$deposit_path" --seed="$sops_mnemonic" | awk '/Ethereum address/{print $NF}') + fork_version=$(curl -s $bn_endpoint/eth/v1/beacon/genesis | jq -r '.data.genesis_fork_version') + deposit_contract_address=$(curl -s $bn_endpoint/eth/v1/config/spec | jq -r '.data.DEPOSIT_CONTRACT_ADDRESS') + eth2-val-tools deposit-data --source-min=${command[2]} --source-max=${command[3]} --amount=32000000000 --fork-version=$fork_version --withdrawals-mnemonic="$sops_mnemonic" --validators-mnemonic="$sops_mnemonic" > deposits_$prefix-$network-${command[2]}_${command[3]}.txt + # ask if you want to deposit to the network + echo "Are you sure you want to make a deposit to the network for validators ${command[2]} to ${command[3]}? (y/n)" + read -r response + if [[ $response == "y" ]]; then + while read x; do + account_name="$(echo "$x" | jq '.account')" + pubkey="$(echo "$x" | jq '.pubkey')" + echo "Sending deposit for validator $account_name $pubkey" + ethereal beacon deposit \ + --allow-unknown-contract=true \ + --address="$deposit_contract_address" \ + --connection=$rpc_endpoint \ + --data="$x" \ + --value="32000000000" \ + --from="$publickey" \ + --privatekey="$privatekey" + echo "Sent deposit for validator $account_name $pubkey" + sleep 5 + done < deposits_$prefix-$network-${command[2]}_${command[3]}.txt + exit; + else + echo "Exiting without depositing to the network" + exit; + fi + fi + ;; + "exit") + # if I have 1 argument, then use that as the validator index, else use second and third in a loop + # if there are less than 2 arguments, then exit + if [[ $# -lt 2 ]]; then + echo "Exit calls for at least one arguments and at most two!" + echo " Usage: ${0} exit startIndex (endIndex)" + echo " Example: ${0} exit 10" + echo " Example: ${0} exit 0 10" + exit; + else + if [[ -n "${command[3]}" ]]; then + echo "Exiting validators from ${command[2]} to ${command[3]}" + if [[ ! -f offline-preparation.json ]]; then + ethdo validator exit --prepare-offline --connection=$bn_endpoint --timeout=300s + else + echo "offline-preparation.json already exists, remove it to prepare a new one" + fi + echo "[" > exit.json + for i in $(seq ${command[2]} ${command[3]}) + do + echo "Exiting validator $i" + ethdo validator exit --offline --mnemonic="$sops_mnemonic" --path="m/12381/3600/$i/0/0" + cat exit-operations.json >> exit.json + if [[ $i -ne ${command[3]} ]]; then + echo "," >> exit.json + fi + + done + echo "]" >> exit.json + mv exit.json exit-operations.json + ethdo validator exit --connection=$bn_endpoint --timeout=300s + echo "validator exit submitted for validators ${command[2]} to ${command[3]}" + exit; + else + echo "Exiting validator ${command[2]}" + ethdo validator exit --mnemonic="$sops_mnemonic" --connection=$bn_endpoint --offline --path="m/12381/3600/${command[2]}/0/0" + echo "validator $i exit submitted" + exit; + fi + exit; + fi + ;; + "set_withdrawal_addr") + if [[ $# -ne 4 ]]; then + echo "setting calls for exactly 3 arguments!" + echo " Usage: ${0} set_withdrawal_addr startIndex endIndex address" + echo " Example: ${0} set_withdrawal_addr 0 10 0xf97e180c050e5Ab072211Ad2C213Eb5AEE4DF134" + exit; + else + echo "Setting withdrawal credentials for validators ${command[2]} to ${command[3]} to address ${command[4]}" + # generate the withdrawal credentials + for i in $(seq ${command[2]} ${command[3]}) + do + ethdo --connection=$bn_endpoint validator credentials set --mnemonic="$sops_mnemonic" --path="m/12381/3600/$i/0/0" --withdrawal-address="${command[4]}" + echo "Withdrawal credentials set for validator $i" + done + exit; + fi + ;; + "full_withdrawal") + if [[ $# -ne 3 ]]; then + echo "withdrawal calls for exactly 2 arguments!" + echo " Usage: ${0} full_withdrawal startIndex endIndex" + echo " Example: ${0} full_withdrawal 0 10" + exit; + else + # create folder for withdrawal data + mkdir -p /tmp/full_withdrawal + + ethdo wallet create --base-dir=/tmp/full_withdrawal --type=hd --wallet=withdrawal-validators --mnemonic=$sops_mnemonic --wallet-passphrase="superSecure" --allow-weak-passphrases + echo "Local wallet has been created to process mnemonic and withdrawal data" + + # ask if you want to do a full withdrawal to the network + echo "Are you sure you want to make a full withdrawal to the network for validators ${command[2]} to ${command[3]}? (y/n)" + read -r response + if [[ $response == "y" ]]; then + # Loop through all the validator indexes that want to be withdrawn + for i in $(seq ${command[2]} ${command[3]}) + do + # Create an account from previous wallet, this will basically be the derivation path pub/private keypair + ethdo account create --base-dir=/tmp/full_withdrawal --account=withdrawal-validators/$i --wallet-passphrase="superSecure" --passphrase="superSecure" --allow-weak-passphrases --path="m/12381/3600/$i/0/0" + + # Create JSON exit data and for earlier specified account and store it in disk + ethdo validator exit --base-dir=/tmp/full_withdrawal --json --account=withdrawal-validators/$i --passphrase="superSecure" --connection=$bn_endpoint > /tmp/full_withdrawal/withdrawal-$i.json + echo "generated exit data for validator number $i , now exiting..." + ethdo validator exit --signed-operations=$(cat /tmp/full_withdrawal/withdrawal-$i.json) --connection=$bn_endpoint + done + # Cleanup wallet as its no longer needed + ethdo wallet delete --base-dir=/tmp/full_withdrawal --wallet=withdrawal-validators + else + echo "Exiting without withdrawal to the network" + exit; + fi + + # deleting stale files + rm -rf /tmp/set_withdrawal_addr + echo + fi + ;; + "help") + print_usage "${command[@]}" + ;; + + *) + echo "Invalid argument: $arg" + print_usage "${command[@]}" + ;; + esac +done diff --git a/scripts/split-calculator.py b/scripts/split-calculator.py new file mode 100644 index 0000000..910bfd4 --- /dev/null +++ b/scripts/split-calculator.py @@ -0,0 +1,55 @@ +import numpy as np +import math + +total_validators = 10000 +validator_per_machine = 250 +start = 0 + +cl_split = { + 'prysm': 0.25, + 'lighthouse': 0.25, + 'teku': 0.20, + 'lodestar': 0.10, + 'nimbus': 0.10, + 'grandine': 0.10 +} + + +el_split = { + 'geth': 0.50, + 'nethermind': 0.25, + 'ethereumjs': 0.01, + 'reth': 0.08, + 'besu': 0.08, + 'erigon': 0.07, + 'nimbusel': 0.01, +} + +pairwise_validators = {} + +for cl_name, cl_percent in cl_split.items(): + for el_name, el_percent in el_split.items(): + validators = total_validators * cl_percent * el_percent + pairwise_validators[(cl_name, el_name)] = validators + +output = "" +for (cl, el), count in pairwise_validators.items(): + + variable_name = f"{cl.lower()}_{el.lower()}" + name = f"{cl.lower()}-{el.lower()}" + machine_count = math.ceil(count / validator_per_machine) + + end = start + int(count) + + output += f'variable "{variable_name}" {{\n' + output += f' default = {{\n' + output += f' name = "{name}"\n' + output += f' count = {machine_count}\n' + output += f' validator_start = {start}\n' + output += f' validator_end = {end}\n' + output += f' }}\n' + output += f'}}\n\n' + + start = end + +print(output) diff --git a/setup.sh b/setup.sh new file mode 100755 index 0000000..251a9da --- /dev/null +++ b/setup.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# Plugin list +asdf plugin add age https://github.com/threkk/asdf-age.git +asdf plugin add shellcheck https://github.com/luizm/asdf-shellcheck.git +asdf plugin add sops https://github.com/feniix/asdf-sops.git +asdf plugin add terraform https://github.com/asdf-community/asdf-hashicorp.git +asdf plugin-add helm https://github.com/Antiarchitect/asdf-helm.git +asdf plugin-add python +asdf plugin-add yq https://github.com/sudermanjr/asdf-yq.git + +asdf install + +# Install python tools +pip install -r requirements.txt diff --git a/terraform/devnet-0/.terraform.lock.hcl b/terraform/devnet-0/.terraform.lock.hcl new file mode 100644 index 0000000..0df7c15 --- /dev/null +++ b/terraform/devnet-0/.terraform.lock.hcl @@ -0,0 +1,90 @@ +# This file is maintained automatically by "terraform init". +# Manual edits may be lost in future updates. + +provider "registry.terraform.io/cloudflare/cloudflare" { + version = "3.35.0" + constraints = "~> 3.0" + hashes = [ + "h1:pn9uUSAuIE8XgqJuZ9fOs98bRN9qw4o0JHFgmwtbMyI=", + "zh:13aabc00fee823422831bcc870227650cc765fc4c9622074d24d6d62a4ac0e37", + "zh:1544405f0ea6b388dad7eb25c434427b2682417396da9186e1b33551e6b4adff", + "zh:5d58394cb8e71bd4bf6ef0135f1ca6a4ad2cec937f3731b224125eb34ee059f7", + "zh:648596ed545ed01ae757d5a0b37c20e8050cfb51d42e9a2c82fcc94d883ff11d", + "zh:68d75e14eef4f073faa975ed6baf4db7e0e1f2fc61a4e54fd95325df42793810", + "zh:890df766e9b839623b1f0437355032a3c006226a6c200cd911e15ee1a9014e9f", + "zh:9916cc626fef57428c4c60db7897b34068c65639b68482e94f62d97d773d64bc", + "zh:9c8c9f369eb30e7360a0ebd7918e4846ca4d5bca430b861fdbde7522a3146459", + "zh:a40e244688bbcb6f1a771e6ea89fb0b0b7bb53be3fab718abc66b3593e0f8133", + "zh:cc5a6191aa8713275550ff2b6adda6e6d56e4780c9cbe3d1da1dc23ea893bfff", + "zh:d1dd435780e8c7e79bff26b46a76df0e123971849355ad17877d1e24dc5953c3", + "zh:d751fc72f2833f2bdb897fa89de2bb5b6efbad1e648896642f0e6fe5cde789c8", + "zh:dfc4c90b3605ec1bb7cc7a9f1fb1b67235578bdd6b9be78e7b3516b55d0422db", + "zh:e6101a80fe24e2df3ab60152458ff1666a4a1befc87c62e459a219cdbb53e6df", + "zh:e9bcf26c44dd231f74703b6a6717470021a3ba7e1d7531dcf7287a6441300e27", + ] +} + +provider "registry.terraform.io/digitalocean/digitalocean" { + version = "2.29.0" + constraints = "~> 2.28" + hashes = [ + "h1:mJrr4YaOsB7bWfCSJZneiXB6JMnVNnFxYRmQ8vKaOSQ=", + "zh:0af0a1a2de818c5dc8ee7ad4dc4731452848e84cfa0c1ce514af1c7aad15c53c", + "zh:27229f3162b4142be48554f56227265982f3b74e4c79fa5d2528c8a3912d1e19", + "zh:31d6e73bfe12231fa0ab3bbeef0e4aa9822a2008ae2a1a8b22557bdada4af7a3", + "zh:6e7417413e96b87a11d47e9acbc88e6d707a6ab23a7de6b584fc600d9d3cbf00", + "zh:9faf40798a698b80e8d56e502c220856d2d5f55d5137b9cf5371f2fdaeadd70a", + "zh:b9ab9caf21b3f928fdd891e749fd8d33f6d441b39a08d725edf58cf8027a9b7b", + "zh:be32b3a35474f8acbab4d0ad8676810fa05a87918cc1874b53672159005016c0", + "zh:c2e8f7c08cad44b46e2e5580183e1ef2a4f1803347de136d1a35f333973a25f0", + "zh:cf0aba5b5042c762da489050716815652f809f3ef0ededb0f981f11691dbef03", + "zh:d1c0874c0ae0aa1eae86dbd131978796303599709c35b5dee926887d375f4cc8", + "zh:d4eecb61e763950a5a0f40cddc7a58345419a522b783aae7b0703309a354bb0c", + "zh:d866df86dd78eb2a9e54ebff637301522766710bb6dc7f8e330f1146822b62ee", + "zh:da51541ef96d0a5745740dc623bff3ccfb6b098b548d78cf5e9d95a15c69963a", + "zh:ede343be1528b468feae3a1cbf781e223f63ce33446a008a42f2fb799a23b436", + "zh:f20a60e2cecd29bbcc73d59e95aca368e2c55b7648f1923df2c0f7578026b048", + "zh:fccaf963f2db1e271e9d28276172910ca6b95471b8e0dfac758daf0495ce17f5", + ] +} + +provider "registry.terraform.io/hashicorp/local" { + version = "2.4.0" + hashes = [ + "h1:ZUEYUmm2t4vxwzxy1BvN1wL6SDWrDxfH7pxtzX8c6d0=", + "zh:53604cd29cb92538668fe09565c739358dc53ca56f9f11312b9d7de81e48fab9", + "zh:66a46e9c508716a1c98efbf793092f03d50049fa4a83cd6b2251e9a06aca2acf", + "zh:70a6f6a852dd83768d0778ce9817d81d4b3f073fab8fa570bff92dcb0824f732", + "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", + "zh:82a803f2f484c8b766e2e9c32343e9c89b91997b9f8d2697f9f3837f62926b35", + "zh:9708a4e40d6cc4b8afd1352e5186e6e1502f6ae599867c120967aebe9d90ed04", + "zh:973f65ce0d67c585f4ec250c1e634c9b22d9c4288b484ee2a871d7fa1e317406", + "zh:c8fa0f98f9316e4cfef082aa9b785ba16e36ff754d6aba8b456dab9500e671c6", + "zh:cfa5342a5f5188b20db246c73ac823918c189468e1382cb3c48a9c0c08fc5bf7", + "zh:e0e2b477c7e899c63b06b38cd8684a893d834d6d0b5e9b033cedc06dd7ffe9e2", + "zh:f62d7d05ea1ee566f732505200ab38d94315a4add27947a60afa29860822d3fc", + "zh:fa7ce69dde358e172bd719014ad637634bbdabc49363104f4fca759b4b73f2ce", + ] +} + +provider "registry.terraform.io/hetznercloud/hcloud" { + version = "1.42.1" + constraints = "~> 1.42.1" + hashes = [ + "h1:1ek+EAXn9sMHCFnCiDw9naAGGXW3d+qco8t0/mGEupc=", + "zh:002e2e57c1425bb4cf620c6a80732ee071726d0d82d0523c5258dde3222113df", + "zh:03213d79fc2bcd94ac812ca22c1d1d6678132ab957d26a65c84ee52853059c02", + "zh:0785429efdb084cb4e5a0d899112764c21d2260391e82897d7e67c9e5deccc31", + "zh:12a5653b7a00f458b65b89b15d4517f785322ebb65b5a689fa8766042a09184c", + "zh:2dc7464290a623eb599cfbf731d13554448a7a824c2b1db16275f482d9059670", + "zh:35a7e19868a304d77ab192871ccaa45418c13a3aac301df8d9f57c1259913051", + "zh:368202d94a1104895c1d566e3f16edd55e05a09881fd4a20cd4854ca3593fee9", + "zh:431503e5055979aabf520675bb465496d934979c7a687e1cd3c8d2ae27bfa649", + "zh:45cede3c2147cfdc76d53853e07395c05b1feff8dca16a2f8f7f1fd151e2449f", + "zh:8b57869af18982af21f6f816e65e6057ec5055481b220147fdbe0959917ae112", + "zh:be9ba4813dcf640c0df04543a3c74b0db117fbd3dcc26140e252cf5157734945", + "zh:d3fb9ca398a153dc894caa94f95ef2e989350cf2bbfa29bc93ff2608cab44c1f", + "zh:fc690be8cbada1e99063ed1c6148f9a70ab341100a97ad2886f4826a951780d3", + "zh:ffa9470e41fa04ac667d4d830987aeed2070767d57f2414692c2dd395a405fba", + ] +} diff --git a/terraform/devnet-0/ansible_inventory.tmpl b/terraform/devnet-0/ansible_inventory.tmpl new file mode 100644 index 0000000..25f4341 --- /dev/null +++ b/terraform/devnet-0/ansible_inventory.tmpl @@ -0,0 +1,54 @@ +localhost + +[all:vars] +ethereum_network_name=${ethereum_network_name} + +%{ for gid, group in groups ~} +[${replace(gid, "-", "_")}] +%{ for key, host in hosts ~} +%{ if host.group == gid ~} +${host.hostname} ansible_host=${host.ip} ipv6=${host.ipv6} cloud=${host.cloud} cloud_region=${host.region} %{ if max(host.validator_start, host.validator_end) != 0 }validator_start=${host.validator_start} validator_end=${host.validator_end}%{ endif } +%{ endif ~} +%{ endfor ~} + +%{ endfor ~} + +# Consensus client groups + +%{ for cl in ["lighthouse", "lodestar", "nimbus", "teku", "prysm", "grandine"] ~} +[${cl}:children] +%{ for gid, group in groups ~} +%{ if split("-", gid)[0] == "${cl}" ~} +${replace(gid, "-", "_")} +%{ endif ~} +%{ endfor ~} +%{ endfor ~} + +# Execution client groups + +%{ for el in ["besu", "ethereumjs", "geth", "nethermind", "erigon", "reth", "nimbusel"] ~} +[${el}:children] +%{ for gid, group in groups ~} +%{ if split("-", gid)[0] != "bootnode" ~} +%{ if split("-", gid)[1] == "${el}" ~} +${replace(gid, "-", "_")} +%{ endif ~} +%{ endif ~} +%{ endfor ~} +%{ endfor ~} + +# Global groups + +[consensus_node:children] +%{ for x,y in merge( { for gid, group in groups : split("-", gid)[0] => true... if split("-", gid)[0] != "bootnode" } ) ~} +${x} +%{ endfor ~} + +[execution_node:children] +%{ for x,y in merge( { for gid, group in groups : split("-", gid)[1] => true... if split("-", gid)[0] != "bootnode" } ) ~} +${x} +%{ endfor ~} + +[ethereum_node:children] +consensus_node +execution_node diff --git a/terraform/devnet-0/digitalocean.tf b/terraform/devnet-0/digitalocean.tf new file mode 100644 index 0000000..fae54f3 --- /dev/null +++ b/terraform/devnet-0/digitalocean.tf @@ -0,0 +1,323 @@ +//////////////////////////////////////////////////////////////////////////////////////// +// VARIABLES +//////////////////////////////////////////////////////////////////////////////////////// +variable "digitalocean_project_name" { + type = string + default = "Template" +} + +variable "digitalocean_ssh_key_name" { + type = string + default = "shared-devops-eth2" +} + +variable "digitalocean_regions" { + default = [ + "nyc1", + "sgp1", + "lon1", + "nyc3", + "ams3", + "fra1", + "tor1", + "blr1", + "sfo3", + "syd1" + ] +} + +//////////////////////////////////////////////////////////////////////////////////////// +// LOCALS +//////////////////////////////////////////////////////////////////////////////////////// +locals { + base_cidr_block = var.base_cidr_block + digitalocean_vpcs = { + for region in var.digitalocean_regions : region => { + name = "${var.ethereum_network}-${region}" + region = region + ip_range = cidrsubnet(local.base_cidr_block, 8, index(var.digitalocean_regions, region)) + } + } +} + +locals { + digitalocean_vm_groups = flatten([ + for vm_group in local.vm_groups : + [ + for i in range(0, vm_group.count) : { + group_name = "${vm_group.name}" + id = "${vm_group.name}-${i + 1}" + vms = { + "${i + 1}" = { + tags = "group_name:${vm_group.name},val_start:${vm_group.validator_start + (i * (vm_group.validator_end - vm_group.validator_start) / vm_group.count)},val_end:${min(vm_group.validator_start + ((i + 1) * (vm_group.validator_end - vm_group.validator_start) / vm_group.count), vm_group.validator_end)}" + region = element(var.digitalocean_regions, i % length(var.digitalocean_regions)) + size = try(vm_group.size, local.digitalocean_default_size) + ipv6 = try(vm_group.ipv6, true) + } + } + } + ] + ]) +} + +locals { + digitalocean_default_region = "ams3" + digitalocean_default_size = "c-2" + digitalocean_default_image = "debian-12-x64" + digitalocean_global_tags = [ + "Owner:Devops", + "EthNetwork:${var.ethereum_network}" + ] + + # flatten vm_groups so that we can use it with for_each() + digitalocean_vms = flatten([ + for group in local.digitalocean_vm_groups : [ + for vm_key, vm in group.vms : { + id = "${group.id}" + group_key = "${group.group_name}" + vm_key = vm_key + + name = try(vm.name, "${group.id}") + ssh_keys = try(vm.ssh_keys, [data.digitalocean_ssh_key.main.fingerprint]) + region = try(vm.region, try(group.region, local.digitalocean_default_region)) + image = try(vm.image, local.digitalocean_default_image) + size = try(vm.size, local.digitalocean_default_size) + resize_disk = try(vm.resize_disk, true) + monitoring = try(vm.monitoring, true) + backups = try(vm.backups, false) + ipv6 = try(vm.ipv6, true) + ansible_vars = try(vm.ansible_vars, null) + vpc_uuid = try(vm.vpc_uuid, try( + digitalocean_vpc.main[vm.region].id, + digitalocean_vpc.main[try(group.region, local.digitalocean_default_region)].id + )) + + tags = concat(local.digitalocean_global_tags, try(split(",", group.tags), []), try(split(",", vm.tags), [])) + } + ] + ]) +} + +//////////////////////////////////////////////////////////////////////////////////////// +// DIGITALOCEAN RESOURCES +//////////////////////////////////////////////////////////////////////////////////////// +data "digitalocean_project" "main" { + name = var.digitalocean_project_name +} + +data "digitalocean_ssh_key" "main" { + name = var.digitalocean_ssh_key_name +} + +resource "digitalocean_vpc" "main" { + for_each = local.digitalocean_vpcs + + name = each.value["name"] + region = each.value["region"] + ip_range = each.value["ip_range"] +} + +resource "digitalocean_droplet" "main" { + for_each = { + for vm in local.digitalocean_vms : "${vm.id}" => vm + } + name = "${var.ethereum_network}-${each.value.name}" + region = each.value.region + ssh_keys = each.value.ssh_keys + image = each.value.image + size = each.value.size + resize_disk = each.value.resize_disk + monitoring = each.value.monitoring + backups = each.value.backups + ipv6 = each.value.ipv6 + vpc_uuid = each.value.vpc_uuid + tags = each.value.tags +} + +resource "digitalocean_project_resources" "droplets" { + for_each = digitalocean_droplet.main + project = data.digitalocean_project.main.id + resources = [each.value.urn] +} + +resource "digitalocean_firewall" "main" { + name = "${var.ethereum_network}-nodes" + // Tags are used to select which droplets should + // be assigned to this firewall. + tags = [ + "EthNetwork:${var.ethereum_network}" + ] + + // SSH + inbound_rule { + protocol = "tcp" + port_range = "22" + source_addresses = ["0.0.0.0/0", "::/0"] + } + + // Nginx / Web + inbound_rule { + protocol = "tcp" + port_range = "80" + source_addresses = ["0.0.0.0/0", "::/0"] + } + + inbound_rule { + protocol = "tcp" + port_range = "443" + source_addresses = ["0.0.0.0/0", "::/0"] + } + + // Consensus layer p2p port + inbound_rule { + protocol = "tcp" + port_range = "9000-9001" + source_addresses = ["0.0.0.0/0", "::/0"] + } + inbound_rule { + protocol = "udp" + port_range = "9000-9001" + source_addresses = ["0.0.0.0/0", "::/0"] + } + + // Execution layer p2p Port + inbound_rule { + protocol = "tcp" + port_range = "30303" + source_addresses = ["0.0.0.0/0", "::/0"] + } + inbound_rule { + protocol = "udp" + port_range = "30303" + source_addresses = ["0.0.0.0/0", "::/0"] + } + + // Allow all outbound traffic + outbound_rule { + protocol = "tcp" + port_range = "1-65535" + destination_addresses = ["0.0.0.0/0", "::/0"] + } + outbound_rule { + protocol = "udp" + port_range = "1-65535" + destination_addresses = ["0.0.0.0/0", "::/0"] + } + outbound_rule { + protocol = "icmp" + destination_addresses = ["0.0.0.0/0", "::/0"] + } + depends_on = [digitalocean_project_resources.droplets] +} + +//////////////////////////////////////////////////////////////////////////////////////// +// DNS NAMES +//////////////////////////////////////////////////////////////////////////////////////// + +data "cloudflare_zone" "default" { + name = "ethpandaops.io" +} + +resource "cloudflare_record" "server_record_v4" { + for_each = { + for vm in local.digitalocean_vms : "${vm.id}" => vm + } + zone_id = data.cloudflare_zone.default.id + name = "${each.value.name}.${var.ethereum_network}" + type = "A" + value = digitalocean_droplet.main[each.value.id].ipv4_address + proxied = false + ttl = 120 +} + +resource "cloudflare_record" "server_record_v6" { + for_each = { + for vm in local.digitalocean_vms : "${vm.id}" => vm if vm.ipv6 + } + zone_id = data.cloudflare_zone.default.id + name = "${each.value.name}.${var.ethereum_network}" + type = "AAAA" + value = digitalocean_droplet.main[each.value.id].ipv6_address + proxied = false + ttl = 120 +} + +resource "cloudflare_record" "server_record_rpc_v4" { + for_each = { + for vm in local.digitalocean_vms : "${vm.id}" => vm + } + zone_id = data.cloudflare_zone.default.id + name = "rpc.${each.value.name}.${var.ethereum_network}" + type = "A" + value = digitalocean_droplet.main[each.value.id].ipv4_address + proxied = false + ttl = 120 +} + +resource "cloudflare_record" "server_record_rpc_v6" { + for_each = { + for vm in local.digitalocean_vms : "${vm.id}" => vm if vm.ipv6 + } + zone_id = data.cloudflare_zone.default.id + name = "rpc.${each.value.name}.${var.ethereum_network}" + type = "AAAA" + value = digitalocean_droplet.main[each.value.id].ipv6_address + proxied = false + ttl = 120 +} + +resource "cloudflare_record" "server_record_beacon_v4" { + for_each = { + for vm in local.digitalocean_vms : "${vm.id}" => vm + } + zone_id = data.cloudflare_zone.default.id + name = "bn.${each.value.name}.${var.ethereum_network}" + type = "A" + value = digitalocean_droplet.main[each.value.id].ipv4_address + proxied = false + ttl = 120 +} + +resource "cloudflare_record" "server_record_beacon_v6" { + for_each = { + for vm in local.digitalocean_vms : "${vm.id}" => vm if vm.ipv6 + } + zone_id = data.cloudflare_zone.default.id + name = "bn.${each.value.name}.${var.ethereum_network}" + type = "AAAA" + value = digitalocean_droplet.main[each.value.id].ipv6_address + proxied = false + ttl = 120 +} + + +//////////////////////////////////////////////////////////////////////////////////////// +// GENERATED FILES AND OUTPUTS +//////////////////////////////////////////////////////////////////////////////////////// + +resource "local_file" "ansible_inventory" { + content = templatefile("ansible_inventory.tmpl", + { + ethereum_network_name = "${var.ethereum_network}" + groups = merge( + { for group in local.digitalocean_vm_groups : "${group.group_name}" => true... }, + ) + hosts = merge( + { + for key, server in digitalocean_droplet.main : "do.${key}" => { + ip = "${server.ipv4_address}" + ipv6 = try(server.ipv6_address, "none") + group = try(split(":", tolist(server.tags)[2])[1], "unknown") + validator_start = try(split(":", tolist(server.tags)[4])[1], 0) + validator_end = try(split(":", tolist(server.tags)[3])[1], 0) # if the tag is not a number it will be 0 - e.g no validator keys + tags = "${server.tags}" + hostname = "${split(".", key)[0]}" + cloud = "digitalocean" + region = "${server.region}" + } + } + ) + } + ) + filename = "../../ansible/inventories/devnet-0/inventory.ini" +} diff --git a/terraform/devnet-0/hetzner/firewall.tf b/terraform/devnet-0/hetzner/firewall.tf new file mode 100644 index 0000000..4ef6d0b --- /dev/null +++ b/terraform/devnet-0/hetzner/firewall.tf @@ -0,0 +1,87 @@ +resource "hcloud_firewall" "machine_firewall" { + name = "${var.ethereum_network}-firewall" + + # SSH + rule { + description = "Allow SSH" + direction = "in" + protocol = "tcp" + port = "22" + source_ips = ["0.0.0.0/0", "::/0"] + } + # Nginx / Web + rule { + description = "Allow HTTP" + direction = "in" + protocol = "tcp" + port = "80" + source_ips = ["0.0.0.0/0", "::/0"] + } + + rule { + description = "Allow HTTPS" + direction = "in" + protocol = "tcp" + port = "443" + source_ips = ["0.0.0.0/0", "::/0"] + } + + # Consensus layer p2p port + rule { + description = "Allow consensus p2p port TCP" + direction = "in" + protocol = "tcp" + port = "9000-9001" + source_ips = ["0.0.0.0/0", "::/0"] + } + + rule { + description = "Allow consensus p2p port UDP" + direction = "in" + protocol = "udp" + port = "9000-9001" + source_ips = ["0.0.0.0/0", "::/0"] + } + + # Execution layer p2p Port + rule { + description = "Allow execution p2p port TCP" + direction = "in" + protocol = "tcp" + port = "30303" + source_ips = ["0.0.0.0/0", "::/0"] + } + + rule { + description = "Allow execution p2p port UDP" + direction = "in" + protocol = "udp" + port = "30303" + source_ips = ["0.0.0.0/0", "::/0"] + } + + # Allow all outbound traffic + rule { + description = "Allow all outbound traffic TCP" + direction = "out" + protocol = "tcp" + port = "1-65535" + destination_ips = ["0.0.0.0/0", "::/0"] + } + + rule { + description = "Allow all outbound traffic UDP" + direction = "out" + protocol = "udp" + port = "1-65535" + destination_ips = ["0.0.0.0/0", "::/0"] + } + + rule { + description = "Allow all outbound traffic ICMP" + direction = "out" + protocol = "icmp" + destination_ips = ["0.0.0.0/0", "::/0"] + } +} + diff --git a/terraform/devnet-0/hetzner/hetzner.tf b/terraform/devnet-0/hetzner/hetzner.tf new file mode 100644 index 0000000..817c34a --- /dev/null +++ b/terraform/devnet-0/hetzner/hetzner.tf @@ -0,0 +1,263 @@ +//////////////////////////////////////////////////////////////////////////////////////// +// TERRAFORM PROVIDERS & BACKEND +//////////////////////////////////////////////////////////////////////////////////////// +provider "hcloud" { + token = var.devnet_hcloud_token +} +//////////////////////////////////////////////////////////////////////////////////////// +// VARIABLES +//////////////////////////////////////////////////////////////////////////////////////// +variable "devnet_hcloud_token" { + type = string + description = "Hetzner Cloud API Token" + sensitive = true +} + +variable "hcloud_ssh_key_fingerprint" { + type = string + default = "d6:76:2d:9c:5b:33:80:ff:0f:09:a2:10:9b:58:7e:dc" +} + +variable "hetzner_regions" { + default = [ + "nbg1", + "fsn1", + "hel1" + ] +} + +//////////////////////////////////////////////////////////////////////////////////////// +// LOCALS +//////////////////////////////////////////////////////////////////////////////////////// +locals { + hetzner_network = { + for region in var.hetzner_regions : region => { + name = "${var.ethereum_network}-${region}" + ip_range = cidrsubnet(var.base_cidr_block, 8, index(var.hetzner_regions, region)) + } + } + hetzner_network_subnets = { + for region in var.hetzner_regions : region => { + zone = "eu-central" + ip_range = cidrsubnet(var.base_cidr_block, 8, index(var.hetzner_regions, region)) + } + } +} + +locals { + hetzner_vm_groups = flatten([ + for vm_group in local.vm_groups : + [ + for i in range(0, vm_group.count) : { + group_name = "${vm_group.name}" + id = "${vm_group.name}-${i + 1}-arm" + vms = { + "${i + 1}" = { + labels = "group_name:${vm_group.name},val_start:${vm_group.validator_start + (i * (vm_group.validator_end - + vm_group.validator_start) / vm_group.count)},val_end:${min(vm_group.validator_start + ((i + 1) * (vm_group.validator_end - + vm_group.validator_start) / vm_group.count), vm_group.validator_end)}" + location = try(vm_group.location, local.hcloud_default_location) + size = try(vm_group.size, local.hcloud_default_server_type) + ansible_vars = try(vm_group.ansible_vars, null) + ipv4_enabled = try(vm_group.ipv4_enabled, true) + ipv6_enabled = try(vm_group.ipv6_enabled, true) + } + } + } + ] + ]) +} + +locals { + hcloud_default_location = "nbg1" + hcloud_default_image = "debian-12" + hcloud_default_server_type = "cax31" + hcloud_global_labels = [ + "Owner:Devops", + "EthNetwork:${var.ethereum_network}" + ] + # hcloud_global_labels_list = [for k, v in local.hcloud_global_labels : "${k}=${v}"] + + # flatten vm_groups so that we can use it with for_each() + hcloud_vms = flatten([ + for group in local.hetzner_vm_groups : [ + for vm_key, vm in group.vms : { + id = "${group.id}" + group_key = "${group.group_name}" + vm_key = vm_key + + name = try(vm.name, "${group.id}") + ipv4_enabled = try(vm.ipv4_enabled, true) + ipv6_enabled = try(vm.ipv6_enabled, true) + ssh_keys = try(vm.ssh_keys, [data.hcloud_ssh_key.main.id]) + location = try(vm.location, try(group.location, local.hcloud_default_location)) + image = try(vm.image, local.hcloud_default_image) + server_type = try(vm.size, local.hcloud_default_server_type) + backups = try(vm.backups, false) + ansible_vars = try(vm.ansible_vars, null) + + labels = concat(local.hcloud_global_labels, try(split(",", group.labels), []), try(split(",", vm.labels), [])) + } + ] + ]) +} +//////////////////////////////////////////////////////////////////////////////////////// +// HETZNER RESOURCES +//////////////////////////////////////////////////////////////////////////////////////// +resource "hcloud_network" "main" { + for_each = local.hetzner_network + name = try(each.value.name, "${var.ethereum_network}-${each.key}") + ip_range = each.value.ip_range +} + +resource "hcloud_network_subnet" "main" { + for_each = local.hetzner_network_subnets + network_id = hcloud_network.main[each.key].id + type = "cloud" + network_zone = each.value.zone + ip_range = each.value.ip_range +} + +data "hcloud_ssh_key" "main" { + fingerprint = var.hcloud_ssh_key_fingerprint +} + +resource "hcloud_server" "main" { + for_each = { + for vm in local.hcloud_vms : "${vm.id}" => vm + } + name = "${var.ethereum_network}-${each.value.name}" + image = each.value.image + server_type = each.value.server_type + location = each.value.location + ssh_keys = each.value.ssh_keys + backups = each.value.backups + labels = { for label in each.value.labels : split(":", label)[0] => split(":", label)[1] } + public_net { + ipv4_enabled = try(each.value.ipv4_enabled, true) + ipv6_enabled = try(each.value.ipv6_enabled, true) + } + firewall_ids = [hcloud_firewall.machine_firewall.id] +} + +resource "hcloud_server_network" "main" { + for_each = { + for vm in local.hcloud_vms : "${vm.id}" => vm + } + server_id = hcloud_server.main[each.key].id + network_id = hcloud_network.main[each.value.location].id + +} + +//////////////////////////////////////////////////////////////////////////////////////// +// DNS NAMES +//////////////////////////////////////////////////////////////////////////////////////// + +data "cloudflare_zone" "default" { + name = "ethpandaops.io" +} + +resource "cloudflare_record" "server_record" { + for_each = { + for vm in local.hcloud_vms : "${vm.id}" => vm if coalesce(vm.ipv4_enabled, true) == true + } + zone_id = data.cloudflare_zone.default.id + name = "${each.value.name}.${var.ethereum_network}" + type = "A" + value = hcloud_server.main[each.value.id].ipv4_address + proxied = false + ttl = 120 +} + +resource "cloudflare_record" "server_record6" { + for_each = { + for vm in local.hcloud_vms : "${vm.id}" => vm if coalesce(vm.ipv6_enabled, true) == true + } + zone_id = data.cloudflare_zone.default.id + name = "${each.value.name}.${var.ethereum_network}" + type = "AAAA" + value = hcloud_server.main[each.value.id].ipv6_address + proxied = false + ttl = 120 +} + +resource "cloudflare_record" "server_record_rpc" { + for_each = { + for vm in local.hcloud_vms : "${vm.id}" => vm if coalesce(vm.ipv4_enabled, true) == true + } + zone_id = data.cloudflare_zone.default.id + name = "rpc.${each.value.name}.${var.ethereum_network}" + type = "A" + value = hcloud_server.main[each.value.id].ipv4_address + proxied = false + ttl = 120 +} + +resource "cloudflare_record" "server_record_rpc6" { + for_each = { + for vm in local.hcloud_vms : "${vm.id}" => vm if coalesce(vm.ipv6_enabled, true) == true + } + zone_id = data.cloudflare_zone.default.id + name = "rpc.${each.value.name}.${var.ethereum_network}" + type = "AAAA" + value = hcloud_server.main[each.value.id].ipv6_address + proxied = false + ttl = 120 +} + +resource "cloudflare_record" "server_record_beacon" { + for_each = { + for vm in local.hcloud_vms : "${vm.id}" => vm if coalesce(vm.ipv4_enabled, true) == true + } + zone_id = data.cloudflare_zone.default.id + name = "bn.${each.value.name}.${var.ethereum_network}" + type = "A" + value = hcloud_server.main[each.value.id].ipv4_address + proxied = false + ttl = 120 +} + +resource "cloudflare_record" "server_record_beacon6" { + for_each = { + for vm in local.hcloud_vms : "${vm.id}" => vm if coalesce(vm.ipv6_enabled, true) == true + } + zone_id = data.cloudflare_zone.default.id + name = "bn.${each.value.name}.${var.ethereum_network}" + type = "AAAA" + value = hcloud_server.main[each.value.id].ipv6_address + proxied = false + ttl = 120 +} + + +//////////////////////////////////////////////////////////////////////////////////////// +// GENERATED FILES AND OUTPUTS +//////////////////////////////////////////////////////////////////////////////////////// + +resource "local_file" "ansible_inventory" { + depends_on = [hcloud_server.main] + content = templatefile("../ansible_inventory.tmpl", + { + ethereum_network_name = "${var.ethereum_network}" + groups = merge( + { for group in local.hetzner_vm_groups : "${group.group_name}" => true... }, + ) + hosts = merge( + { + for key, server in hcloud_server.main : "${key}" => { + ip = coalesce(server.ipv4_address, (try(server.ipv6_address, ""))) + ipv6 = coalesce(server.ipv6_address, "") + group = server.labels.group_name + validator_start = server.labels.val_start + validator_end = server.labels.val_end + tags = server.labels + hostname = split(".", key)[0] + cloud = "hetzner" + region = server.datacenter + } + } + ) + } + ) + filename = "../../../ansible/inventories/devnet-0/hetzner_inventory.ini" +} diff --git a/terraform/devnet-0/hetzner/main.tf b/terraform/devnet-0/hetzner/main.tf new file mode 100644 index 0000000..9ff2610 --- /dev/null +++ b/terraform/devnet-0/hetzner/main.tf @@ -0,0 +1,112 @@ +//////////////////////////////////////////////////////////////////////////////////////// +// TERRAFORM PROVIDERS & BACKEND +//////////////////////////////////////////////////////////////////////////////////////// +terraform { + required_providers { + digitalocean = { + source = "digitalocean/digitalocean" + version = "~> 2.28" + } + cloudflare = { + source = "cloudflare/cloudflare" + version = "~> 3.0" + } + hcloud = { + source = "hetznercloud/hcloud" + version = "~> 1.42.1" + } + random = { + source = "hashicorp/random" + version = "3.5.1" + } + } +} + +terraform { + backend "s3" { + skip_credentials_validation = true + skip_metadata_api_check = true + endpoints = { s3 = "https://fra1.digitaloceanspaces.com" } + skip_requesting_account_id = true + skip_s3_checksum = true + region = "us-east-1" + bucket = "merge-testnets" + key = "infrastructure/devnet-0/hetzner-terraform.tfstate" + } +} + +provider "digitalocean" { + http_retry_max = 20 +} + +provider "cloudflare" { + api_token = var.cloudflare_api_token +} + +//////////////////////////////////////////////////////////////////////////////////////// +// VARIABLES +//////////////////////////////////////////////////////////////////////////////////////// +variable "cloudflare_api_token" { + type = string + sensitive = true + description = "Cloudflare API Token" +} + +variable "ethereum_network" { + type = string + default = "template-devnet-0" +} + +variable "base_cidr_block" { + default = "10.76.0.0/16" +} +//////////////////////////////////////////////////////////////////////////////////////// +// LOCALS +//////////////////////////////////////////////////////////////////////////////////////// +locals { + vm_groups = [ + var.bootnode, + var.lighthouse_geth, + var.lighthouse_nethermind, + var.lighthouse_erigon, + var.lighthouse_besu, + var.lighthouse_ethereumjs, + var.lighthouse_reth, + var.lighthouse_nimbusel, + var.prysm_geth, + var.prysm_nethermind, + var.prysm_erigon, + var.prysm_besu, + var.prysm_ethereumjs, + var.prysm_reth, + var.prysm_nimbusel, + var.lodestar_geth, + var.lodestar_nethermind, + var.lodestar_erigon, + var.lodestar_besu, + var.lodestar_ethereumjs, + var.lodestar_reth, + var.lodestar_nimbusel, + var.nimbus_geth, + var.nimbus_nethermind, + var.nimbus_erigon, + var.nimbus_besu, + var.nimbus_ethereumjs, + var.nimbus_reth, + var.nimbus_nimbusel, + var.teku_geth, + var.teku_nethermind, + var.teku_erigon, + var.teku_besu, + var.teku_ethereumjs, + var.teku_reth, + var.teku_nimbusel, + var.grandine_geth, + var.grandine_nethermind, + var.grandine_erigon, + var.grandine_besu, + var.grandine_ethereumjs, + var.grandine_reth, + var.grandine_nimbusel, + ] +} diff --git a/terraform/devnet-0/hetzner/nodes.tf b/terraform/devnet-0/hetzner/nodes.tf new file mode 100644 index 0000000..96848df --- /dev/null +++ b/terraform/devnet-0/hetzner/nodes.tf @@ -0,0 +1,394 @@ +# Bootnode +variable "bootnode" { + default = { + name = "bootnode" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +# Lighthouse +variable "lighthouse_geth" { + default = { + name = "lighthouse-geth" + count = 1 + validator_start = 100 + validator_end = 200 + location = "hel1" + } +} + +variable "lighthouse_besu" { + default = { + name = "lighthouse-besu" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "lighthouse_nethermind" { + default = { + name = "lighthouse-nethermind" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "lighthouse_ethereumjs" { + default = { + name = "lighthouse-ethereumjs" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "lighthouse_erigon" { + default = { + name = "lighthouse-erigon" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "lighthouse_reth" { + default = { + name = "lighthouse-reth" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "lighthouse_nimbusel" { + default = { + name = "lighthouse-nimbusel" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +# Prysm +variable "prysm_geth" { + default = { + name = "prysm-geth" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "prysm_besu" { + default = { + name = "prysm-besu" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "prysm_nethermind" { + default = { + name = "prysm-nethermind" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "prysm_ethereumjs" { + default = { + name = "prysm-ethereumjs" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "prysm_erigon" { + default = { + name = "prysm-erigon" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "prysm_reth" { + default = { + name = "prysm-reth" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "prysm_nimbusel" { + default = { + name = "prysm-nimbusel" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +# Lodestar +variable "lodestar_geth" { + default = { + name = "lodestar-geth" + count = 1 + validator_start = 0 + validator_end = 0 + } +} + +variable "lodestar_nethermind" { + default = { + name = "lodestar-nethermind" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "lodestar_besu" { + default = { + name = "lodestar-besu" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "lodestar_ethereumjs" { + default = { + name = "lodestar-ethereumjs" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "lodestar_erigon" { + default = { + name = "lodestar-erigon" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "lodestar_reth" { + default = { + name = "lodestar-reth" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "lodestar_nimbusel" { + default = { + name = "lodestar-nimbusel" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +# Nimbus +variable "nimbus_geth" { + default = { + name = "nimbus-geth" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "nimbus_besu" { + default = { + name = "nimbus-besu" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "nimbus_nethermind" { + default = { + name = "nimbus-nethermind" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "nimbus_ethereumjs" { + default = { + name = "nimbus-ethereumjs" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "nimbus_erigon" { + default = { + name = "nimbus-erigon" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "nimbus_reth" { + default = { + name = "nimbus-reth" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "nimbus_nimbusel" { + default = { + name = "nimbus-nimbusel" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +# Teku +variable "teku_geth" { + default = { + name = "teku-geth" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "teku_besu" { + default = { + name = "teku-besu" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "teku_nethermind" { + default = { + name = "teku-nethermind" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "teku_ethereumjs" { + default = { + name = "teku-ethereumjs" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "teku_erigon" { + default = { + name = "teku-erigon" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "teku_reth" { + default = { + name = "teku-reth" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "teku_nimbusel" { + default = { + name = "teku-nimbusel" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +#Grandine +variable "grandine_geth" { + default = { + name = "grandine-geth" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "grandine_besu" { + default = { + name = "grandine-besu" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "grandine_nethermind" { + default = { + name = "grandine-nethermind" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "grandine_ethereumjs" { + default = { + name = "grandine-ethereumjs" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "grandine_erigon" { + default = { + name = "grandine-erigon" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "grandine_reth" { + default = { + name = "grandine-reth" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "grandine_nimbusel" { + default = { + name = "grandine-nimbusel" + count = 0 + validator_start = 0 + validator_end = 0 + } +} \ No newline at end of file diff --git a/terraform/devnet-0/main.tf b/terraform/devnet-0/main.tf new file mode 100644 index 0000000..5ab84fa --- /dev/null +++ b/terraform/devnet-0/main.tf @@ -0,0 +1,108 @@ +//////////////////////////////////////////////////////////////////////////////////////// +// TERRAFORM PROVIDERS & BACKEND +//////////////////////////////////////////////////////////////////////////////////////// +terraform { + required_providers { + digitalocean = { + source = "digitalocean/digitalocean" + version = "~> 2.28" + } + cloudflare = { + source = "cloudflare/cloudflare" + version = "~> 3.0" + } + hcloud = { + source = "hetznercloud/hcloud" + version = "~> 1.42.1" + } + } +} + +terraform { + backend "s3" { + skip_credentials_validation = true + skip_metadata_api_check = true + endpoints = { s3 = "https://fra1.digitaloceanspaces.com" } + skip_requesting_account_id = true + skip_s3_checksum = true + region = "us-east-1" + bucket = "merge-testnets" + key = "infrastructure/devnet-0/terraform.tfstate" + } +} + +provider "digitalocean" { + http_retry_max = 20 +} + +provider "cloudflare" { + api_token = var.cloudflare_api_token +} + +//////////////////////////////////////////////////////////////////////////////////////// +// VARIABLES +//////////////////////////////////////////////////////////////////////////////////////// +variable "cloudflare_api_token" { + type = string + sensitive = true + description = "Cloudflare API Token" +} + +variable "ethereum_network" { + type = string + default = "template-devnet-0" +} + +variable "base_cidr_block" { + default = "10.76.0.0/16" +} +//////////////////////////////////////////////////////////////////////////////////////// +// LOCALS +//////////////////////////////////////////////////////////////////////////////////////// +locals { + vm_groups = [ + var.bootnode, + var.lighthouse_geth, + var.lighthouse_nethermind, + var.lighthouse_erigon, + var.lighthouse_besu, + var.lighthouse_ethereumjs, + var.lighthouse_reth, + var.lighthouse_nimbusel, + var.prysm_geth, + var.prysm_nethermind, + var.prysm_erigon, + var.prysm_besu, + var.prysm_ethereumjs, + var.prysm_reth, + var.prysm_nimbusel, + var.lodestar_geth, + var.lodestar_nethermind, + var.lodestar_erigon, + var.lodestar_besu, + var.lodestar_ethereumjs, + var.lodestar_reth, + var.lodestar_nimbusel, + var.nimbus_geth, + var.nimbus_nethermind, + var.nimbus_erigon, + var.nimbus_besu, + var.nimbus_ethereumjs, + var.nimbus_reth, + var.nimbus_nimbusel, + var.teku_geth, + var.teku_nethermind, + var.teku_erigon, + var.teku_besu, + var.teku_ethereumjs, + var.teku_reth, + var.teku_nimbusel, + var.grandine_geth, + var.grandine_nethermind, + var.grandine_erigon, + var.grandine_besu, + var.grandine_ethereumjs, + var.grandine_reth, + var.grandine_nimbusel, + ] +} diff --git a/terraform/devnet-0/nodes.tf b/terraform/devnet-0/nodes.tf new file mode 100644 index 0000000..c878d58 --- /dev/null +++ b/terraform/devnet-0/nodes.tf @@ -0,0 +1,393 @@ +# Bootnode +variable "bootnode" { + default = { + name = "bootnode" + count = 1 + validator_start = 0 + validator_end = 0 + } +} + +# Lighthouse +variable "lighthouse_geth" { + default = { + name = "lighthouse-geth" + count = 1 + validator_start = 0 + validator_end = 100 + } +} + +variable "lighthouse_besu" { + default = { + name = "lighthouse-besu" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "lighthouse_nethermind" { + default = { + name = "lighthouse-nethermind" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "lighthouse_ethereumjs" { + default = { + name = "lighthouse-ethereumjs" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "lighthouse_erigon" { + default = { + name = "lighthouse-erigon" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "lighthouse_reth" { + default = { + name = "lighthouse-reth" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "lighthouse_nimbusel" { + default = { + name = "lighthouse-nimbusel" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +# Prysm +variable "prysm_geth" { + default = { + name = "prysm-geth" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "prysm_besu" { + default = { + name = "prysm-besu" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "prysm_nethermind" { + default = { + name = "prysm-nethermind" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "prysm_ethereumjs" { + default = { + name = "prysm-ethereumjs" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "prysm_erigon" { + default = { + name = "prysm-erigon" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "prysm_reth" { + default = { + name = "prysm-reth" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "prysm_nimbusel" { + default = { + name = "prysm-nimbusel" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +# Lodestar +variable "lodestar_geth" { + default = { + name = "lodestar-geth" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "lodestar_nethermind" { + default = { + name = "lodestar-nethermind" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "lodestar_besu" { + default = { + name = "lodestar-besu" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "lodestar_ethereumjs" { + default = { + name = "lodestar-ethereumjs" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "lodestar_erigon" { + default = { + name = "lodestar-erigon" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "lodestar_reth" { + default = { + name = "lodestar-reth" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "lodestar_nimbusel" { + default = { + name = "lodestar-nimbusel" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +# Nimbus +variable "nimbus_geth" { + default = { + name = "nimbus-geth" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "nimbus_besu" { + default = { + name = "nimbus-besu" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "nimbus_nethermind" { + default = { + name = "nimbus-nethermind" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "nimbus_ethereumjs" { + default = { + name = "nimbus-ethereumjs" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "nimbus_erigon" { + default = { + name = "nimbus-erigon" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "nimbus_reth" { + default = { + name = "nimbus-reth" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "nimbus_nimbusel" { + default = { + name = "nimbus-nimbusel" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +# Teku +variable "teku_geth" { + default = { + name = "teku-geth" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "teku_besu" { + default = { + name = "teku-besu" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "teku_nethermind" { + default = { + name = "teku-nethermind" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "teku_ethereumjs" { + default = { + name = "teku-ethereumjs" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "teku_erigon" { + default = { + name = "teku-erigon" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "teku_reth" { + default = { + name = "teku-reth" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "teku_nimbusel" { + default = { + name = "teku-nimbusel" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +# Grandine +variable "grandine_geth" { + default = { + name = "grandine-geth" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "grandine_besu" { + default = { + name = "grandine-besu" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "grandine_nethermind" { + default = { + name = "grandine-nethermind" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "grandine_ethereumjs" { + default = { + name = "grandine-ethereumjs" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "grandine_erigon" { + default = { + name = "grandine-erigon" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "grandine_reth" { + default = { + name = "grandine-reth" + count = 0 + validator_start = 0 + validator_end = 0 + } +} + +variable "grandine_nimbusel" { + default = { + name = "grandine-nimbusel" + count = 0 + validator_start = 0 + validator_end = 0 + } +} \ No newline at end of file