node_deployer

package module
v0.1.44 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 13, 2024 License: Apache-2.0, MIT Imports: 4 Imported by: 0

README

node_deployer

This is a pulumi package to deploy ethereum nodes on various platforms. The current implementation allows you to define individual ConsensusClientComponent and ExecutionClientComponent components and deploy them on a single machine or multiple machines via pulumi. The package is designed to be extensible and can be used to any distinct pair of consensus and execution clients. There are also helper functions located in the utils directory to help with the deployment of the nodes.

Requirements

  • Requires the following users and groups to exist on the machine:
    • erigon
    • geth
    • lighthouse
    • lodestar
    • nimbus
    • prysm
    • reth
    • teku

Example Node Deployment

The following is an example of how to deploy a node with reth for the EL and lighthouse for the CL.

package main

import (
    "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    "github.com/pulumi/pulumi/sdk/v3/go/pulumi/config"
    "github.com/pulumi/pulumi-command/sdk/go/command/remote"
    "github.com/rswanson/node_deployer/executionClient" 
    "github.com/rswanson/node_deployer/consensusClient"
)

func main() {
    pulumi.Run(func(ctx *pulumi.Context) error {
        cfg := config.New(ctx, "")

        connection := &remote.ConnectionArgs{
            Host: cfg.Require("host"),
            Port: cfg.Require("port"),
            Username: cfg.Require("username"),
            PrivateKey: cfg.RequireSecret("privateKey"),
        }
        
        // Create a new instance of the reth execution client component
        _, err := executionClient.NewExecutionClientComponent(ctx, "rethExecutionClient", &executionClient.ExecutionClientComponentArgs{
            // Define the execution client component arguments
            Client: "reth",
            Network: "mainnet",
            DataDir: "/data/mainnet/reth",
            DeploymentType: "source",
            Connection: connection,
        })
        if err != nil {
            return err
        }

        // Create a new instance of the lighthouse consensus client component
        _, err = consensusClient.NewConsensusClientComponent(ctx, "lighthouseExecutionClient", &consensusClient.ConsensusClientComponentArgs{
            // Define the consensus client component arguments
            Client: "lighthouse",
            Network: "mainnet",
            DataDir: "/data/mainnet/lighthouse",
            DeploymentType: "source",
            Connection: connection,
        })
        if err != nil {
            return err
        }

        return nil
    })
}

Documentation

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL