SVMKit allows you to manage Solana SVM software components using infrastructure as code.
Project description
Pulumi SVMKit
The SVMKit Pulumi provider, located in the provider directory, facilitates infrastructure as code (IaC) for managing Solana nodes and related resources. With this provider, users can easily define, deploy, and manage their Solana infrastructure using Pulumi.
Development
This section provides all the necessary information to start contributing to or building SVMKit. It is divided into several subsections for clarity.
Requirement
Ensure the following tools are installed and available in your $PATH:
pulumictl- Go 1.22 or 1.latest
- NodeJS 14.x (We recommend using nvm to manage NodeJS installations)
- Yarn
- TypeScript
- Python (referred to as
python3; the system-installed version is sufficient for recent MacOS versions) - .NET
Build
$ make build install
This will build the pulumi provider, generate language sdks, and prepare host to execute the plugin locally.
Demo
You can find a catalog of example Pulumi projects to help you get started with SVMkit here.
$ cd examples/aws-agave-validator
$ yarn link @svmkit/pulumi-svmkit
$ yarn install
$ pulumi stack init demo
$ pulumi up
In this example, an Agave validator is installed on a machine via SSH, joining the Solana testnet.
Teams can add more validator clients to SVMkit, which will be accessible through the validator namespace in @svmkit/pulumi-svmkit.
new svmkit.validator.Agave(
"validator",
{
connection,
keyPairs: {
identity: validatorKey.json,
voteAccount: voteAccountKey.json,
},
flags: {
entryPoint: [
"entrypoint.testnet.solana.com:8001",
"entrypoint2.testnet.solana.com:8001",
"entrypoint3.testnet.solana.com:8001",
],
knownValidator: [
"5D1fNXzvv5NjV1ysLjirC4WY92RNsVH18vjmcszZd8on",
"7XSY3MrYnK8vq693Rju17bbPkCN3Z7KvvfvJx4kdrsSY",
"Ft5fbkqNa76vnsjYNwjDZUXoTWpP7VYm3mtsaQckQADN",
"9QxCLckBiJc783jnMvXZubK4wH86Eqqvashtrwvcsgkv",
],
expectedGenesisHash: "4uhcVJyU9pJkvQyS88uRDiswHXSCkY3zQawwpjk2NsNY",
useSnapshotArchivesAtStartup: "when-newest",
rpcPort: 8899,
privateRPC: true,
onlyKnownRPC: true,
dynamicPortRange: "8002-8020",
gossipPort: 8001,
rpcBindAddress: "0.0.0.0",
walRecoveryMode: "skip_any_corrupted_record",
limitLedgerSize: 50000000,
blockProductionMethod: "central-scheduler",
fullSnapshotIntervalSlots: 1000,
noWaitForVoteToStartLeader: true,
},
},
{
dependsOn: [instance],
}
);
Repository Structure
The repository is organized as follows:
| Directory/File | Description |
|---|---|
provider/ |
Contains the build and implementation logic for the SVMkit Pulumi provider. |
sdk/ |
Houses the generated code libraries. |
examples/ |
Includes Pulumi programs for local testing and CI usage. |
Makefile and README |
Standard project files for building and documentation. |
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file pulumi_svmkit-0.4.2.tar.gz.
File metadata
- Download URL: pulumi_svmkit-0.4.2.tar.gz
- Upload date:
- Size: 19.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a5e799e90a2d2c05b564351846a61aa1bfc9a13fb859eea7cab554b2b7969413
|
|
| MD5 |
d42aede95256bb06a92817a807ba6cf7
|
|
| BLAKE2b-256 |
9d785d4ee52e1d49f6529b01b95d3cb4d33a8881f33ed319f81d2d9abdcae5cc
|