use Geth Auth RPC endpoints for Engine API

Needs JWT secrets configured and changes to Consul queries.

Signed-off-by: Jakub Sokołowski <jakub@status.im>
This commit is contained in:
Jakub Sokołowski 2022-08-11 19:23:41 +02:00
parent f0aa49e60a
commit 823196a0d9
No known key found for this signature in database
GPG Key ID: 09AA5403E54D9931
10 changed files with 35 additions and 39 deletions

View File

@ -29,7 +29,7 @@ beacon_node_dist_validators_enabled: false
# Bootnodes should subscribe to all subnets # Bootnodes should subscribe to all subnets
beacon_node_subscribe_all: true beacon_node_subscribe_all: true
# HTTP RPC support is unstable # HTTP RPC support is unstable
beacon_node_web3_urls: '{{ beacon_node_web3_urls_all | reject("match", "^http://") }}' beacon_node_web3_urls: '{{ beacon_node_web3_urls_all }}'
# Periodic resync to save space # Periodic resync to save space
beacon_node_resync_timer_enabled: '{{ idx % 2 == 1 }}' beacon_node_resync_timer_enabled: '{{ idx % 2 == 1 }}'
beacon_node_resync_timer_frequency: 'weekly' beacon_node_resync_timer_frequency: 'weekly'

View File

@ -40,7 +40,8 @@ beacon_node_dist_validators_end: '{{ node.end | mandatory }}'
# Windows service user # Windows service user
beacon_node_service_user_pass: '{{lookup("bitwarden", "nimbus/windows", field="password")}}' beacon_node_service_user_pass: '{{lookup("bitwarden", "nimbus/windows", field="password")}}'
# HTTP RPC support is unstable # HTTP RPC support is unstable
beacon_node_web3_urls: '{{ beacon_node_web3_urls_all | reject("match", "^http://") }}' beacon_node_web3_urls: '{{ beacon_node_web3_urls_all }}'
beacon_node_web3_jwt_secret: '{{lookup("bitwarden", "nimbus/jwt-token")}}'
# Split by hostname for more central location # Split by hostname for more central location
nodes_layout: nodes_layout:

View File

@ -46,22 +46,22 @@
- name: infra-role-beacon-node-linux - name: infra-role-beacon-node-linux
src: git@github.com:status-im/infra-role-beacon-node-linux.git src: git@github.com:status-im/infra-role-beacon-node-linux.git
version: aaa9c09a720ea1ff0dc52889e888fe45254c4366 version: 58fab0c4b2e261131a251a655b5476ab95d05911
scm: git scm: git
- name: infra-role-beacon-node-windows - name: infra-role-beacon-node-windows
src: git@github.com:status-im/infra-role-beacon-node-windows.git src: git@github.com:status-im/infra-role-beacon-node-windows.git
version: c1b64c611331f9d1b6f456ffe8a9004dacb3b730 version: d24d404206b9817b9b8e0fcd817e375655917b1b
scm: git scm: git
- name: infra-role-beacon-node-macos - name: infra-role-beacon-node-macos
src: git@github.com:status-im/infra-role-beacon-node-macos.git src: git@github.com:status-im/infra-role-beacon-node-macos.git
version: 4e50f87201cee38e04995c7056c8ad98a34a26be version: ca2ad38067941e98264597ac9a8429def2e9db33
scm: git scm: git
- name: infra-role-nimbus-eth1 - name: infra-role-nimbus-eth1
src: git@github.com:status-im/infra-role-nimbus-eth1.git src: git@github.com:status-im/infra-role-nimbus-eth1.git
version: 4de341ed040c7af81fe82abca664337ed107948f version: b3490cde3b77484f32716689af5127d783b436d6
scm: git scm: git
- name: infra-role-nimbus-fluffy - name: infra-role-nimbus-fluffy

View File

@ -13,5 +13,6 @@ infura_api_tokens:
- 'cccccccccccccccccccccccccccccccc' - 'cccccccccccccccccccccccccccccccc'
``` ```
And the more we have the less likely that we hit the Infura threshold. And the more we have the less likely that we hit the Infura threshold.
Infura endpoints are only used for Mainnet.
The Geth node Consul service is expected to have an `url` in metadata. The Geth node Consul service is expected to have an `url` in metadata.

View File

@ -9,7 +9,10 @@ eth1_network_name: '{{ eth2_to_eth1_map[eth2_network_name] | mandatory }}'
geth_node_api_fleet_name: 'nimbus.geth' geth_node_api_fleet_name: 'nimbus.geth'
geth_node_api_consul_names: geth_node_api_consul_names:
- 'geth-{{ eth1_network_name | mandatory }}' - 'geth-{{ eth1_network_name | mandatory }}'
- 'openeth-{{ eth1_network_name | mandatory }}'
# No Auth RPC setup yet
# - 'openeth-{{ eth1_network_name | mandatory }}'
#
geth_api_addresses: [] geth_api_addresses: []
# The more the merrier, since we don't want to hit Infura throttling. # The more the merrier, since we don't want to hit Infura throttling.
infura_api_tokens: infura_api_tokens:

