From 1e8680a6e9071f51dc1657b8a90e920e2054f88e Mon Sep 17 00:00:00 2001 From: Chris Gianelloni Date: Sat, 7 Sep 2024 12:14:49 -0400 Subject: [PATCH] feat: cardano-node topology w/ bootstrap peers Signed-off-by: Chris Gianelloni --- roles/cardano_node/defaults/main.yml | 14 +++-- roles/cardano_node/tasks/main.yml | 14 +---- .../templates/custom-p2p-topology.json.j2 | 40 --------------- .../templates/custom-topology.json.j2 | 51 ++++++++++++++++--- 4 files changed, 56 insertions(+), 63 deletions(-) delete mode 100644 roles/cardano_node/templates/custom-p2p-topology.json.j2 diff --git a/roles/cardano_node/defaults/main.yml b/roles/cardano_node/defaults/main.yml index 44cfdf3..985ba31 100644 --- a/roles/cardano_node/defaults/main.yml +++ b/roles/cardano_node/defaults/main.yml @@ -64,14 +64,18 @@ cardano_node_config_file: '{{ cardano_node_config_container_dir }}/{{ cardano_no # Topology cardano_node_manage_topology: false -cardano_node_p2p_enabled: '{{ false if cardano_node_network == "mainnet" else true }}' -cardano_node_p2p_use_ledger_after: 116812831 cardano_node_topology_file: '{{ cardano_node_topology_container_dir }}/{{ cardano_node_network }}/topology.json' +cardano_node_topology_use_ledger_after_slot: 128908821 cardano_node_topology_localroots: [] -cardano_node_topology_publicroots: - - address: 'relays-new.cardano-{{ cardano_node_network }}.iohk.io' +cardano_node_topology_publicroots: [] +# Adjust for non-mainnet deployments +cardano_node_topology_bootstrap_peers: + - address: 'backbone.cardano.iog.io' + port: 3001 + - address: 'backbone.mainnet.emurgornd.com' + port: 3001 + - address: 'backbone.mainnet.cardanofoundation.org' port: 3001 - valency: 2 # this is only used for legacy topology # Install chrony chrony_enabled: true diff --git a/roles/cardano_node/tasks/main.yml b/roles/cardano_node/tasks/main.yml index ef73419..7939e86 100644 --- a/roles/cardano_node/tasks/main.yml +++ b/roles/cardano_node/tasks/main.yml @@ -35,7 +35,7 @@ - '{{ cardano_node_topology_dir }}' when: cardano_node_manage_topology -- name: Generate custom topology config (legacy) +- name: Generate custom topology config template: dest: '{{ cardano_node_topology_file }}' src: custom-topology.json.j2 @@ -43,17 +43,7 @@ group: '{{ cardano_node_group | string }}' mode: 0644 register: cardano_topology - when: cardano_node_manage_topology and not cardano_node_p2p_enabled - -- name: Generate custom topology config (P2P) - template: - dest: '{{ cardano_node_topology_file }}' - src: custom-p2p-topology.json.j2 - owner: '{{ cardano_node_user | string }}' - group: '{{ cardano_node_group | string }}' - mode: 0644 - register: cardano_topology_p2p - when: cardano_node_manage_topology and cardano_node_p2p_enabled + when: cardano_node_manage_topology - name: Include docker-related tasks ansible.builtin.include_tasks: docker.yml diff --git a/roles/cardano_node/templates/custom-p2p-topology.json.j2 b/roles/cardano_node/templates/custom-p2p-topology.json.j2 deleted file mode 100644 index b7dffcc..0000000 --- a/roles/cardano_node/templates/custom-p2p-topology.json.j2 +++ /dev/null @@ -1,40 +0,0 @@ -{ - "localRoots": [ -{% set peer_count = cardano_node_topology_localroots | length %} -{% for peer in cardano_node_topology_localroots %} - { - "accessPoints": [ - { - "address": "{{ peer.address }}", - "port": {{ peer.port | int }} - } - ], - "advertise": false, - "valency": 1 -{% if loop.index == peer_count %} - } -{% else %} - }, -{% endif %} -{% endfor %} - ], - "publicRoots": [ -{% set peer_count = cardano_node_topology_publicroots | length %} -{% for peer in cardano_node_topology_publicroots %} - { - "accessPoints": [ - { - "address": "{{ peer.address }}", - "port": {{ peer.port | int }} - } - ], - "advertise": false -{% if loop.index == peer_count %} - } -{% else %} - }, -{% endif %} -{% endfor %} - ], - "useLedgerAfterSlot": {{ cardano_node_p2p_use_ledger_after }} -} diff --git a/roles/cardano_node/templates/custom-topology.json.j2 b/roles/cardano_node/templates/custom-topology.json.j2 index fb95950..3ab7361 100644 --- a/roles/cardano_node/templates/custom-topology.json.j2 +++ b/roles/cardano_node/templates/custom-topology.json.j2 @@ -1,16 +1,55 @@ { - "Producers": [ -{% set peer_count = (cardano_node_topology_localroots + cardano_node_topology_publicroots) | length %} -{% for peer in (cardano_node_topology_localroots + cardano_node_topology_publicroots) %} +{% set peer_count = cardano_node_topology_bootstrap_peers | length %} +{% if peer_count > 0 %} + "bootstrapPeers": [ +{% for peer in cardano_node_topology_bootstrap_peers %} { "address": "{{ peer.address }}", - "port": {{ peer.port }}, - "valency": {{ peer.valency | default(1) }} + "port": {{ peer.port | int }} {% if loop.index == peer_count %} } {% else %} }, +{% endif %} + ], +{% endif %} + "localRoots": [ + { + "accessPoints": [ +{% set peer_count = cardano_node_topology_localroots | length %} +{% for peer in cardano_node_topology_localroots %} + { + "address": "{{ peer.address }}", + "port": {{ peer.port | int }} +{% if loop.index == peer_count %} + } +{% else %} + }, +{% endif %} +{% endfor %} + ], + "advertise": false, + "trustable": false, + "valency": 1 + } + ], + "publicRoots": [ + { + "accessPoints": [ +{% set peer_count = cardano_node_topology_publicroots | length %} +{% for peer in cardano_node_topology_publicroots %} + { + "address": "{{ peer.address }}", + "port": {{ peer.port | int }} +{% if loop.index == peer_count %} + } +{% else %} + }, {% endif %} {% endfor %} - ] + ], + "advertise": false + } + ], + "useLedgerAfterSlot": {{ cardano_node_topology_use_ledger_after_slot }} }