View File

@ -4,25 +4,17 @@
url: '{{ consul_catalog_url }}/datacenters' url: '{{ consul_catalog_url }}/datacenters'
register: data_centers register: data_centers
- name: Find available Geth API RPC services - name: Find available Geth API Auth RPC services
uri: uri:
url: '{{ consul_catalog_url }}/service/{{ service_name }}-rpc?dc={{ item }}&tag={{ geth_node_api_fleet_name }}' url: '{{ consul_catalog_url }}/service/{{ service_name }}-authrpc?dc={{ item }}&tag={{ geth_node_api_fleet_name }}'
with_items: '{{ data_centers.json }}' with_items: '{{ data_centers.json }}'
register: geth_rpc_services register: geth_rpc_services
- name: Find available Geth API WebSocket services
uri:
url: '{{ consul_catalog_url }}/service/{{ service_name }}-ws?dc={{ item }}&tag={{ geth_node_api_fleet_name }}'
with_items: '{{ data_centers.json }}'
register: geth_ws_services
# On Windows json attribute is missing when it's []. # On Windows json attribute is missing when it's [].
- name: Extract Geth websocket IP and port - name: Extract Geth websocket IP and port
set_fact: set_fact:
geth_api_addresses: | geth_api_addresses: |
{{ geth_api_addresses + {{ (geth_api_addresses + geth_rpc_services.results)
(geth_rpc_services.results
+ geth_ws_services.results)
| sum(attribute="json", start=[]) | sum(attribute="json", start=[])
| map(attribute='ServiceMeta.url') | map(attribute="ServiceMeta.url")
| list }} | list }}

View File

@ -6,30 +6,20 @@
return_content: true return_content: true
register: data_centers register: data_centers
- name: Find available Geth API RPC services - name: Find available Geth API Auth RPC services
win_uri: win_uri:
url: '{{ consul_catalog_url }}/service/{{ service_name }}-rpc?dc={{ item }}&tag={{ geth_node_api_fleet_name }}' url: '{{ consul_catalog_url }}/service/{{ service_name }}-authrpc?dc={{ item }}&tag={{ geth_node_api_fleet_name }}'
content_type: 'application/json' content_type: 'application/json'
return_content: true return_content: true
with_items: '{{ data_centers.json }}' with_items: '{{ data_centers.json }}'
register: geth_rpc_services register: geth_rpc_services
- name: Find available Geth WebSocket services
win_uri:
url: '{{ consul_catalog_url }}/service/{{ service_name }}-ws?dc={{ item }}&tag={{ geth_node_api_fleet_name }}'
content_type: 'application/json'
return_content: true
with_items: '{{ data_centers.json }}'
register: geth_ws_services
# On Windows json attribute is missing when it's []. # On Windows json attribute is missing when it's [].
- name: Extract Geth websocket IP and port - name: Extract Geth websocket IP and port
set_fact: set_fact:
geth_api_addresses: | geth_api_addresses: |
{{ geth_api_addresses + {{ (geth_api_addresses + geth_rpc_services.results)
(geth_rpc_services.results
+ geth_ws_services.results)
| selectattr("json", "defined") | selectattr("json", "defined")
| sum(attribute="json", start=[]) | sum(attribute="json", start=[])
| map(attribute='ServiceMeta.url') | map(attribute="ServiceMeta.url")
| list }} | list }}

View File

@ -13,5 +13,8 @@
- name: Extract Goerli Geth WebSocket URL - name: Extract Goerli Geth WebSocket URL
set_fact: set_fact:
# our nodes first (will be used by default) then an infura node # Our nodes first (will be used by default) then an Infura node.
beacon_node_web3_urls_all: "{{ geth_api_addresses + [ selected_infura_url ] }}" # Currently only Mainnet has not had it's merge, so it can use Infura.
beacon_node_web3_urls_all: |
{{ geth_api_addresses +
(eth1_network_name == "mainnet") | ternary([selected_infura_url], []) }}

View File

@ -4,8 +4,9 @@ geth_service_name: 'geth-kiln-{{ "%02d"|format(idx|int+1) }}'
geth_network_name: 'kiln' geth_network_name: 'kiln'
geth_sync_mode: 'snap' geth_sync_mode: 'snap'
geth_log_level_name: info geth_log_level_name: info
# Geth auth # Geth auth & JWT token
geth_account_pass: '{{lookup("bitwarden", "nimbus/geth", field="password")}}' geth_account_pass: '{{lookup("bitwarden", "nimbus/geth", field="password")}}'
geth_authrpc_jwtsecret: '{{lookup("bitwarden", "nimbus/jwt-token")}}'
# Memory settings # Memory settings
geth_cont_mem_ratio: 0.3 geth_cont_mem_ratio: 0.3
# Genesis # Genesis
@ -21,6 +22,8 @@ geth_metrics_port: '{{ 6060 + idx|int + 1 }}'
geth_rpc_enabled: true geth_rpc_enabled: true
geth_rpc_addr: '0.0.0.0' geth_rpc_addr: '0.0.0.0'
geth_rpc_port: '{{ 8545 + idx|int + 1 }}' geth_rpc_port: '{{ 8545 + idx|int + 1 }}'
geth_authrpc_addr: '0.0.0.0'
geth_authrpc_port: '{{ 8551 + idx|int + 1 }}'
geth_websocket_enabled: true geth_websocket_enabled: true
geth_websocket_addr: '0.0.0.0' geth_websocket_addr: '0.0.0.0'
geth_websocket_port: '{{ 9546 + idx|int + 1 }}' geth_websocket_port: '{{ 9546 + idx|int + 1 }}'
@ -35,7 +38,7 @@ beacon_node_build_frequency: 'daily'
beacon_node_validator_monitor_auto: true beacon_node_validator_monitor_auto: true
beacon_node_validator_monitor_totals: true beacon_node_validator_monitor_totals: true
# Eth1 Sync # Eth1 Sync
beacon_node_web3_urls: ['ws://{{ hostname }}.wg:{{ geth_websocket_port }}'] beacon_node_web3_urls: ['http://localhost:{{ geth_authrpc_port }}']
# Validators from nimbus-private repo # Validators from nimbus-private repo
beacon_node_dist_validators_enabled: '{{ node.start is defined and node.end is defined }}' beacon_node_dist_validators_enabled: '{{ node.start is defined and node.end is defined }}'
beacon_node_dist_validators_start: '{{ node.start | mandatory }}' beacon_node_dist_validators_start: '{{ node.start | mandatory }}'

View File

@ -4,8 +4,9 @@ geth_service_name: 'geth-sepolia-{{ "%02d"|format(idx|int+1) }}'
geth_network_name: 'sepolia' geth_network_name: 'sepolia'
geth_sync_mode: 'full' geth_sync_mode: 'full'
geth_log_level_name: info geth_log_level_name: info
# Geth auth # Geth auth & JWT token
geth_account_pass: '{{lookup("bitwarden", "nimbus/geth", field="password")}}' geth_account_pass: '{{lookup("bitwarden", "nimbus/geth", field="password")}}'
geth_authrpc_jwtsecret: '{{lookup("bitwarden", "nimbus/jwt-token")}}'
# Memory settings # Memory settings
geth_cont_mem_ratio: 0.3 geth_cont_mem_ratio: 0.3
# Genesis # Genesis
@ -16,6 +17,8 @@ geth_metrics_port: '{{ 6060 + idx|int + 11 }}'
geth_rpc_enabled: true geth_rpc_enabled: true
geth_rpc_addr: '0.0.0.0' geth_rpc_addr: '0.0.0.0'
geth_rpc_port: '{{ 8545 + idx|int + 11 }}' geth_rpc_port: '{{ 8545 + idx|int + 11 }}'
geth_authrpc_addr: '0.0.0.0'
geth_authrpc_port: '{{ 8551 + idx|int + 11 }}'
geth_websocket_enabled: true geth_websocket_enabled: true
geth_websocket_addr: '0.0.0.0' geth_websocket_addr: '0.0.0.0'
geth_websocket_port: '{{ 9546 + idx|int + 11 }}' geth_websocket_port: '{{ 9546 + idx|int + 11 }}'
@ -35,7 +38,7 @@ beacon_node_build_frequency: 'daily'
beacon_node_validator_monitor_auto: true beacon_node_validator_monitor_auto: true
beacon_node_validator_monitor_totals: true beacon_node_validator_monitor_totals: true
#Eth1 Sync #Eth1 Sync
beacon_node_web3_urls: ['ws://localhost:{{ geth_websocket_port }}'] beacon_node_web3_urls: ['http://localhost:{{ geth_authrpc_port }}']
# Validators from nimbus-private repo¬ # Validators from nimbus-private repo¬
beacon_node_dist_validators_enabled: '{{ node.start is defined and node.end is defined }}' beacon_node_dist_validators_enabled: '{{ node.start is defined and node.end is defined }}'
beacon_node_dist_validators_start: '{{ node.start | mandatory }}' beacon_node_dist_validators_start: '{{ node.start | mandatory }}'