diff --git a/cli/deno.json b/cli/deno.json index cacabd18..0cf69159 100644 --- a/cli/deno.json +++ b/cli/deno.json @@ -1,6 +1,6 @@ { "name": "@slv/cli", - "version": "0.10.0", + "version": "0.10.1", "exports": "./dist/exe", "publish": { "include": [ diff --git a/cmn/constants/version.ts b/cmn/constants/version.ts index 317ce10b..afdef8cf 100644 --- a/cmn/constants/version.ts +++ b/cmn/constants/version.ts @@ -2,7 +2,7 @@ // e.g.: VERSION + SOLANA CLI NAME + NETWORK = '0.0.1' only numbers and dots // SLV version -export const VERSION = '0.10.0' +export const VERSION = '0.10.1' // Component versions export const VERSION_SOLANA_TESTNET = '3.1.8' diff --git a/deno.json b/deno.json index ae8793bf..49f642e6 100644 --- a/deno.json +++ b/deno.json @@ -18,7 +18,7 @@ "docker:rm": "bash scripts/docker-systemd-rm.sh", "upload:script": "deno run -A cli/uploadScript.ts", "upload:exe": "deno run -A cli/uploadExe.ts", - "upload:template": "tar -czf dist/template.tar.gz ./template/0.10.0 && deno run -A cli/uploadTemplate.ts", + "upload:template": "tar -czf dist/template.tar.gz ./template/0.10.1 && deno run -A cli/uploadTemplate.ts", "purge:cache": "deno run -A cmn/lib/purgeR2Cache.ts" }, "imports": { diff --git a/sh/0.9.961/install b/sh/0.10.1/install similarity index 99% rename from sh/0.9.961/install rename to sh/0.10.1/install index a95f4a2e..077fb2bb 100644 --- a/sh/0.9.961/install +++ b/sh/0.10.1/install @@ -2,7 +2,7 @@ set -e -VERSION="0.9.961" +VERSION="0.10.1" BASE_URL="https://storage.slv.dev/slv" GRPC_TEST_URL_LINUX="https://storage.elsoul.nl/grpc_test" GRPC_TEST_URL_MAC="https://storage.elsoul.nl/grpc_test_mac" diff --git a/sh/install b/sh/install index 685afede..077fb2bb 100644 --- a/sh/install +++ b/sh/install @@ -2,7 +2,7 @@ set -e -VERSION="0.10.0" +VERSION="0.10.1" BASE_URL="https://storage.slv.dev/slv" GRPC_TEST_URL_LINUX="https://storage.elsoul.nl/grpc_test" GRPC_TEST_URL_MAC="https://storage.elsoul.nl/grpc_test_mac" diff --git a/template/0.10.1/.claude/AGENTS.md b/template/0.10.1/.claude/AGENTS.md new file mode 100644 index 00000000..72a1532a --- /dev/null +++ b/template/0.10.1/.claude/AGENTS.md @@ -0,0 +1,30 @@ +# Claude Agent Instructions — SLV Ansible Templates + +## ⚠️ SECURITY — PUBLIC OSS REPOSITORY +- **NEVER commit secrets, API keys, tokens, passwords, or private IPs** +- Review every diff before committing + +## Project +SLV (Solana Validator Launcher) Ansible playbooks. OSS: https://github.com/ValidatorsDAO/slv + +## Structure +- `ansible/cmn/` — Shared tasks +- `ansible/mainnet-rpc/` — Mainnet RPC (Index + gRPC Geyser) +- `ansible/mainnet-validator/` — Mainnet Validators +- `ansible/testnet-*` / `ansible/devnet-*` — Other networks +- `jinja/` — Jinja2 config templates + +## Key Variables +- `validator_type`: agave | jito | firedancer-agave | firedancer-jito | frankendancer +- `rpc_type`: "Index RPC" | "Geyser gRPC" | "Index RPC + gRPC" +- All passed as `extra_vars` at runtime + +## Agents +- **Cecil**: Validator specialist (mainnet-validator/, testnet-validator/) +- **Tina**: RPC specialist (mainnet-rpc/, testnet-rpc/, devnet-rpc/) +- **Cloud**: gRPC Geyser specialist (geyser files in rpc dirs) + +## Conventions +- `init.yml` = full node initialization from bare metal +- `build_solana.yml` preferred over `install_solana.yml` +- Ansible user: `solv` diff --git a/template/0.10.1/.codex/AGENTS.md b/template/0.10.1/.codex/AGENTS.md new file mode 100644 index 00000000..89d112db --- /dev/null +++ b/template/0.10.1/.codex/AGENTS.md @@ -0,0 +1,25 @@ +# Codex Agent Instructions — SLV Ansible Templates + +## ⚠️ SECURITY — PUBLIC OSS REPOSITORY +- **NEVER commit secrets, API keys, tokens, passwords, or private IPs** +- Review every diff before committing + +## Project +SLV Ansible playbooks for deploying Solana nodes (Validator, RPC, gRPC Geyser). + +## Structure +- `ansible/cmn/` — Shared tasks +- `ansible/mainnet-rpc/` — Mainnet RPC (Index + gRPC) +- `ansible/mainnet-validator/` — Mainnet Validators +- `ansible/testnet-*` / `ansible/devnet-*` — Other networks +- `jinja/` — Jinja2 config templates + +## Key Variables +- `validator_type`: agave | jito | firedancer-agave | firedancer-jito | frankendancer +- `rpc_type`: "Index RPC" | "Geyser gRPC" | "Index RPC + gRPC" +- All passed as `extra_vars` at runtime + +## Conventions +- `init.yml` = full node initialization +- `build_solana.yml` preferred over `install_solana.yml` +- User: `solv` diff --git a/template/0.10.1/AGENTS.md b/template/0.10.1/AGENTS.md new file mode 100644 index 00000000..edf029ab --- /dev/null +++ b/template/0.10.1/AGENTS.md @@ -0,0 +1,68 @@ +# SLV Ansible Template — Agent Guide + +## ⚠️ SECURITY — READ FIRST + +**This is a public OSS repository (ValidatorsDAO/slv).** + +- **NEVER commit secrets, API keys, tokens, passwords, or private IPs** +- **NEVER commit .env files, credentials, or internal infrastructure details** +- **Double-check every diff before committing** — if in doubt, don't commit +- Use placeholder values (e.g., `YOUR_API_KEY`, `x.x.x.x`) in examples +- Ansible `extra_vars` are passed at runtime, not stored here + +## Overview + +This directory contains Ansible playbooks and Jinja2 templates for deploying and managing Solana nodes. + +### Directory Structure + +``` +ansible/ +├── cmn/ # Common tasks (shared across all types) +│ ├── build_solana.yml # Build Solana from source (preferred) +│ ├── create_user.yml # Create solv user +│ ├── optimize_system.yml # System tuning +│ ├── mount_disks.yml # Disk partitioning & mount +│ └── ... +├── mainnet-rpc/ # Mainnet RPC (Index RPC & Geyser gRPC) +│ ├── init.yml # Full initialization playbook +│ ├── geyser_build.yml # Yellowstone Geyser plugin build +│ ├── geyser_richat_build.yml # Richat Geyser build (recommended) +│ └── ... +├── mainnet-validator/ # Mainnet Validator +│ ├── init.yml # Full initialization (supports all validator_types) +│ ├── init-jito.yml # Jito-specific init +│ ├── init-firedancer.yml # Firedancer-specific init +│ └── ... +├── testnet-rpc/ # Testnet RPC +├── testnet-validator/ # Testnet Validator +├── devnet-rpc/ # Devnet RPC +jinja/ # Jinja2 templates for config generation +``` + +### Key Concepts + +1. **`validator_type`** — Controls the node software stack: + - `agave` | `jito` | `firedancer-agave` | `firedancer-jito` | `frankendancer` + +2. **`rpc_type`** — (Mainnet RPC only) Controls RPC features: + - `Index RPC` | `Geyser gRPC` | `Index RPC + gRPC` + +3. **All variables can be passed via `extra_vars`** — No need to edit `versions.yml`. + +4. **`build_solana.yml` is preferred** over `install_solana.yml` (source build vs pre-built binary). + +### Agent Assignments + +| Agent | Specialty | Scope | +|-------|-----------|-------| +| **Cecil** | Validator | `mainnet-validator/`, `testnet-validator/` | +| **Tina** | RPC | `mainnet-rpc/`, `testnet-rpc/`, `devnet-rpc/` (except geyser) | +| **Cloud** | gRPC Geyser | Geyser-related files in all rpc dirs | + +### Execution Pattern + +``` +API → kafka queue → ansible-api POST /apply + → ansible-playbook -i "{ip}," -u solv {playbookPath} --extra-vars '{json}' +``` diff --git a/template/0.9.961/ansible/cmn/add_solv.yml b/template/0.10.1/ansible/cmn/add_solv.yml similarity index 100% rename from template/0.9.961/ansible/cmn/add_solv.yml rename to template/0.10.1/ansible/cmn/add_solv.yml diff --git a/template/0.9.961/ansible/cmn/build_agave.yml b/template/0.10.1/ansible/cmn/build_agave.yml similarity index 100% rename from template/0.9.961/ansible/cmn/build_agave.yml rename to template/0.10.1/ansible/cmn/build_agave.yml diff --git a/template/0.9.961/ansible/cmn/build_jito.yml b/template/0.10.1/ansible/cmn/build_jito.yml similarity index 100% rename from template/0.9.961/ansible/cmn/build_jito.yml rename to template/0.10.1/ansible/cmn/build_jito.yml diff --git a/template/0.9.961/ansible/cmn/build_solana.yml b/template/0.10.1/ansible/cmn/build_solana.yml similarity index 72% rename from template/0.9.961/ansible/cmn/build_solana.yml rename to template/0.10.1/ansible/cmn/build_solana.yml index 214094df..1764976e 100644 --- a/template/0.9.961/ansible/cmn/build_solana.yml +++ b/template/0.10.1/ansible/cmn/build_solana.yml @@ -8,4 +8,4 @@ when: validator_type in ['agave', 'firedancer-agave'] - import_playbook: build_jito.yml - when: validator_type in ['jito', 'firedancer-jito', 'firedancer'] + when: validator_type in ['jito', 'jito-bam', 'firedancer-jito', 'firedancer'] diff --git a/template/0.9.961/ansible/cmn/copy_restart_sh.yml b/template/0.10.1/ansible/cmn/copy_restart_sh.yml similarity index 100% rename from template/0.9.961/ansible/cmn/copy_restart_sh.yml rename to template/0.10.1/ansible/cmn/copy_restart_sh.yml diff --git a/template/0.9.961/ansible/cmn/copy_rpc_keys.yml b/template/0.10.1/ansible/cmn/copy_rpc_keys.yml similarity index 100% rename from template/0.9.961/ansible/cmn/copy_rpc_keys.yml rename to template/0.10.1/ansible/cmn/copy_rpc_keys.yml diff --git a/template/0.9.961/ansible/cmn/create_user.yml b/template/0.10.1/ansible/cmn/create_user.yml similarity index 100% rename from template/0.9.961/ansible/cmn/create_user.yml rename to template/0.10.1/ansible/cmn/create_user.yml diff --git a/template/0.9.961/ansible/cmn/disable_swap.yml b/template/0.10.1/ansible/cmn/disable_swap.yml similarity index 100% rename from template/0.9.961/ansible/cmn/disable_swap.yml rename to template/0.10.1/ansible/cmn/disable_swap.yml diff --git a/template/0.9.961/ansible/cmn/find_unmounted_disks.sh b/template/0.10.1/ansible/cmn/find_unmounted_disks.sh similarity index 100% rename from template/0.9.961/ansible/cmn/find_unmounted_disks.sh rename to template/0.10.1/ansible/cmn/find_unmounted_disks.sh diff --git a/template/0.9.961/ansible/cmn/fix_permissions.yml b/template/0.10.1/ansible/cmn/fix_permissions.yml similarity index 100% rename from template/0.9.961/ansible/cmn/fix_permissions.yml rename to template/0.10.1/ansible/cmn/fix_permissions.yml diff --git a/template/0.9.961/ansible/cmn/install_min_package.yml b/template/0.10.1/ansible/cmn/install_min_package.yml similarity index 100% rename from template/0.9.961/ansible/cmn/install_min_package.yml rename to template/0.10.1/ansible/cmn/install_min_package.yml diff --git a/template/0.9.961/ansible/cmn/install_package.yml b/template/0.10.1/ansible/cmn/install_package.yml similarity index 100% rename from template/0.9.961/ansible/cmn/install_package.yml rename to template/0.10.1/ansible/cmn/install_package.yml diff --git a/template/0.9.961/ansible/cmn/install_rust.yml b/template/0.10.1/ansible/cmn/install_rust.yml similarity index 100% rename from template/0.9.961/ansible/cmn/install_rust.yml rename to template/0.10.1/ansible/cmn/install_rust.yml diff --git a/template/0.9.961/ansible/cmn/install_solana.yml b/template/0.10.1/ansible/cmn/install_solana.yml similarity index 98% rename from template/0.9.961/ansible/cmn/install_solana.yml rename to template/0.10.1/ansible/cmn/install_solana.yml index 544321cf..fb10edb6 100644 --- a/template/0.9.961/ansible/cmn/install_solana.yml +++ b/template/0.10.1/ansible/cmn/install_solana.yml @@ -1,3 +1,6 @@ +# ⚠️ DEPRECATED: This playbook downloads pre-built binaries from storage.slv.dev +# Use cmn/build_solana.yml instead (builds from GitHub source) +# This file will be removed in a future version. --- - name: Install/Update Solana CLI (agave, jito, or jito-bam) from hosted binaries hosts: all diff --git a/template/0.9.961/ansible/cmn/mount-disks.yml b/template/0.10.1/ansible/cmn/mount-disks.yml similarity index 100% rename from template/0.9.961/ansible/cmn/mount-disks.yml rename to template/0.10.1/ansible/cmn/mount-disks.yml diff --git a/template/0.9.961/ansible/cmn/mount_disks.yml b/template/0.10.1/ansible/cmn/mount_disks.yml similarity index 100% rename from template/0.9.961/ansible/cmn/mount_disks.yml rename to template/0.10.1/ansible/cmn/mount_disks.yml diff --git a/template/0.9.961/ansible/cmn/optimize_system.yml b/template/0.10.1/ansible/cmn/optimize_system.yml similarity index 100% rename from template/0.9.961/ansible/cmn/optimize_system.yml rename to template/0.10.1/ansible/cmn/optimize_system.yml diff --git a/template/0.9.961/ansible/cmn/restart_solv.yml b/template/0.10.1/ansible/cmn/restart_solv.yml similarity index 100% rename from template/0.9.961/ansible/cmn/restart_solv.yml rename to template/0.10.1/ansible/cmn/restart_solv.yml diff --git a/template/0.9.961/ansible/cmn/rm_ledger.yml b/template/0.10.1/ansible/cmn/rm_ledger.yml similarity index 100% rename from template/0.9.961/ansible/cmn/rm_ledger.yml rename to template/0.10.1/ansible/cmn/rm_ledger.yml diff --git a/template/0.9.961/ansible/cmn/run_restarter.yml b/template/0.10.1/ansible/cmn/run_restarter.yml similarity index 100% rename from template/0.9.961/ansible/cmn/run_restarter.yml rename to template/0.10.1/ansible/cmn/run_restarter.yml diff --git a/template/0.9.961/ansible/cmn/setup_agave_ufw.yml b/template/0.10.1/ansible/cmn/setup_agave_ufw.yml similarity index 100% rename from template/0.9.961/ansible/cmn/setup_agave_ufw.yml rename to template/0.10.1/ansible/cmn/setup_agave_ufw.yml diff --git a/template/0.9.961/ansible/cmn/setup_logrotate.yml b/template/0.10.1/ansible/cmn/setup_logrotate.yml similarity index 100% rename from template/0.9.961/ansible/cmn/setup_logrotate.yml rename to template/0.10.1/ansible/cmn/setup_logrotate.yml diff --git a/template/0.9.961/ansible/cmn/setup_node_exporter.yml b/template/0.10.1/ansible/cmn/setup_node_exporter.yml similarity index 100% rename from template/0.9.961/ansible/cmn/setup_node_exporter.yml rename to template/0.10.1/ansible/cmn/setup_node_exporter.yml diff --git a/template/0.9.961/ansible/cmn/setup_norestart.yml b/template/0.10.1/ansible/cmn/setup_norestart.yml similarity index 100% rename from template/0.9.961/ansible/cmn/setup_norestart.yml rename to template/0.10.1/ansible/cmn/setup_norestart.yml diff --git a/template/0.9.961/ansible/cmn/setup_ufw.yml b/template/0.10.1/ansible/cmn/setup_ufw.yml similarity index 100% rename from template/0.9.961/ansible/cmn/setup_ufw.yml rename to template/0.10.1/ansible/cmn/setup_ufw.yml diff --git a/template/0.9.961/ansible/cmn/setup_unstaked_identity.yml b/template/0.10.1/ansible/cmn/setup_unstaked_identity.yml similarity index 100% rename from template/0.9.961/ansible/cmn/setup_unstaked_identity.yml rename to template/0.10.1/ansible/cmn/setup_unstaked_identity.yml diff --git a/template/0.9.961/ansible/cmn/software/install-grafana.yml b/template/0.10.1/ansible/cmn/software/install-grafana.yml similarity index 100% rename from template/0.9.961/ansible/cmn/software/install-grafana.yml rename to template/0.10.1/ansible/cmn/software/install-grafana.yml diff --git a/template/0.9.961/ansible/cmn/software/install-kafka.yml b/template/0.10.1/ansible/cmn/software/install-kafka.yml similarity index 100% rename from template/0.9.961/ansible/cmn/software/install-kafka.yml rename to template/0.10.1/ansible/cmn/software/install-kafka.yml diff --git a/template/0.9.961/ansible/cmn/software/install-node-exporter.yml b/template/0.10.1/ansible/cmn/software/install-node-exporter.yml similarity index 100% rename from template/0.9.961/ansible/cmn/software/install-node-exporter.yml rename to template/0.10.1/ansible/cmn/software/install-node-exporter.yml diff --git a/template/0.9.961/ansible/cmn/software/install-prometheus.yml b/template/0.10.1/ansible/cmn/software/install-prometheus.yml similarity index 100% rename from template/0.9.961/ansible/cmn/software/install-prometheus.yml rename to template/0.10.1/ansible/cmn/software/install-prometheus.yml diff --git a/template/0.9.961/ansible/cmn/software/install-redis.yml b/template/0.10.1/ansible/cmn/software/install-redis.yml similarity index 100% rename from template/0.9.961/ansible/cmn/software/install-redis.yml rename to template/0.10.1/ansible/cmn/software/install-redis.yml diff --git a/template/0.9.961/ansible/cmn/software/install-tidb.yml b/template/0.10.1/ansible/cmn/software/install-tidb.yml similarity index 100% rename from template/0.9.961/ansible/cmn/software/install-tidb.yml rename to template/0.10.1/ansible/cmn/software/install-tidb.yml diff --git a/template/0.9.961/ansible/cmn/start_firedancer.yml b/template/0.10.1/ansible/cmn/start_firedancer.yml similarity index 100% rename from template/0.9.961/ansible/cmn/start_firedancer.yml rename to template/0.10.1/ansible/cmn/start_firedancer.yml diff --git a/template/0.9.961/ansible/cmn/start_node.yml b/template/0.10.1/ansible/cmn/start_node.yml similarity index 100% rename from template/0.9.961/ansible/cmn/start_node.yml rename to template/0.10.1/ansible/cmn/start_node.yml diff --git a/template/0.9.961/ansible/cmn/start_solv.yml b/template/0.10.1/ansible/cmn/start_solv.yml similarity index 100% rename from template/0.9.961/ansible/cmn/start_solv.yml rename to template/0.10.1/ansible/cmn/start_solv.yml diff --git a/template/0.9.961/ansible/cmn/stop_firedancer.yml b/template/0.10.1/ansible/cmn/stop_firedancer.yml similarity index 100% rename from template/0.9.961/ansible/cmn/stop_firedancer.yml rename to template/0.10.1/ansible/cmn/stop_firedancer.yml diff --git a/template/0.9.961/ansible/cmn/stop_solv.yml b/template/0.10.1/ansible/cmn/stop_solv.yml similarity index 100% rename from template/0.9.961/ansible/cmn/stop_solv.yml rename to template/0.10.1/ansible/cmn/stop_solv.yml diff --git a/template/0.9.961/ansible/cmn/tasks/format_and_mount.yml b/template/0.10.1/ansible/cmn/tasks/format_and_mount.yml similarity index 100% rename from template/0.9.961/ansible/cmn/tasks/format_and_mount.yml rename to template/0.10.1/ansible/cmn/tasks/format_and_mount.yml diff --git a/template/0.9.961/ansible/cmn/update_firedancer.yml b/template/0.10.1/ansible/cmn/update_firedancer.yml similarity index 100% rename from template/0.9.961/ansible/cmn/update_firedancer.yml rename to template/0.10.1/ansible/cmn/update_firedancer.yml diff --git a/template/0.9.961/ansible/cmn/update_ubuntu.yml b/template/0.10.1/ansible/cmn/update_ubuntu.yml similarity index 100% rename from template/0.9.961/ansible/cmn/update_ubuntu.yml rename to template/0.10.1/ansible/cmn/update_ubuntu.yml diff --git a/template/0.9.961/ansible/cmn/wget_snapshot.yml b/template/0.10.1/ansible/cmn/wget_snapshot.yml similarity index 100% rename from template/0.9.961/ansible/cmn/wget_snapshot.yml rename to template/0.10.1/ansible/cmn/wget_snapshot.yml diff --git a/template/0.9.961/ansible/devnet-rpc/create-start-validator-sh.yml b/template/0.10.1/ansible/devnet-rpc/create-start-validator-sh.yml similarity index 100% rename from template/0.9.961/ansible/devnet-rpc/create-start-validator-sh.yml rename to template/0.10.1/ansible/devnet-rpc/create-start-validator-sh.yml diff --git a/template/0.9.961/ansible/devnet-rpc/geyser_build.yml b/template/0.10.1/ansible/devnet-rpc/geyser_build.yml similarity index 100% rename from template/0.9.961/ansible/devnet-rpc/geyser_build.yml rename to template/0.10.1/ansible/devnet-rpc/geyser_build.yml diff --git a/template/0.10.1/ansible/devnet-rpc/geyser_richat_build.yml b/template/0.10.1/ansible/devnet-rpc/geyser_richat_build.yml new file mode 100644 index 00000000..60ccc10e --- /dev/null +++ b/template/0.10.1/ansible/devnet-rpc/geyser_richat_build.yml @@ -0,0 +1,106 @@ +--- +- name: Build Richat Geyser plugin from source + hosts: all + vars_files: + - ~/.slv/versions.yml + become: true + vars: + working_dir: "/home/solv" + repo_url: "https://github.com/lamports-dev/richat.git" + richat_src_dir: "/home/solv/richat-src" + richat_install_root: "/home/solv/richat-geyser" + richat_current_link: "{{ richat_install_root }}/current" + richat_lib_name: "librichat_plugin_agave.so" + richat_symlink_path: "/home/solv/{{ richat_lib_name }}" + richat_config_template: "~/.slv/devnet-rpc/geyser-richat.json.j2" + richat_config_path: "/home/solv/geyser.json" + tasks: + - name: Resolve richat plugin version (overridable via -e richat_version=) + set_fact: + richat_version_resolved: "{{ richat_version | default(devnet_rpcs.richat_version | default('', true), true) }}" + + - name: Ensure richat_version is provided + assert: + that: + - richat_version_resolved != '' + fail_msg: "richat_version must be provided (via -e richat_version= or devnet_rpcs.richat_version in ~/.slv/versions.yml)" + + - name: Set paths for Richat plugin release + set_fact: + richat_release_dir: "{{ richat_install_root }}/releases/{{ richat_version_resolved }}" + + - name: Clone or update the Richat repository with specific tag + git: + repo: "{{ repo_url }}" + dest: "{{ richat_src_dir }}" + version: "{{ richat_version_resolved }}" + update: yes + force: yes + become_user: solv + + - name: Build Richat plugin-agave using Cargo + shell: | + source ~/.profile + cargo build --release -p richat-plugin-agave + args: + chdir: "{{ richat_src_dir }}" + executable: /bin/bash + become_user: solv + + - name: Verify built plugin shared object exists + stat: + path: "{{ richat_src_dir }}/target/release/{{ richat_lib_name }}" + register: richat_so_stat + + - name: Fail if plugin shared object was not built + assert: + that: + - richat_so_stat.stat.exists + fail_msg: "Build failed: {{ richat_src_dir }}/target/release/{{ richat_lib_name }} not found" + + - name: Ensure directories exist for Richat plugin + file: + path: "{{ item }}" + state: directory + owner: solv + group: solv + mode: "0755" + loop: + - "{{ richat_install_root }}" + - "{{ richat_install_root }}/releases" + - "{{ richat_release_dir }}" + + - name: Copy built plugin to release directory + copy: + src: "{{ richat_src_dir }}/target/release/{{ richat_lib_name }}" + dest: "{{ richat_release_dir }}/{{ richat_lib_name }}" + remote_src: yes + owner: solv + group: solv + mode: "0644" + + - name: Point 'current' symlink to this Richat release + file: + src: "{{ richat_release_dir }}" + dest: "{{ richat_current_link }}" + state: link + force: yes + owner: solv + group: solv + + - name: Symlink Richat plugin to stable path for geyser + file: + src: "{{ richat_release_dir }}/{{ richat_lib_name }}" + dest: "{{ richat_symlink_path }}" + state: link + force: yes + owner: solv + group: solv + + - name: Copy the geyser.json configuration file for Richat + template: + src: "{{ richat_config_template }}" + dest: "{{ richat_config_path }}" + owner: solv + group: solv + mode: "0644" diff --git a/template/0.9.961/ansible/devnet-rpc/init.yml b/template/0.10.1/ansible/devnet-rpc/init.yml similarity index 88% rename from template/0.9.961/ansible/devnet-rpc/init.yml rename to template/0.10.1/ansible/devnet-rpc/init.yml index b2db92c3..427bed0e 100644 --- a/template/0.9.961/ansible/devnet-rpc/init.yml +++ b/template/0.10.1/ansible/devnet-rpc/init.yml @@ -33,7 +33,7 @@ - import_playbook: ../cmn/optimize_system.yml - import_playbook: ../cmn/setup_norestart.yml - import_playbook: ../cmn/setup_logrotate.yml -- import_playbook: ../cmn/install_solana.yml +- import_playbook: ../cmn/build_solana.yml - import_playbook: ../cmn/setup_unstaked_identity.yml @@ -46,7 +46,12 @@ - import_playbook: create-start-validator-sh.yml when: validator_type in ['agave', 'jito', 'jito-bam'] -- import_playbook: geyser_build.yml +- import_playbook: geyser_richat_build.yml + when: + - rpc_type in ['Geyser gRPC', 'Index RPC + gRPC'] + - validator_type in ['agave', 'jito', 'jito-bam'] + +- import_playbook: install_richat.yml when: - rpc_type in ['Geyser gRPC', 'Index RPC + gRPC'] - validator_type in ['agave', 'jito', 'jito-bam'] diff --git a/template/0.9.961/ansible/devnet-rpc/install_agave.yml b/template/0.10.1/ansible/devnet-rpc/install_agave.yml similarity index 100% rename from template/0.9.961/ansible/devnet-rpc/install_agave.yml rename to template/0.10.1/ansible/devnet-rpc/install_agave.yml diff --git a/template/0.9.961/ansible/devnet-rpc/install_jito.yml b/template/0.10.1/ansible/devnet-rpc/install_jito.yml similarity index 100% rename from template/0.9.961/ansible/devnet-rpc/install_jito.yml rename to template/0.10.1/ansible/devnet-rpc/install_jito.yml diff --git a/template/0.10.1/ansible/devnet-rpc/install_richat.yml b/template/0.10.1/ansible/devnet-rpc/install_richat.yml new file mode 100644 index 00000000..11c63092 --- /dev/null +++ b/template/0.10.1/ansible/devnet-rpc/install_richat.yml @@ -0,0 +1,89 @@ +--- +- name: Build and install Richat daemon from source + hosts: all + become: true + vars_files: + - ~/.slv/versions.yml + vars: + repo_url: "https://github.com/lamports-dev/richat.git" + richat_src_dir: "/home/solv/richat-src" + richat_install_dir: "/home/solv" + richat_binary_path: "{{ richat_install_dir }}/richat" + richat_config_template: "~/.slv/devnet-rpc/richat-setting.yml.j2" + richat_config_path: "/home/solv/richat-config.yml" + richat_service_template: "~/.slv/devnet-rpc/richat.service.j2" + richat_service_path: "/etc/systemd/system/richat.service" + + tasks: + - name: Resolve richat version (override with -e richat_version=) + set_fact: + richat_version_resolved: "{{ richat_version | default(devnet_rpcs.richat_version | default('', true), true) }}" + + - name: Ensure richat version is provided + assert: + that: + - richat_version_resolved != '' + fail_msg: "richat_version must be provided (via -e richat_version= or devnet_rpcs.richat_version in ~/.slv/versions.yml)" + + - name: Clone or update the Richat repository with specific tag + git: + repo: "{{ repo_url }}" + dest: "{{ richat_src_dir }}" + version: "{{ richat_version_resolved }}" + update: yes + force: yes + become_user: solv + + - name: Build Richat binary using Cargo + shell: | + source ~/.profile + cargo build --release -p richat + args: + chdir: "{{ richat_src_dir }}" + executable: /bin/bash + become_user: solv + + - name: Verify built richat binary exists + stat: + path: "{{ richat_src_dir }}/target/release/richat" + register: richat_bin_stat + + - name: Fail if richat binary was not built + assert: + that: + - richat_bin_stat.stat.exists + fail_msg: "Build failed: {{ richat_src_dir }}/target/release/richat not found" + + - name: Copy built richat binary to install location + copy: + src: "{{ richat_src_dir }}/target/release/richat" + dest: "{{ richat_binary_path }}" + remote_src: yes + owner: solv + group: solv + mode: "0755" + + - name: Deploy richat config + template: + src: "{{ richat_config_template }}" + dest: "{{ richat_config_path }}" + owner: solv + group: solv + mode: "0644" + + - name: Deploy richat systemd service + template: + src: "{{ richat_service_template }}" + dest: "{{ richat_service_path }}" + owner: root + group: root + mode: "0644" + + - name: Reload systemd daemon + command: systemctl daemon-reload + + - name: Enable and start richat service + systemd: + name: richat.service + enabled: true + state: restarted diff --git a/template/0.9.961/ansible/devnet-rpc/install_solana.yml b/template/0.10.1/ansible/devnet-rpc/install_solana.yml similarity index 100% rename from template/0.9.961/ansible/devnet-rpc/install_solana.yml rename to template/0.10.1/ansible/devnet-rpc/install_solana.yml diff --git a/template/0.9.961/ansible/devnet-rpc/restart_node.yml b/template/0.10.1/ansible/devnet-rpc/restart_node.yml similarity index 100% rename from template/0.9.961/ansible/devnet-rpc/restart_node.yml rename to template/0.10.1/ansible/devnet-rpc/restart_node.yml diff --git a/template/0.9.961/ansible/devnet-rpc/setup_firedancer.yml b/template/0.10.1/ansible/devnet-rpc/setup_firedancer.yml similarity index 100% rename from template/0.9.961/ansible/devnet-rpc/setup_firedancer.yml rename to template/0.10.1/ansible/devnet-rpc/setup_firedancer.yml diff --git a/template/0.9.961/ansible/devnet-rpc/setup_solv_service.yml b/template/0.10.1/ansible/devnet-rpc/setup_solv_service.yml similarity index 100% rename from template/0.9.961/ansible/devnet-rpc/setup_solv_service.yml rename to template/0.10.1/ansible/devnet-rpc/setup_solv_service.yml diff --git a/template/0.9.961/ansible/devnet-rpc/start_node.yml b/template/0.10.1/ansible/devnet-rpc/start_node.yml similarity index 100% rename from template/0.9.961/ansible/devnet-rpc/start_node.yml rename to template/0.10.1/ansible/devnet-rpc/start_node.yml diff --git a/template/0.9.961/ansible/devnet-rpc/stop_node.yml b/template/0.10.1/ansible/devnet-rpc/stop_node.yml similarity index 100% rename from template/0.9.961/ansible/devnet-rpc/stop_node.yml rename to template/0.10.1/ansible/devnet-rpc/stop_node.yml diff --git a/template/0.9.961/ansible/devnet-rpc/update_geyser.yml b/template/0.10.1/ansible/devnet-rpc/update_geyser.yml similarity index 100% rename from template/0.9.961/ansible/devnet-rpc/update_geyser.yml rename to template/0.10.1/ansible/devnet-rpc/update_geyser.yml diff --git a/template/0.9.961/ansible/devnet-rpc/update_startup_config.yml b/template/0.10.1/ansible/devnet-rpc/update_startup_config.yml similarity index 100% rename from template/0.9.961/ansible/devnet-rpc/update_startup_config.yml rename to template/0.10.1/ansible/devnet-rpc/update_startup_config.yml diff --git a/template/0.9.961/ansible/mainnet-rpc/add_solv.yml b/template/0.10.1/ansible/mainnet-rpc/add_solv.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-rpc/add_solv.yml rename to template/0.10.1/ansible/mainnet-rpc/add_solv.yml diff --git a/template/0.9.961/ansible/mainnet-rpc/allow_ufw.yml b/template/0.10.1/ansible/mainnet-rpc/allow_ufw.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-rpc/allow_ufw.yml rename to template/0.10.1/ansible/mainnet-rpc/allow_ufw.yml diff --git a/template/0.9.961/ansible/mainnet-rpc/configure_hugetlbfs.yml b/template/0.10.1/ansible/mainnet-rpc/configure_hugetlbfs.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-rpc/configure_hugetlbfs.yml rename to template/0.10.1/ansible/mainnet-rpc/configure_hugetlbfs.yml diff --git a/template/0.9.961/ansible/mainnet-rpc/copy_keys.yml b/template/0.10.1/ansible/mainnet-rpc/copy_keys.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-rpc/copy_keys.yml rename to template/0.10.1/ansible/mainnet-rpc/copy_keys.yml diff --git a/template/0.9.961/ansible/mainnet-rpc/create-start-validator-sh.yml b/template/0.10.1/ansible/mainnet-rpc/create-start-validator-sh.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-rpc/create-start-validator-sh.yml rename to template/0.10.1/ansible/mainnet-rpc/create-start-validator-sh.yml diff --git a/template/0.9.961/ansible/mainnet-rpc/create-symlink.yml b/template/0.10.1/ansible/mainnet-rpc/create-symlink.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-rpc/create-symlink.yml rename to template/0.10.1/ansible/mainnet-rpc/create-symlink.yml diff --git a/template/0.9.961/ansible/mainnet-rpc/fail2ban_solana_rate_limit.yml b/template/0.10.1/ansible/mainnet-rpc/fail2ban_solana_rate_limit.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-rpc/fail2ban_solana_rate_limit.yml rename to template/0.10.1/ansible/mainnet-rpc/fail2ban_solana_rate_limit.yml diff --git a/template/0.9.961/ansible/mainnet-rpc/fail2ban_sshd.yml b/template/0.10.1/ansible/mainnet-rpc/fail2ban_sshd.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-rpc/fail2ban_sshd.yml rename to template/0.10.1/ansible/mainnet-rpc/fail2ban_sshd.yml diff --git a/template/0.10.1/ansible/mainnet-rpc/geyser_build.yml b/template/0.10.1/ansible/mainnet-rpc/geyser_build.yml new file mode 100644 index 00000000..ea989b4a --- /dev/null +++ b/template/0.10.1/ansible/mainnet-rpc/geyser_build.yml @@ -0,0 +1,56 @@ +--- +- name: Build Yellowstone Geyser gRPC plugin from source + hosts: all + vars_files: + - ~/.slv/versions.yml + become: true + vars: + working_dir: "/home/solv" + repo_url: "https://github.com/rpcpool/yellowstone-grpc.git" + geyser_install_root: "/home/solv/yellowstone-grpc" + geyser_target_dir: "{{ geyser_install_root }}/target/release" + geyser_lib_name: "libyellowstone_grpc_geyser.so" + geyser_lib_path: "{{ geyser_target_dir }}/{{ geyser_lib_name }}" + geyser_config_template: "~/.slv/mainnet-rpc/geyser.json.j2" + geyser_config_path: "/home/solv/geyser.json" + tasks: + - name: Resolve geyser version (overridable via -e geyser_version=) + set_fact: + geyser_version_resolved: "{{ geyser_version | default(mainnet_rpcs.geyser_version) }}" + + - name: Clone or update the Yellowstone gRPC repository with specific tag + git: + repo: "{{ repo_url }}" + dest: "{{ geyser_install_root }}" + version: "{{ geyser_version_resolved }}" + update: yes + force: yes + become_user: solv + + - name: Build Yellowstone gRPC plugin using Cargo + shell: | + source ~/.profile + cargo build --release + args: + chdir: "{{ geyser_install_root }}" + executable: /bin/bash + become_user: solv + + - name: Verify built shared object exists + stat: + path: "{{ geyser_lib_path }}" + register: geyser_so_stat + + - name: Fail if shared object was not built + assert: + that: + - geyser_so_stat.stat.exists + fail_msg: "Build failed: {{ geyser_lib_path }} not found after cargo build" + + - name: Copy the geyser.json configuration file + template: + src: "{{ geyser_config_template }}" + dest: "{{ geyser_config_path }}" + owner: solv + group: solv + mode: "0644" diff --git a/template/0.9.961/ansible/mainnet-rpc/geyser_richat_build.yml b/template/0.10.1/ansible/mainnet-rpc/geyser_richat_build.yml similarity index 57% rename from template/0.9.961/ansible/mainnet-rpc/geyser_richat_build.yml rename to template/0.10.1/ansible/mainnet-rpc/geyser_richat_build.yml index efc15e80..57cac835 100644 --- a/template/0.9.961/ansible/mainnet-rpc/geyser_richat_build.yml +++ b/template/0.10.1/ansible/mainnet-rpc/geyser_richat_build.yml @@ -1,10 +1,13 @@ --- -- name: Install Richat Geyser plugin from hosted binary +- name: Build Richat Geyser plugin from source hosts: all vars_files: - ~/.slv/versions.yml become: true vars: + working_dir: "/home/solv" + repo_url: "https://github.com/lamports-dev/richat.git" + richat_src_dir: "/home/solv/richat-src" richat_install_root: "/home/solv/richat-geyser" richat_current_link: "{{ richat_install_root }}/current" richat_lib_name: "librichat_plugin_agave.so" @@ -12,7 +15,7 @@ richat_config_template: "~/.slv/mainnet-rpc/geyser-richat.json.j2" richat_config_path: "/home/solv/geyser.json" tasks: - - name: Resolve richat plugin version and download URL (overridable via -e richat_version=) + - name: Resolve richat plugin version (overridable via -e richat_version=) set_fact: richat_version_resolved: "{{ richat_version | default(mainnet_rpcs.richat_version | default('', true), true) }}" @@ -22,11 +25,38 @@ - richat_version_resolved != '' fail_msg: "richat_version must be provided (via -e richat_version= or mainnet_rpcs.richat_version in ~/.slv/versions.yml)" - - name: Set paths for Richat plugin + - name: Set paths for Richat plugin release set_fact: richat_release_dir: "{{ richat_install_root }}/releases/{{ richat_version_resolved }}" - richat_download_url: "https://storage.slv.dev/richat/{{ richat_version_resolved | urlencode }}/{{ richat_lib_name }}" - richat_download_dest: "{{ richat_install_root }}/releases/{{ richat_version_resolved }}/{{ richat_lib_name }}" + + - name: Clone or update the Richat repository with specific tag + git: + repo: "{{ repo_url }}" + dest: "{{ richat_src_dir }}" + version: "{{ richat_version_resolved }}" + update: yes + force: yes + become_user: solv + + - name: Build Richat plugin-agave using Cargo + shell: | + source ~/.profile + cargo build --release -p richat-plugin-agave + args: + chdir: "{{ richat_src_dir }}" + executable: /bin/bash + become_user: solv + + - name: Verify built plugin shared object exists + stat: + path: "{{ richat_src_dir }}/target/release/{{ richat_lib_name }}" + register: richat_so_stat + + - name: Fail if plugin shared object was not built + assert: + that: + - richat_so_stat.stat.exists + fail_msg: "Build failed: {{ richat_src_dir }}/target/release/{{ richat_lib_name }} not found" - name: Ensure directories exist for Richat plugin file: @@ -40,17 +70,14 @@ - "{{ richat_install_root }}/releases" - "{{ richat_release_dir }}" - - name: Download Richat plugin shared object - get_url: - url: "{{ richat_download_url }}" - dest: "{{ richat_download_dest }}" - mode: "0644" + - name: Copy built plugin to release directory + copy: + src: "{{ richat_src_dir }}/target/release/{{ richat_lib_name }}" + dest: "{{ richat_release_dir }}/{{ richat_lib_name }}" + remote_src: yes owner: solv group: solv - force: yes - timeout: 60 - retries: 3 - delay: 2 + mode: "0644" - name: Point 'current' symlink to this Richat release file: @@ -63,7 +90,7 @@ - name: Symlink Richat plugin to stable path for geyser file: - src: "{{ richat_download_dest }}" + src: "{{ richat_release_dir }}/{{ richat_lib_name }}" dest: "{{ richat_symlink_path }}" state: link force: yes diff --git a/template/0.9.961/ansible/mainnet-rpc/init-old.yml b/template/0.10.1/ansible/mainnet-rpc/init-old.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-rpc/init-old.yml rename to template/0.10.1/ansible/mainnet-rpc/init-old.yml diff --git a/template/0.9.961/ansible/mainnet-rpc/init.yml b/template/0.10.1/ansible/mainnet-rpc/init.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-rpc/init.yml rename to template/0.10.1/ansible/mainnet-rpc/init.yml diff --git a/template/0.9.961/ansible/mainnet-rpc/init_richat_geyser.yml b/template/0.10.1/ansible/mainnet-rpc/init_richat_geyser.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-rpc/init_richat_geyser.yml rename to template/0.10.1/ansible/mainnet-rpc/init_richat_geyser.yml diff --git a/template/0.9.961/ansible/mainnet-rpc/install_agave.yml b/template/0.10.1/ansible/mainnet-rpc/install_agave.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-rpc/install_agave.yml rename to template/0.10.1/ansible/mainnet-rpc/install_agave.yml diff --git a/template/0.9.961/ansible/mainnet-rpc/install_jito.yml b/template/0.10.1/ansible/mainnet-rpc/install_jito.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-rpc/install_jito.yml rename to template/0.10.1/ansible/mainnet-rpc/install_jito.yml diff --git a/template/0.9.961/ansible/mainnet-rpc/install_of1.yml b/template/0.10.1/ansible/mainnet-rpc/install_of1.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-rpc/install_of1.yml rename to template/0.10.1/ansible/mainnet-rpc/install_of1.yml diff --git a/template/0.9.961/ansible/mainnet-rpc/install_of1_service.yml b/template/0.10.1/ansible/mainnet-rpc/install_of1_service.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-rpc/install_of1_service.yml rename to template/0.10.1/ansible/mainnet-rpc/install_of1_service.yml diff --git a/template/0.9.961/ansible/mainnet-rpc/install_package.yml b/template/0.10.1/ansible/mainnet-rpc/install_package.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-rpc/install_package.yml rename to template/0.10.1/ansible/mainnet-rpc/install_package.yml diff --git a/template/0.9.961/ansible/mainnet-rpc/install_richat.yml b/template/0.10.1/ansible/mainnet-rpc/install_richat.yml similarity index 59% rename from template/0.9.961/ansible/mainnet-rpc/install_richat.yml rename to template/0.10.1/ansible/mainnet-rpc/install_richat.yml index dfcfa59c..b62577a5 100644 --- a/template/0.9.961/ansible/mainnet-rpc/install_richat.yml +++ b/template/0.10.1/ansible/mainnet-rpc/install_richat.yml @@ -1,10 +1,12 @@ --- -- name: Install and run Richat daemon +- name: Build and install Richat daemon from source hosts: all become: true vars_files: - ~/.slv/versions.yml vars: + repo_url: "https://github.com/lamports-dev/richat.git" + richat_src_dir: "/home/solv/richat-src" richat_install_dir: "/home/solv" richat_binary_path: "{{ richat_install_dir }}/richat" richat_config_template: "~/.slv/mainnet-rpc/richat-setting.yml.j2" @@ -23,31 +25,43 @@ - richat_version_resolved != '' fail_msg: "richat_version must be provided (via -e richat_version= or mainnet_rpcs.richat_version in ~/.slv/versions.yml)" - - name: Build download URL for richat binary - set_fact: - richat_download_url: "https://storage.slv.dev/richat/{{ richat_version_resolved | urlencode }}/richat" + - name: Clone or update the Richat repository with specific tag + git: + repo: "{{ repo_url }}" + dest: "{{ richat_src_dir }}" + version: "{{ richat_version_resolved }}" + update: yes + force: yes + become_user: solv - - name: Ensure directories for richat exist - file: - path: "{{ item }}" - state: directory - owner: solv - group: solv - mode: "0755" - loop: - - "{{ richat_install_dir }}" + - name: Build Richat binary using Cargo + shell: | + source ~/.profile + cargo build --release -p richat + args: + chdir: "{{ richat_src_dir }}" + executable: /bin/bash + become_user: solv + + - name: Verify built richat binary exists + stat: + path: "{{ richat_src_dir }}/target/release/richat" + register: richat_bin_stat - - name: Download richat binary - get_url: - url: "{{ richat_download_url }}" + - name: Fail if richat binary was not built + assert: + that: + - richat_bin_stat.stat.exists + fail_msg: "Build failed: {{ richat_src_dir }}/target/release/richat not found" + + - name: Copy built richat binary to install location + copy: + src: "{{ richat_src_dir }}/target/release/richat" dest: "{{ richat_binary_path }}" - mode: "0755" + remote_src: yes owner: solv group: solv - force: yes - timeout: 60 - retries: 3 - delay: 2 + mode: "0755" - name: Deploy richat config template: diff --git a/template/0.9.961/ansible/mainnet-rpc/install_rust.yml b/template/0.10.1/ansible/mainnet-rpc/install_rust.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-rpc/install_rust.yml rename to template/0.10.1/ansible/mainnet-rpc/install_rust.yml diff --git a/template/0.9.961/ansible/mainnet-rpc/install_solana.yml b/template/0.10.1/ansible/mainnet-rpc/install_solana.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-rpc/install_solana.yml rename to template/0.10.1/ansible/mainnet-rpc/install_solana.yml diff --git a/template/0.9.961/ansible/mainnet-rpc/mount_disks.yml b/template/0.10.1/ansible/mainnet-rpc/mount_disks.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-rpc/mount_disks.yml rename to template/0.10.1/ansible/mainnet-rpc/mount_disks.yml diff --git a/template/0.9.961/ansible/mainnet-rpc/optimize_system.yml b/template/0.10.1/ansible/mainnet-rpc/optimize_system.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-rpc/optimize_system.yml rename to template/0.10.1/ansible/mainnet-rpc/optimize_system.yml diff --git a/template/0.9.961/ansible/mainnet-rpc/restart_node.yml b/template/0.10.1/ansible/mainnet-rpc/restart_node.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-rpc/restart_node.yml rename to template/0.10.1/ansible/mainnet-rpc/restart_node.yml diff --git a/template/0.9.961/ansible/mainnet-rpc/run_restarter.yml b/template/0.10.1/ansible/mainnet-rpc/run_restarter.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-rpc/run_restarter.yml rename to template/0.10.1/ansible/mainnet-rpc/run_restarter.yml diff --git a/template/0.9.961/ansible/mainnet-rpc/run_snapshot_finder.yml b/template/0.10.1/ansible/mainnet-rpc/run_snapshot_finder.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-rpc/run_snapshot_finder.yml rename to template/0.10.1/ansible/mainnet-rpc/run_snapshot_finder.yml diff --git a/template/0.9.961/ansible/mainnet-rpc/setup-solv-service.yml b/template/0.10.1/ansible/mainnet-rpc/setup-solv-service.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-rpc/setup-solv-service.yml rename to template/0.10.1/ansible/mainnet-rpc/setup-solv-service.yml diff --git a/template/0.9.961/ansible/mainnet-rpc/setup_firedancer.yml b/template/0.10.1/ansible/mainnet-rpc/setup_firedancer.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-rpc/setup_firedancer.yml rename to template/0.10.1/ansible/mainnet-rpc/setup_firedancer.yml diff --git a/template/0.9.961/ansible/mainnet-rpc/setup_logrotate.yml b/template/0.10.1/ansible/mainnet-rpc/setup_logrotate.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-rpc/setup_logrotate.yml rename to template/0.10.1/ansible/mainnet-rpc/setup_logrotate.yml diff --git a/template/0.9.961/ansible/mainnet-rpc/setup_norestart.yml b/template/0.10.1/ansible/mainnet-rpc/setup_norestart.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-rpc/setup_norestart.yml rename to template/0.10.1/ansible/mainnet-rpc/setup_norestart.yml diff --git a/template/0.9.961/ansible/mainnet-rpc/setup_ufw.yml b/template/0.10.1/ansible/mainnet-rpc/setup_ufw.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-rpc/setup_ufw.yml rename to template/0.10.1/ansible/mainnet-rpc/setup_ufw.yml diff --git a/template/0.9.961/ansible/mainnet-rpc/start-solv-service.yml b/template/0.10.1/ansible/mainnet-rpc/start-solv-service.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-rpc/start-solv-service.yml rename to template/0.10.1/ansible/mainnet-rpc/start-solv-service.yml diff --git a/template/0.9.961/ansible/mainnet-rpc/start_firedancer.yml b/template/0.10.1/ansible/mainnet-rpc/start_firedancer.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-rpc/start_firedancer.yml rename to template/0.10.1/ansible/mainnet-rpc/start_firedancer.yml diff --git a/template/0.9.961/ansible/mainnet-rpc/start_node.yml b/template/0.10.1/ansible/mainnet-rpc/start_node.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-rpc/start_node.yml rename to template/0.10.1/ansible/mainnet-rpc/start_node.yml diff --git a/template/0.9.961/ansible/mainnet-rpc/start_solv.yml b/template/0.10.1/ansible/mainnet-rpc/start_solv.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-rpc/start_solv.yml rename to template/0.10.1/ansible/mainnet-rpc/start_solv.yml diff --git a/template/0.9.961/ansible/mainnet-rpc/stop_firedancer.yml b/template/0.10.1/ansible/mainnet-rpc/stop_firedancer.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-rpc/stop_firedancer.yml rename to template/0.10.1/ansible/mainnet-rpc/stop_firedancer.yml diff --git a/template/0.9.961/ansible/mainnet-rpc/stop_node.yml b/template/0.10.1/ansible/mainnet-rpc/stop_node.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-rpc/stop_node.yml rename to template/0.10.1/ansible/mainnet-rpc/stop_node.yml diff --git a/template/0.9.961/ansible/mainnet-rpc/stop_solv.yml b/template/0.10.1/ansible/mainnet-rpc/stop_solv.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-rpc/stop_solv.yml rename to template/0.10.1/ansible/mainnet-rpc/stop_solv.yml diff --git a/template/0.9.961/ansible/mainnet-rpc/update_geyser.yml b/template/0.10.1/ansible/mainnet-rpc/update_geyser.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-rpc/update_geyser.yml rename to template/0.10.1/ansible/mainnet-rpc/update_geyser.yml diff --git a/template/0.9.961/ansible/mainnet-rpc/update_startup_config.yml b/template/0.10.1/ansible/mainnet-rpc/update_startup_config.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-rpc/update_startup_config.yml rename to template/0.10.1/ansible/mainnet-rpc/update_startup_config.yml diff --git a/template/0.9.961/ansible/mainnet-rpc/update_ubuntu.yml b/template/0.10.1/ansible/mainnet-rpc/update_ubuntu.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-rpc/update_ubuntu.yml rename to template/0.10.1/ansible/mainnet-rpc/update_ubuntu.yml diff --git a/template/0.9.961/ansible/mainnet-validator/configure_hugetlbfs.yml b/template/0.10.1/ansible/mainnet-validator/configure_hugetlbfs.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-validator/configure_hugetlbfs.yml rename to template/0.10.1/ansible/mainnet-validator/configure_hugetlbfs.yml diff --git a/template/0.9.961/ansible/mainnet-validator/copy_keys.yml b/template/0.10.1/ansible/mainnet-validator/copy_keys.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-validator/copy_keys.yml rename to template/0.10.1/ansible/mainnet-validator/copy_keys.yml diff --git a/template/0.9.961/ansible/mainnet-validator/copy_restart_sh.yml b/template/0.10.1/ansible/mainnet-validator/copy_restart_sh.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-validator/copy_restart_sh.yml rename to template/0.10.1/ansible/mainnet-validator/copy_restart_sh.yml diff --git a/template/0.9.961/ansible/mainnet-validator/create-start-validator-sh.yml b/template/0.10.1/ansible/mainnet-validator/create-start-validator-sh.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-validator/create-start-validator-sh.yml rename to template/0.10.1/ansible/mainnet-validator/create-start-validator-sh.yml diff --git a/template/0.9.961/ansible/mainnet-validator/create_overrides.yml b/template/0.10.1/ansible/mainnet-validator/create_overrides.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-validator/create_overrides.yml rename to template/0.10.1/ansible/mainnet-validator/create_overrides.yml diff --git a/template/0.9.961/ansible/mainnet-validator/deploy-start-validator-sh.yml b/template/0.10.1/ansible/mainnet-validator/deploy-start-validator-sh.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-validator/deploy-start-validator-sh.yml rename to template/0.10.1/ansible/mainnet-validator/deploy-start-validator-sh.yml diff --git a/template/0.9.961/ansible/mainnet-validator/fail2ban_solana_rate_limit.yml b/template/0.10.1/ansible/mainnet-validator/fail2ban_solana_rate_limit.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-validator/fail2ban_solana_rate_limit.yml rename to template/0.10.1/ansible/mainnet-validator/fail2ban_solana_rate_limit.yml diff --git a/template/0.9.961/ansible/mainnet-validator/init-firedancer.yml b/template/0.10.1/ansible/mainnet-validator/init-firedancer.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-validator/init-firedancer.yml rename to template/0.10.1/ansible/mainnet-validator/init-firedancer.yml diff --git a/template/0.9.961/ansible/mainnet-validator/init-jito.yml b/template/0.10.1/ansible/mainnet-validator/init-jito.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-validator/init-jito.yml rename to template/0.10.1/ansible/mainnet-validator/init-jito.yml diff --git a/template/0.9.961/ansible/mainnet-validator/init.yml b/template/0.10.1/ansible/mainnet-validator/init.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-validator/init.yml rename to template/0.10.1/ansible/mainnet-validator/init.yml diff --git a/template/0.9.961/ansible/mainnet-validator/install_agave.yml b/template/0.10.1/ansible/mainnet-validator/install_agave.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-validator/install_agave.yml rename to template/0.10.1/ansible/mainnet-validator/install_agave.yml diff --git a/template/0.9.961/ansible/mainnet-validator/install_jito.yml b/template/0.10.1/ansible/mainnet-validator/install_jito.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-validator/install_jito.yml rename to template/0.10.1/ansible/mainnet-validator/install_jito.yml diff --git a/template/0.9.961/ansible/mainnet-validator/install_rust.yml b/template/0.10.1/ansible/mainnet-validator/install_rust.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-validator/install_rust.yml rename to template/0.10.1/ansible/mainnet-validator/install_rust.yml diff --git a/template/0.9.961/ansible/mainnet-validator/install_solana.yml b/template/0.10.1/ansible/mainnet-validator/install_solana.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-validator/install_solana.yml rename to template/0.10.1/ansible/mainnet-validator/install_solana.yml diff --git a/template/0.9.961/ansible/mainnet-validator/nodowntime_migrate.yml b/template/0.10.1/ansible/mainnet-validator/nodowntime_migrate.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-validator/nodowntime_migrate.yml rename to template/0.10.1/ansible/mainnet-validator/nodowntime_migrate.yml diff --git a/template/0.9.961/ansible/mainnet-validator/restart_node.yml b/template/0.10.1/ansible/mainnet-validator/restart_node.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-validator/restart_node.yml rename to template/0.10.1/ansible/mainnet-validator/restart_node.yml diff --git a/template/0.9.961/ansible/mainnet-validator/run_snapshot_finder.yml b/template/0.10.1/ansible/mainnet-validator/run_snapshot_finder.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-validator/run_snapshot_finder.yml rename to template/0.10.1/ansible/mainnet-validator/run_snapshot_finder.yml diff --git a/template/0.9.961/ansible/mainnet-validator/set_identity_key.yml b/template/0.10.1/ansible/mainnet-validator/set_identity_key.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-validator/set_identity_key.yml rename to template/0.10.1/ansible/mainnet-validator/set_identity_key.yml diff --git a/template/0.9.961/ansible/mainnet-validator/set_identity_to_active.yml b/template/0.10.1/ansible/mainnet-validator/set_identity_to_active.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-validator/set_identity_to_active.yml rename to template/0.10.1/ansible/mainnet-validator/set_identity_to_active.yml diff --git a/template/0.9.961/ansible/mainnet-validator/set_unstaked_key.yml b/template/0.10.1/ansible/mainnet-validator/set_unstaked_key.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-validator/set_unstaked_key.yml rename to template/0.10.1/ansible/mainnet-validator/set_unstaked_key.yml diff --git a/template/0.9.961/ansible/mainnet-validator/setup_fb_ufw.yml b/template/0.10.1/ansible/mainnet-validator/setup_fb_ufw.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-validator/setup_fb_ufw.yml rename to template/0.10.1/ansible/mainnet-validator/setup_fb_ufw.yml diff --git a/template/0.9.961/ansible/mainnet-validator/setup_firedancer.yml b/template/0.10.1/ansible/mainnet-validator/setup_firedancer.yml similarity index 93% rename from template/0.9.961/ansible/mainnet-validator/setup_firedancer.yml rename to template/0.10.1/ansible/mainnet-validator/setup_firedancer.yml index cbea867b..150d703a 100644 --- a/template/0.9.961/ansible/mainnet-validator/setup_firedancer.yml +++ b/template/0.10.1/ansible/mainnet-validator/setup_firedancer.yml @@ -6,6 +6,13 @@ vars_files: - ~/.slv/versions.yml tasks: + - name: Clean up residual hugetlbfs directories on /mnt + shell: | + rm -rf /mnt/.huge /mnt/.gigantic + become: yes + become_user: root + failed_when: false + - name: Clone Firedancer repository git: repo: https://github.com/firedancer-io/firedancer.git diff --git a/template/0.9.961/ansible/mainnet-validator/setup_logrotate.yml b/template/0.10.1/ansible/mainnet-validator/setup_logrotate.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-validator/setup_logrotate.yml rename to template/0.10.1/ansible/mainnet-validator/setup_logrotate.yml diff --git a/template/0.9.961/ansible/mainnet-validator/setup_solv_service.yml b/template/0.10.1/ansible/mainnet-validator/setup_solv_service.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-validator/setup_solv_service.yml rename to template/0.10.1/ansible/mainnet-validator/setup_solv_service.yml diff --git a/template/0.9.961/ansible/mainnet-validator/setup_ufw.yml b/template/0.10.1/ansible/mainnet-validator/setup_ufw.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-validator/setup_ufw.yml rename to template/0.10.1/ansible/mainnet-validator/setup_ufw.yml diff --git a/template/0.9.961/ansible/mainnet-validator/start-solv-service.yml b/template/0.10.1/ansible/mainnet-validator/start-solv-service.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-validator/start-solv-service.yml rename to template/0.10.1/ansible/mainnet-validator/start-solv-service.yml diff --git a/template/0.9.961/ansible/mainnet-validator/start_firedancer.yml b/template/0.10.1/ansible/mainnet-validator/start_firedancer.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-validator/start_firedancer.yml rename to template/0.10.1/ansible/mainnet-validator/start_firedancer.yml diff --git a/template/0.9.961/ansible/mainnet-validator/start_node.yml b/template/0.10.1/ansible/mainnet-validator/start_node.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-validator/start_node.yml rename to template/0.10.1/ansible/mainnet-validator/start_node.yml diff --git a/template/0.9.961/ansible/mainnet-validator/start_solv.yml b/template/0.10.1/ansible/mainnet-validator/start_solv.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-validator/start_solv.yml rename to template/0.10.1/ansible/mainnet-validator/start_solv.yml diff --git a/template/0.9.961/ansible/mainnet-validator/stop_firedancer.yml b/template/0.10.1/ansible/mainnet-validator/stop_firedancer.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-validator/stop_firedancer.yml rename to template/0.10.1/ansible/mainnet-validator/stop_firedancer.yml diff --git a/template/0.9.961/ansible/mainnet-validator/stop_node.yml b/template/0.10.1/ansible/mainnet-validator/stop_node.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-validator/stop_node.yml rename to template/0.10.1/ansible/mainnet-validator/stop_node.yml diff --git a/template/0.9.961/ansible/mainnet-validator/stop_solv.yml b/template/0.10.1/ansible/mainnet-validator/stop_solv.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-validator/stop_solv.yml rename to template/0.10.1/ansible/mainnet-validator/stop_solv.yml diff --git a/template/0.9.961/ansible/mainnet-validator/switch_off_firedancer_identity.yml b/template/0.10.1/ansible/mainnet-validator/switch_off_firedancer_identity.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-validator/switch_off_firedancer_identity.yml rename to template/0.10.1/ansible/mainnet-validator/switch_off_firedancer_identity.yml diff --git a/template/0.9.961/ansible/mainnet-validator/switch_off_identity.yml b/template/0.10.1/ansible/mainnet-validator/switch_off_identity.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-validator/switch_off_identity.yml rename to template/0.10.1/ansible/mainnet-validator/switch_off_identity.yml diff --git a/template/0.9.961/ansible/mainnet-validator/switch_on_firedancer_identity.yml b/template/0.10.1/ansible/mainnet-validator/switch_on_firedancer_identity.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-validator/switch_on_firedancer_identity.yml rename to template/0.10.1/ansible/mainnet-validator/switch_on_firedancer_identity.yml diff --git a/template/0.9.961/ansible/mainnet-validator/switch_on_identity.yml b/template/0.10.1/ansible/mainnet-validator/switch_on_identity.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-validator/switch_on_identity.yml rename to template/0.10.1/ansible/mainnet-validator/switch_on_identity.yml diff --git a/template/0.9.961/ansible/mainnet-validator/update_firedancer.yml b/template/0.10.1/ansible/mainnet-validator/update_firedancer.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-validator/update_firedancer.yml rename to template/0.10.1/ansible/mainnet-validator/update_firedancer.yml diff --git a/template/0.9.961/ansible/mainnet-validator/update_startup_config.yml b/template/0.10.1/ansible/mainnet-validator/update_startup_config.yml similarity index 100% rename from template/0.9.961/ansible/mainnet-validator/update_startup_config.yml rename to template/0.10.1/ansible/mainnet-validator/update_startup_config.yml diff --git a/template/0.9.961/ansible/testnet-rpc/create-start-validator-sh.yml b/template/0.10.1/ansible/testnet-rpc/create-start-validator-sh.yml similarity index 100% rename from template/0.9.961/ansible/testnet-rpc/create-start-validator-sh.yml rename to template/0.10.1/ansible/testnet-rpc/create-start-validator-sh.yml diff --git a/template/0.9.961/ansible/testnet-rpc/geyser_build.yml b/template/0.10.1/ansible/testnet-rpc/geyser_build.yml similarity index 100% rename from template/0.9.961/ansible/testnet-rpc/geyser_build.yml rename to template/0.10.1/ansible/testnet-rpc/geyser_build.yml diff --git a/template/0.10.1/ansible/testnet-rpc/geyser_richat_build.yml b/template/0.10.1/ansible/testnet-rpc/geyser_richat_build.yml new file mode 100644 index 00000000..497bda31 --- /dev/null +++ b/template/0.10.1/ansible/testnet-rpc/geyser_richat_build.yml @@ -0,0 +1,106 @@ +--- +- name: Build Richat Geyser plugin from source + hosts: all + vars_files: + - ~/.slv/versions.yml + become: true + vars: + working_dir: "/home/solv" + repo_url: "https://github.com/lamports-dev/richat.git" + richat_src_dir: "/home/solv/richat-src" + richat_install_root: "/home/solv/richat-geyser" + richat_current_link: "{{ richat_install_root }}/current" + richat_lib_name: "librichat_plugin_agave.so" + richat_symlink_path: "/home/solv/{{ richat_lib_name }}" + richat_config_template: "~/.slv/testnet-rpc/geyser-richat.json.j2" + richat_config_path: "/home/solv/geyser.json" + tasks: + - name: Resolve richat plugin version (overridable via -e richat_version=) + set_fact: + richat_version_resolved: "{{ richat_version | default(testnet_rpcs.richat_version | default('', true), true) }}" + + - name: Ensure richat_version is provided + assert: + that: + - richat_version_resolved != '' + fail_msg: "richat_version must be provided (via -e richat_version= or testnet_rpcs.richat_version in ~/.slv/versions.yml)" + + - name: Set paths for Richat plugin release + set_fact: + richat_release_dir: "{{ richat_install_root }}/releases/{{ richat_version_resolved }}" + + - name: Clone or update the Richat repository with specific tag + git: + repo: "{{ repo_url }}" + dest: "{{ richat_src_dir }}" + version: "{{ richat_version_resolved }}" + update: yes + force: yes + become_user: solv + + - name: Build Richat plugin-agave using Cargo + shell: | + source ~/.profile + cargo build --release -p richat-plugin-agave + args: + chdir: "{{ richat_src_dir }}" + executable: /bin/bash + become_user: solv + + - name: Verify built plugin shared object exists + stat: + path: "{{ richat_src_dir }}/target/release/{{ richat_lib_name }}" + register: richat_so_stat + + - name: Fail if plugin shared object was not built + assert: + that: + - richat_so_stat.stat.exists + fail_msg: "Build failed: {{ richat_src_dir }}/target/release/{{ richat_lib_name }} not found" + + - name: Ensure directories exist for Richat plugin + file: + path: "{{ item }}" + state: directory + owner: solv + group: solv + mode: "0755" + loop: + - "{{ richat_install_root }}" + - "{{ richat_install_root }}/releases" + - "{{ richat_release_dir }}" + + - name: Copy built plugin to release directory + copy: + src: "{{ richat_src_dir }}/target/release/{{ richat_lib_name }}" + dest: "{{ richat_release_dir }}/{{ richat_lib_name }}" + remote_src: yes + owner: solv + group: solv + mode: "0644" + + - name: Point 'current' symlink to this Richat release + file: + src: "{{ richat_release_dir }}" + dest: "{{ richat_current_link }}" + state: link + force: yes + owner: solv + group: solv + + - name: Symlink Richat plugin to stable path for geyser + file: + src: "{{ richat_release_dir }}/{{ richat_lib_name }}" + dest: "{{ richat_symlink_path }}" + state: link + force: yes + owner: solv + group: solv + + - name: Copy the geyser.json configuration file for Richat + template: + src: "{{ richat_config_template }}" + dest: "{{ richat_config_path }}" + owner: solv + group: solv + mode: "0644" diff --git a/template/0.9.961/ansible/testnet-rpc/init.yml b/template/0.10.1/ansible/testnet-rpc/init.yml similarity index 91% rename from template/0.9.961/ansible/testnet-rpc/init.yml rename to template/0.10.1/ansible/testnet-rpc/init.yml index 8b46cf0d..a325660f 100644 --- a/template/0.9.961/ansible/testnet-rpc/init.yml +++ b/template/0.10.1/ansible/testnet-rpc/init.yml @@ -46,7 +46,12 @@ - import_playbook: create-start-validator-sh.yml when: validator_type in ['agave', 'jito', 'jito-bam'] -- import_playbook: geyser_build.yml +- import_playbook: geyser_richat_build.yml + when: + - rpc_type in ['Geyser gRPC', 'Index RPC + gRPC'] + - validator_type in ['agave', 'jito', 'jito-bam'] + +- import_playbook: install_richat.yml when: - rpc_type in ['Geyser gRPC', 'Index RPC + gRPC'] - validator_type in ['agave', 'jito', 'jito-bam'] diff --git a/template/0.9.961/ansible/testnet-rpc/install_agave.yml b/template/0.10.1/ansible/testnet-rpc/install_agave.yml similarity index 100% rename from template/0.9.961/ansible/testnet-rpc/install_agave.yml rename to template/0.10.1/ansible/testnet-rpc/install_agave.yml diff --git a/template/0.9.961/ansible/testnet-rpc/install_jito.yml b/template/0.10.1/ansible/testnet-rpc/install_jito.yml similarity index 100% rename from template/0.9.961/ansible/testnet-rpc/install_jito.yml rename to template/0.10.1/ansible/testnet-rpc/install_jito.yml diff --git a/template/0.10.1/ansible/testnet-rpc/install_richat.yml b/template/0.10.1/ansible/testnet-rpc/install_richat.yml new file mode 100644 index 00000000..d7d17474 --- /dev/null +++ b/template/0.10.1/ansible/testnet-rpc/install_richat.yml @@ -0,0 +1,89 @@ +--- +- name: Build and install Richat daemon from source + hosts: all + become: true + vars_files: + - ~/.slv/versions.yml + vars: + repo_url: "https://github.com/lamports-dev/richat.git" + richat_src_dir: "/home/solv/richat-src" + richat_install_dir: "/home/solv" + richat_binary_path: "{{ richat_install_dir }}/richat" + richat_config_template: "~/.slv/testnet-rpc/richat-setting.yml.j2" + richat_config_path: "/home/solv/richat-config.yml" + richat_service_template: "~/.slv/testnet-rpc/richat.service.j2" + richat_service_path: "/etc/systemd/system/richat.service" + + tasks: + - name: Resolve richat version (override with -e richat_version=) + set_fact: + richat_version_resolved: "{{ richat_version | default(testnet_rpcs.richat_version | default('', true), true) }}" + + - name: Ensure richat version is provided + assert: + that: + - richat_version_resolved != '' + fail_msg: "richat_version must be provided (via -e richat_version= or testnet_rpcs.richat_version in ~/.slv/versions.yml)" + + - name: Clone or update the Richat repository with specific tag + git: + repo: "{{ repo_url }}" + dest: "{{ richat_src_dir }}" + version: "{{ richat_version_resolved }}" + update: yes + force: yes + become_user: solv + + - name: Build Richat binary using Cargo + shell: | + source ~/.profile + cargo build --release -p richat + args: + chdir: "{{ richat_src_dir }}" + executable: /bin/bash + become_user: solv + + - name: Verify built richat binary exists + stat: + path: "{{ richat_src_dir }}/target/release/richat" + register: richat_bin_stat + + - name: Fail if richat binary was not built + assert: + that: + - richat_bin_stat.stat.exists + fail_msg: "Build failed: {{ richat_src_dir }}/target/release/richat not found" + + - name: Copy built richat binary to install location + copy: + src: "{{ richat_src_dir }}/target/release/richat" + dest: "{{ richat_binary_path }}" + remote_src: yes + owner: solv + group: solv + mode: "0755" + + - name: Deploy richat config + template: + src: "{{ richat_config_template }}" + dest: "{{ richat_config_path }}" + owner: solv + group: solv + mode: "0644" + + - name: Deploy richat systemd service + template: + src: "{{ richat_service_template }}" + dest: "{{ richat_service_path }}" + owner: root + group: root + mode: "0644" + + - name: Reload systemd daemon + command: systemctl daemon-reload + + - name: Enable and start richat service + systemd: + name: richat.service + enabled: true + state: restarted diff --git a/template/0.9.961/ansible/testnet-rpc/install_solana.yml b/template/0.10.1/ansible/testnet-rpc/install_solana.yml similarity index 100% rename from template/0.9.961/ansible/testnet-rpc/install_solana.yml rename to template/0.10.1/ansible/testnet-rpc/install_solana.yml diff --git a/template/0.9.961/ansible/testnet-rpc/restart_node.yml b/template/0.10.1/ansible/testnet-rpc/restart_node.yml similarity index 100% rename from template/0.9.961/ansible/testnet-rpc/restart_node.yml rename to template/0.10.1/ansible/testnet-rpc/restart_node.yml diff --git a/template/0.9.961/ansible/testnet-rpc/setup_firedancer.yml b/template/0.10.1/ansible/testnet-rpc/setup_firedancer.yml similarity index 100% rename from template/0.9.961/ansible/testnet-rpc/setup_firedancer.yml rename to template/0.10.1/ansible/testnet-rpc/setup_firedancer.yml diff --git a/template/0.9.961/ansible/testnet-rpc/setup_solv_service.yml b/template/0.10.1/ansible/testnet-rpc/setup_solv_service.yml similarity index 100% rename from template/0.9.961/ansible/testnet-rpc/setup_solv_service.yml rename to template/0.10.1/ansible/testnet-rpc/setup_solv_service.yml diff --git a/template/0.9.961/ansible/testnet-rpc/start_node.yml b/template/0.10.1/ansible/testnet-rpc/start_node.yml similarity index 100% rename from template/0.9.961/ansible/testnet-rpc/start_node.yml rename to template/0.10.1/ansible/testnet-rpc/start_node.yml diff --git a/template/0.9.961/ansible/testnet-rpc/stop_node.yml b/template/0.10.1/ansible/testnet-rpc/stop_node.yml similarity index 100% rename from template/0.9.961/ansible/testnet-rpc/stop_node.yml rename to template/0.10.1/ansible/testnet-rpc/stop_node.yml diff --git a/template/0.9.961/ansible/testnet-rpc/update_firedancer.yml b/template/0.10.1/ansible/testnet-rpc/update_firedancer.yml similarity index 100% rename from template/0.9.961/ansible/testnet-rpc/update_firedancer.yml rename to template/0.10.1/ansible/testnet-rpc/update_firedancer.yml diff --git a/template/0.9.961/ansible/testnet-rpc/update_geyser.yml b/template/0.10.1/ansible/testnet-rpc/update_geyser.yml similarity index 100% rename from template/0.9.961/ansible/testnet-rpc/update_geyser.yml rename to template/0.10.1/ansible/testnet-rpc/update_geyser.yml diff --git a/template/0.9.961/ansible/testnet-rpc/update_startup_config.yml b/template/0.10.1/ansible/testnet-rpc/update_startup_config.yml similarity index 100% rename from template/0.9.961/ansible/testnet-rpc/update_startup_config.yml rename to template/0.10.1/ansible/testnet-rpc/update_startup_config.yml diff --git a/template/0.9.961/ansible/testnet-rpc/wget_snapshot.yml b/template/0.10.1/ansible/testnet-rpc/wget_snapshot.yml similarity index 100% rename from template/0.9.961/ansible/testnet-rpc/wget_snapshot.yml rename to template/0.10.1/ansible/testnet-rpc/wget_snapshot.yml diff --git a/template/0.9.961/ansible/testnet-validator/add_solv.yml b/template/0.10.1/ansible/testnet-validator/add_solv.yml similarity index 100% rename from template/0.9.961/ansible/testnet-validator/add_solv.yml rename to template/0.10.1/ansible/testnet-validator/add_solv.yml diff --git a/template/0.9.961/ansible/testnet-validator/change_identity_and_restart.yml b/template/0.10.1/ansible/testnet-validator/change_identity_and_restart.yml similarity index 100% rename from template/0.9.961/ansible/testnet-validator/change_identity_and_restart.yml rename to template/0.10.1/ansible/testnet-validator/change_identity_and_restart.yml diff --git a/template/0.9.961/ansible/testnet-validator/copy_keys.yml b/template/0.10.1/ansible/testnet-validator/copy_keys.yml similarity index 100% rename from template/0.9.961/ansible/testnet-validator/copy_keys.yml rename to template/0.10.1/ansible/testnet-validator/copy_keys.yml diff --git a/template/0.9.961/ansible/testnet-validator/create-start-validator-sh-agave.yml b/template/0.10.1/ansible/testnet-validator/create-start-validator-sh-agave.yml similarity index 100% rename from template/0.9.961/ansible/testnet-validator/create-start-validator-sh-agave.yml rename to template/0.10.1/ansible/testnet-validator/create-start-validator-sh-agave.yml diff --git a/template/0.9.961/ansible/testnet-validator/create-start-validator-sh-jito.yml b/template/0.10.1/ansible/testnet-validator/create-start-validator-sh-jito.yml similarity index 100% rename from template/0.9.961/ansible/testnet-validator/create-start-validator-sh-jito.yml rename to template/0.10.1/ansible/testnet-validator/create-start-validator-sh-jito.yml diff --git a/template/0.9.961/ansible/testnet-validator/deploy-start-validator-sh.yml b/template/0.10.1/ansible/testnet-validator/deploy-start-validator-sh.yml similarity index 100% rename from template/0.9.961/ansible/testnet-validator/deploy-start-validator-sh.yml rename to template/0.10.1/ansible/testnet-validator/deploy-start-validator-sh.yml diff --git a/template/0.9.961/ansible/testnet-validator/init-agave.yml b/template/0.10.1/ansible/testnet-validator/init-agave.yml similarity index 100% rename from template/0.9.961/ansible/testnet-validator/init-agave.yml rename to template/0.10.1/ansible/testnet-validator/init-agave.yml diff --git a/template/0.9.961/ansible/testnet-validator/init-firedancer.yml b/template/0.10.1/ansible/testnet-validator/init-firedancer.yml similarity index 100% rename from template/0.9.961/ansible/testnet-validator/init-firedancer.yml rename to template/0.10.1/ansible/testnet-validator/init-firedancer.yml diff --git a/template/0.9.961/ansible/testnet-validator/init.yml b/template/0.10.1/ansible/testnet-validator/init.yml similarity index 100% rename from template/0.9.961/ansible/testnet-validator/init.yml rename to template/0.10.1/ansible/testnet-validator/init.yml diff --git a/template/0.9.961/ansible/testnet-validator/install_agave.yml b/template/0.10.1/ansible/testnet-validator/install_agave.yml similarity index 100% rename from template/0.9.961/ansible/testnet-validator/install_agave.yml rename to template/0.10.1/ansible/testnet-validator/install_agave.yml diff --git a/template/0.9.961/ansible/testnet-validator/install_firedancer.yml b/template/0.10.1/ansible/testnet-validator/install_firedancer.yml similarity index 100% rename from template/0.9.961/ansible/testnet-validator/install_firedancer.yml rename to template/0.10.1/ansible/testnet-validator/install_firedancer.yml diff --git a/template/0.9.961/ansible/testnet-validator/install_jito.yml b/template/0.10.1/ansible/testnet-validator/install_jito.yml similarity index 100% rename from template/0.9.961/ansible/testnet-validator/install_jito.yml rename to template/0.10.1/ansible/testnet-validator/install_jito.yml diff --git a/template/0.9.961/ansible/testnet-validator/install_solana.yml b/template/0.10.1/ansible/testnet-validator/install_solana.yml similarity index 100% rename from template/0.9.961/ansible/testnet-validator/install_solana.yml rename to template/0.10.1/ansible/testnet-validator/install_solana.yml diff --git a/template/0.9.961/ansible/testnet-validator/nodowntime_migrate.yml b/template/0.10.1/ansible/testnet-validator/nodowntime_migrate.yml similarity index 100% rename from template/0.9.961/ansible/testnet-validator/nodowntime_migrate.yml rename to template/0.10.1/ansible/testnet-validator/nodowntime_migrate.yml diff --git a/template/0.9.961/ansible/testnet-validator/restart_agave_with_rm_ledger.yml b/template/0.10.1/ansible/testnet-validator/restart_agave_with_rm_ledger.yml similarity index 100% rename from template/0.9.961/ansible/testnet-validator/restart_agave_with_rm_ledger.yml rename to template/0.10.1/ansible/testnet-validator/restart_agave_with_rm_ledger.yml diff --git a/template/0.9.961/ansible/testnet-validator/restart_firedancer.yml b/template/0.10.1/ansible/testnet-validator/restart_firedancer.yml similarity index 100% rename from template/0.9.961/ansible/testnet-validator/restart_firedancer.yml rename to template/0.10.1/ansible/testnet-validator/restart_firedancer.yml diff --git a/template/0.9.961/ansible/testnet-validator/restart_firedancer_with_rm_ledger.yml b/template/0.10.1/ansible/testnet-validator/restart_firedancer_with_rm_ledger.yml similarity index 100% rename from template/0.9.961/ansible/testnet-validator/restart_firedancer_with_rm_ledger.yml rename to template/0.10.1/ansible/testnet-validator/restart_firedancer_with_rm_ledger.yml diff --git a/template/0.9.961/ansible/testnet-validator/restart_node.yml b/template/0.10.1/ansible/testnet-validator/restart_node.yml similarity index 100% rename from template/0.9.961/ansible/testnet-validator/restart_node.yml rename to template/0.10.1/ansible/testnet-validator/restart_node.yml diff --git a/template/0.9.961/ansible/testnet-validator/restart_solv.yml b/template/0.10.1/ansible/testnet-validator/restart_solv.yml similarity index 100% rename from template/0.9.961/ansible/testnet-validator/restart_solv.yml rename to template/0.10.1/ansible/testnet-validator/restart_solv.yml diff --git a/template/0.9.961/ansible/testnet-validator/rm_ledger.yml b/template/0.10.1/ansible/testnet-validator/rm_ledger.yml similarity index 100% rename from template/0.9.961/ansible/testnet-validator/rm_ledger.yml rename to template/0.10.1/ansible/testnet-validator/rm_ledger.yml diff --git a/template/0.9.961/ansible/testnet-validator/set_identity_key.yml b/template/0.10.1/ansible/testnet-validator/set_identity_key.yml similarity index 100% rename from template/0.9.961/ansible/testnet-validator/set_identity_key.yml rename to template/0.10.1/ansible/testnet-validator/set_identity_key.yml diff --git a/template/0.9.961/ansible/testnet-validator/set_identity_to_active.yml b/template/0.10.1/ansible/testnet-validator/set_identity_to_active.yml similarity index 100% rename from template/0.9.961/ansible/testnet-validator/set_identity_to_active.yml rename to template/0.10.1/ansible/testnet-validator/set_identity_to_active.yml diff --git a/template/0.9.961/ansible/testnet-validator/set_unstaked_key.yml b/template/0.10.1/ansible/testnet-validator/set_unstaked_key.yml similarity index 100% rename from template/0.9.961/ansible/testnet-validator/set_unstaked_key.yml rename to template/0.10.1/ansible/testnet-validator/set_unstaked_key.yml diff --git a/template/0.9.961/ansible/testnet-validator/setup_agave.yml b/template/0.10.1/ansible/testnet-validator/setup_agave.yml similarity index 100% rename from template/0.9.961/ansible/testnet-validator/setup_agave.yml rename to template/0.10.1/ansible/testnet-validator/setup_agave.yml diff --git a/template/0.9.961/ansible/testnet-validator/setup_agave_ufw.yml b/template/0.10.1/ansible/testnet-validator/setup_agave_ufw.yml similarity index 100% rename from template/0.9.961/ansible/testnet-validator/setup_agave_ufw.yml rename to template/0.10.1/ansible/testnet-validator/setup_agave_ufw.yml diff --git a/template/0.9.961/ansible/testnet-validator/setup_firedancer.yml b/template/0.10.1/ansible/testnet-validator/setup_firedancer.yml similarity index 100% rename from template/0.9.961/ansible/testnet-validator/setup_firedancer.yml rename to template/0.10.1/ansible/testnet-validator/setup_firedancer.yml diff --git a/template/0.9.961/ansible/testnet-validator/setup_firedancer_agave.yml b/template/0.10.1/ansible/testnet-validator/setup_firedancer_agave.yml similarity index 93% rename from template/0.9.961/ansible/testnet-validator/setup_firedancer_agave.yml rename to template/0.10.1/ansible/testnet-validator/setup_firedancer_agave.yml index 1c803d66..82ba967d 100644 --- a/template/0.9.961/ansible/testnet-validator/setup_firedancer_agave.yml +++ b/template/0.10.1/ansible/testnet-validator/setup_firedancer_agave.yml @@ -6,6 +6,13 @@ vars_files: - ~/.slv/versions.yml tasks: + - name: Clean up residual hugetlbfs directories on /mnt + shell: | + rm -rf /mnt/.huge /mnt/.gigantic + become: yes + become_user: root + failed_when: false + - name: Clone Firedancer repository git: repo: https://github.com/firedancer-io/firedancer.git diff --git a/template/0.9.961/ansible/testnet-validator/setup_firedancer_jito.yml b/template/0.10.1/ansible/testnet-validator/setup_firedancer_jito.yml similarity index 93% rename from template/0.9.961/ansible/testnet-validator/setup_firedancer_jito.yml rename to template/0.10.1/ansible/testnet-validator/setup_firedancer_jito.yml index 7a0745c9..fd273a80 100644 --- a/template/0.9.961/ansible/testnet-validator/setup_firedancer_jito.yml +++ b/template/0.10.1/ansible/testnet-validator/setup_firedancer_jito.yml @@ -6,6 +6,13 @@ vars_files: - ~/.slv/versions.yml tasks: + - name: Clean up residual hugetlbfs directories on /mnt + shell: | + rm -rf /mnt/.huge /mnt/.gigantic + become: yes + become_user: root + failed_when: false + - name: Clone Firedancer repository git: repo: https://github.com/firedancer-io/firedancer.git diff --git a/template/0.9.961/ansible/testnet-validator/setup_snapshot_finder.yml b/template/0.10.1/ansible/testnet-validator/setup_snapshot_finder.yml similarity index 100% rename from template/0.9.961/ansible/testnet-validator/setup_snapshot_finder.yml rename to template/0.10.1/ansible/testnet-validator/setup_snapshot_finder.yml diff --git a/template/0.9.961/ansible/testnet-validator/setup_solv_service.yml b/template/0.10.1/ansible/testnet-validator/setup_solv_service.yml similarity index 100% rename from template/0.9.961/ansible/testnet-validator/setup_solv_service.yml rename to template/0.10.1/ansible/testnet-validator/setup_solv_service.yml diff --git a/template/0.9.961/ansible/testnet-validator/setup_solv_service_init.yml b/template/0.10.1/ansible/testnet-validator/setup_solv_service_init.yml similarity index 100% rename from template/0.9.961/ansible/testnet-validator/setup_solv_service_init.yml rename to template/0.10.1/ansible/testnet-validator/setup_solv_service_init.yml diff --git a/template/0.9.961/ansible/testnet-validator/start_firedancer.yml b/template/0.10.1/ansible/testnet-validator/start_firedancer.yml similarity index 100% rename from template/0.9.961/ansible/testnet-validator/start_firedancer.yml rename to template/0.10.1/ansible/testnet-validator/start_firedancer.yml diff --git a/template/0.9.961/ansible/testnet-validator/start_node.yml b/template/0.10.1/ansible/testnet-validator/start_node.yml similarity index 100% rename from template/0.9.961/ansible/testnet-validator/start_node.yml rename to template/0.10.1/ansible/testnet-validator/start_node.yml diff --git a/template/0.9.961/ansible/testnet-validator/start_solv.yml b/template/0.10.1/ansible/testnet-validator/start_solv.yml similarity index 100% rename from template/0.9.961/ansible/testnet-validator/start_solv.yml rename to template/0.10.1/ansible/testnet-validator/start_solv.yml diff --git a/template/0.9.961/ansible/testnet-validator/stop_firedancer.yml b/template/0.10.1/ansible/testnet-validator/stop_firedancer.yml similarity index 100% rename from template/0.9.961/ansible/testnet-validator/stop_firedancer.yml rename to template/0.10.1/ansible/testnet-validator/stop_firedancer.yml diff --git a/template/0.9.961/ansible/testnet-validator/stop_node.yml b/template/0.10.1/ansible/testnet-validator/stop_node.yml similarity index 100% rename from template/0.9.961/ansible/testnet-validator/stop_node.yml rename to template/0.10.1/ansible/testnet-validator/stop_node.yml diff --git a/template/0.9.961/ansible/testnet-validator/stop_solv.yml b/template/0.10.1/ansible/testnet-validator/stop_solv.yml similarity index 100% rename from template/0.9.961/ansible/testnet-validator/stop_solv.yml rename to template/0.10.1/ansible/testnet-validator/stop_solv.yml diff --git a/template/0.9.961/ansible/testnet-validator/switch_off_firedancer_identity.yml b/template/0.10.1/ansible/testnet-validator/switch_off_firedancer_identity.yml similarity index 100% rename from template/0.9.961/ansible/testnet-validator/switch_off_firedancer_identity.yml rename to template/0.10.1/ansible/testnet-validator/switch_off_firedancer_identity.yml diff --git a/template/0.9.961/ansible/testnet-validator/switch_off_identity.yml b/template/0.10.1/ansible/testnet-validator/switch_off_identity.yml similarity index 100% rename from template/0.9.961/ansible/testnet-validator/switch_off_identity.yml rename to template/0.10.1/ansible/testnet-validator/switch_off_identity.yml diff --git a/template/0.9.961/ansible/testnet-validator/switch_on_firedancer_identity.yml b/template/0.10.1/ansible/testnet-validator/switch_on_firedancer_identity.yml similarity index 100% rename from template/0.9.961/ansible/testnet-validator/switch_on_firedancer_identity.yml rename to template/0.10.1/ansible/testnet-validator/switch_on_firedancer_identity.yml diff --git a/template/0.9.961/ansible/testnet-validator/switch_on_identity.yml b/template/0.10.1/ansible/testnet-validator/switch_on_identity.yml similarity index 100% rename from template/0.9.961/ansible/testnet-validator/switch_on_identity.yml rename to template/0.10.1/ansible/testnet-validator/switch_on_identity.yml diff --git a/template/0.9.961/ansible/testnet-validator/update_firedancer.yml b/template/0.10.1/ansible/testnet-validator/update_firedancer.yml similarity index 100% rename from template/0.9.961/ansible/testnet-validator/update_firedancer.yml rename to template/0.10.1/ansible/testnet-validator/update_firedancer.yml diff --git a/template/0.9.961/ansible/testnet-validator/update_startup_config.yml b/template/0.10.1/ansible/testnet-validator/update_startup_config.yml similarity index 100% rename from template/0.9.961/ansible/testnet-validator/update_startup_config.yml rename to template/0.10.1/ansible/testnet-validator/update_startup_config.yml diff --git a/template/0.9.961/jinja/cmn/prometheus.yml b/template/0.10.1/jinja/cmn/prometheus.yml similarity index 100% rename from template/0.9.961/jinja/cmn/prometheus.yml rename to template/0.10.1/jinja/cmn/prometheus.yml diff --git a/template/0.9.961/jinja/cmn/restart.sh.j2 b/template/0.10.1/jinja/cmn/restart.sh.j2 similarity index 100% rename from template/0.9.961/jinja/cmn/restart.sh.j2 rename to template/0.10.1/jinja/cmn/restart.sh.j2 diff --git a/template/0.9.961/jinja/devnet-rpc/firedancer-config.toml.j2 b/template/0.10.1/jinja/devnet-rpc/firedancer-config.toml.j2 similarity index 100% rename from template/0.9.961/jinja/devnet-rpc/firedancer-config.toml.j2 rename to template/0.10.1/jinja/devnet-rpc/firedancer-config.toml.j2 diff --git a/template/0.9.961/jinja/devnet-rpc/firedancer.service.j2 b/template/0.10.1/jinja/devnet-rpc/firedancer.service.j2 similarity index 100% rename from template/0.9.961/jinja/devnet-rpc/firedancer.service.j2 rename to template/0.10.1/jinja/devnet-rpc/firedancer.service.j2 diff --git a/template/0.9.961/jinja/devnet-rpc/geyser.json.j2 b/template/0.10.1/jinja/devnet-rpc/geyser.json.j2 similarity index 100% rename from template/0.9.961/jinja/devnet-rpc/geyser.json.j2 rename to template/0.10.1/jinja/devnet-rpc/geyser.json.j2 diff --git a/template/0.9.961/jinja/devnet-rpc/restart.sh.j2 b/template/0.10.1/jinja/devnet-rpc/restart.sh.j2 similarity index 100% rename from template/0.9.961/jinja/devnet-rpc/restart.sh.j2 rename to template/0.10.1/jinja/devnet-rpc/restart.sh.j2 diff --git a/template/0.9.961/jinja/devnet-rpc/solv-agave.service.j2 b/template/0.10.1/jinja/devnet-rpc/solv-agave.service.j2 similarity index 100% rename from template/0.9.961/jinja/devnet-rpc/solv-agave.service.j2 rename to template/0.10.1/jinja/devnet-rpc/solv-agave.service.j2 diff --git a/template/0.9.961/jinja/devnet-rpc/solv-agave3.service.j2 b/template/0.10.1/jinja/devnet-rpc/solv-agave3.service.j2 similarity index 100% rename from template/0.9.961/jinja/devnet-rpc/solv-agave3.service.j2 rename to template/0.10.1/jinja/devnet-rpc/solv-agave3.service.j2 diff --git a/template/0.9.961/jinja/devnet-rpc/solv.service.j2 b/template/0.10.1/jinja/devnet-rpc/solv.service.j2 similarity index 100% rename from template/0.9.961/jinja/devnet-rpc/solv.service.j2 rename to template/0.10.1/jinja/devnet-rpc/solv.service.j2 diff --git a/template/0.9.961/jinja/devnet-rpc/start-firedancer.sh.j2 b/template/0.10.1/jinja/devnet-rpc/start-firedancer.sh.j2 similarity index 100% rename from template/0.9.961/jinja/devnet-rpc/start-firedancer.sh.j2 rename to template/0.10.1/jinja/devnet-rpc/start-firedancer.sh.j2 diff --git a/template/0.9.961/jinja/devnet-rpc/start-validator.sh.j2 b/template/0.10.1/jinja/devnet-rpc/start-validator.sh.j2 similarity index 89% rename from template/0.9.961/jinja/devnet-rpc/start-validator.sh.j2 rename to template/0.10.1/jinja/devnet-rpc/start-validator.sh.j2 index 52bb219b..dcaafd5b 100644 --- a/template/0.9.961/jinja/devnet-rpc/start-validator.sh.j2 +++ b/template/0.10.1/jinja/devnet-rpc/start-validator.sh.j2 @@ -43,6 +43,12 @@ exec agave-validator \ {% else -%} --limit-ledger-size {{ limit_ledger_size | default(100000000) }} \ {% endif -%} +{% if tpu_peer_address is defined and tpu_peer_address %} +{% if rpc_type == 'Index RPC' or rpc_type == 'Index RPC + gRPC' %} +--rpc-send-transaction-tpu-peer {{ tpu_peer_address }} \ +--rpc-send-transaction-also-leader \ +{% endif %} +{% endif %} --no-port-check{% if rpc_type == 'Geyser gRPC' or rpc_type == 'Index RPC + gRPC' %} \ --rpc-pubsub-enable-block-subscription \ --rpc-pubsub-enable-vote-subscription \ diff --git a/template/0.9.961/jinja/mainnet-rpc/firedancer-config.toml.j2 b/template/0.10.1/jinja/mainnet-rpc/firedancer-config.toml.j2 similarity index 100% rename from template/0.9.961/jinja/mainnet-rpc/firedancer-config.toml.j2 rename to template/0.10.1/jinja/mainnet-rpc/firedancer-config.toml.j2 diff --git a/template/0.9.961/jinja/mainnet-rpc/firedancer.service.j2 b/template/0.10.1/jinja/mainnet-rpc/firedancer.service.j2 similarity index 100% rename from template/0.9.961/jinja/mainnet-rpc/firedancer.service.j2 rename to template/0.10.1/jinja/mainnet-rpc/firedancer.service.j2 diff --git a/template/0.9.961/jinja/mainnet-rpc/generate_configs.sh.j2 b/template/0.10.1/jinja/mainnet-rpc/generate_configs.sh.j2 similarity index 100% rename from template/0.9.961/jinja/mainnet-rpc/generate_configs.sh.j2 rename to template/0.10.1/jinja/mainnet-rpc/generate_configs.sh.j2 diff --git a/template/0.9.961/jinja/mainnet-rpc/geyser-richat.json.j2 b/template/0.10.1/jinja/mainnet-rpc/geyser-richat.json.j2 similarity index 100% rename from template/0.9.961/jinja/mainnet-rpc/geyser-richat.json.j2 rename to template/0.10.1/jinja/mainnet-rpc/geyser-richat.json.j2 diff --git a/template/0.9.961/jinja/mainnet-rpc/geyser.json.j2 b/template/0.10.1/jinja/mainnet-rpc/geyser.json.j2 similarity index 100% rename from template/0.9.961/jinja/mainnet-rpc/geyser.json.j2 rename to template/0.10.1/jinja/mainnet-rpc/geyser.json.j2 diff --git a/template/0.9.961/jinja/mainnet-rpc/restart.sh.j2 b/template/0.10.1/jinja/mainnet-rpc/restart.sh.j2 similarity index 100% rename from template/0.9.961/jinja/mainnet-rpc/restart.sh.j2 rename to template/0.10.1/jinja/mainnet-rpc/restart.sh.j2 diff --git a/template/0.9.961/jinja/mainnet-rpc/richat-setting.yml.j2 b/template/0.10.1/jinja/mainnet-rpc/richat-setting.yml.j2 similarity index 100% rename from template/0.9.961/jinja/mainnet-rpc/richat-setting.yml.j2 rename to template/0.10.1/jinja/mainnet-rpc/richat-setting.yml.j2 diff --git a/template/0.9.961/jinja/mainnet-rpc/richat.service.j2 b/template/0.10.1/jinja/mainnet-rpc/richat.service.j2 similarity index 100% rename from template/0.9.961/jinja/mainnet-rpc/richat.service.j2 rename to template/0.10.1/jinja/mainnet-rpc/richat.service.j2 diff --git a/template/0.9.961/jinja/mainnet-rpc/solv-agave.service.j2 b/template/0.10.1/jinja/mainnet-rpc/solv-agave.service.j2 similarity index 100% rename from template/0.9.961/jinja/mainnet-rpc/solv-agave.service.j2 rename to template/0.10.1/jinja/mainnet-rpc/solv-agave.service.j2 diff --git a/template/0.9.961/jinja/mainnet-rpc/solv-agave3.service.j2 b/template/0.10.1/jinja/mainnet-rpc/solv-agave3.service.j2 similarity index 100% rename from template/0.9.961/jinja/mainnet-rpc/solv-agave3.service.j2 rename to template/0.10.1/jinja/mainnet-rpc/solv-agave3.service.j2 diff --git a/template/0.9.961/jinja/mainnet-rpc/solv.service.j2 b/template/0.10.1/jinja/mainnet-rpc/solv.service.j2 similarity index 100% rename from template/0.9.961/jinja/mainnet-rpc/solv.service.j2 rename to template/0.10.1/jinja/mainnet-rpc/solv.service.j2 diff --git a/template/0.9.961/jinja/mainnet-rpc/start-mainnet-rpc-grpc.sh.j2 b/template/0.10.1/jinja/mainnet-rpc/start-mainnet-rpc-grpc.sh.j2 similarity index 100% rename from template/0.9.961/jinja/mainnet-rpc/start-mainnet-rpc-grpc.sh.j2 rename to template/0.10.1/jinja/mainnet-rpc/start-mainnet-rpc-grpc.sh.j2 diff --git a/template/0.9.961/jinja/mainnet-rpc/start-mainnet-rpc-index.sh.j2 b/template/0.10.1/jinja/mainnet-rpc/start-mainnet-rpc-index.sh.j2 similarity index 100% rename from template/0.9.961/jinja/mainnet-rpc/start-mainnet-rpc-index.sh.j2 rename to template/0.10.1/jinja/mainnet-rpc/start-mainnet-rpc-index.sh.j2 diff --git a/template/0.9.961/jinja/mainnet-rpc/start-mainnet-rpc-tx.sh.j2 b/template/0.10.1/jinja/mainnet-rpc/start-mainnet-rpc-tx.sh.j2 similarity index 100% rename from template/0.9.961/jinja/mainnet-rpc/start-mainnet-rpc-tx.sh.j2 rename to template/0.10.1/jinja/mainnet-rpc/start-mainnet-rpc-tx.sh.j2 diff --git a/template/0.9.961/jinja/mainnet-rpc/start-mainnet-rpc.sh.j2 b/template/0.10.1/jinja/mainnet-rpc/start-mainnet-rpc.sh.j2 similarity index 100% rename from template/0.9.961/jinja/mainnet-rpc/start-mainnet-rpc.sh.j2 rename to template/0.10.1/jinja/mainnet-rpc/start-mainnet-rpc.sh.j2 diff --git a/template/0.9.961/jinja/mainnet-rpc/start-validator.sh.j2 b/template/0.10.1/jinja/mainnet-rpc/start-validator.sh.j2 similarity index 90% rename from template/0.9.961/jinja/mainnet-rpc/start-validator.sh.j2 rename to template/0.10.1/jinja/mainnet-rpc/start-validator.sh.j2 index 1577a81c..7d223cae 100644 --- a/template/0.9.961/jinja/mainnet-rpc/start-validator.sh.j2 +++ b/template/0.10.1/jinja/mainnet-rpc/start-validator.sh.j2 @@ -50,6 +50,12 @@ exec agave-validator \ {% else -%} --limit-ledger-size {{ limit_ledger_size | default(100000000) }} \ {% endif -%} +{% if tpu_peer_address is defined and tpu_peer_address %} +{% if rpc_type == 'Index RPC' or rpc_type == 'Index RPC + gRPC' %} +--rpc-send-transaction-tpu-peer {{ tpu_peer_address }} \ +--rpc-send-transaction-also-leader \ +{% endif %} +{% endif %} --no-port-check \ {% if rpc_type == 'Index RPC + gRPC' %} --rpc-pubsub-enable-block-subscription \ diff --git a/template/0.9.961/jinja/mainnet-validator/firedancer-config.toml.j2 b/template/0.10.1/jinja/mainnet-validator/firedancer-config.toml.j2 similarity index 95% rename from template/0.9.961/jinja/mainnet-validator/firedancer-config.toml.j2 rename to template/0.10.1/jinja/mainnet-validator/firedancer-config.toml.j2 index e96fa25e..2db956a3 100644 --- a/template/0.9.961/jinja/mainnet-validator/firedancer-config.toml.j2 +++ b/template/0.10.1/jinja/mainnet-validator/firedancer-config.toml.j2 @@ -59,7 +59,7 @@ dynamic_port_range = "{{ dynamic_port_range | default('8900-8925') }}" [hugetlbfs] mount_path = "/mnt" - max_page_size = "gigantic" + max_page_size = "{{ hugetlbfs_page_size | default('huge') }}" [layout] affinity = "auto" @@ -82,5 +82,5 @@ dynamic_port_range = "{{ dynamic_port_range | default('8900-8925') }}" tip_distribution_program_addr = "4R3gSG8BpU4t19KYj8CfnbtRpnT8gtk4dvTHxVRwc2r7" tip_payment_program_addr = "T1pyyaTNZsKv2WcRAB8oVnk93mLJw2XzjtVYqCsaHqt" tip_distribution_authority = "GZctHpWXmsZC1YHACTGGcHhYxjdRqQvTpYkb9LMvxDib" - commission_bps = {{ commission_bps | default(1000, true) }} + commission_bps = {{ commission_bps | default(0) }} {% endif %} \ No newline at end of file diff --git a/template/0.9.961/jinja/mainnet-validator/firedancer.service.j2 b/template/0.10.1/jinja/mainnet-validator/firedancer.service.j2 similarity index 64% rename from template/0.9.961/jinja/mainnet-validator/firedancer.service.j2 rename to template/0.10.1/jinja/mainnet-validator/firedancer.service.j2 index 05ade140..c44c72a4 100644 --- a/template/0.9.961/jinja/mainnet-validator/firedancer.service.j2 +++ b/template/0.10.1/jinja/mainnet-validator/firedancer.service.j2 @@ -12,9 +12,8 @@ LimitNOFILE=1000000 LimitMEMLOCK=2000000000 LogRateLimitIntervalSec=0 -ExecStartPre=sudo /home/solv/firedancer/build/native/gcc/bin/fdctl configure init all --config /home/solv/firedancer-config.toml -ExecStartPre=chown -R solv:solv /mnt -ExecStartPre=chmod -R 700 /mnt +ExecStartPre=/bin/bash -c "chown -R solv:solv /mnt/ledger /mnt/accounts /mnt/snapshot 2>/dev/null || true" +ExecStartPre=/bin/bash -c "chmod -R 700 /mnt/ledger /mnt/accounts /mnt/snapshot 2>/dev/null || true" ExecStart=sudo /home/solv/firedancer/build/native/gcc/bin/fdctl run --config /home/solv/firedancer-config.toml TimeoutSec=infinity diff --git a/template/0.9.961/jinja/mainnet-validator/overrides.yml.j2 b/template/0.10.1/jinja/mainnet-validator/overrides.yml.j2 similarity index 100% rename from template/0.9.961/jinja/mainnet-validator/overrides.yml.j2 rename to template/0.10.1/jinja/mainnet-validator/overrides.yml.j2 diff --git a/template/0.9.961/jinja/mainnet-validator/relayer.service.j2 b/template/0.10.1/jinja/mainnet-validator/relayer.service.j2 similarity index 100% rename from template/0.9.961/jinja/mainnet-validator/relayer.service.j2 rename to template/0.10.1/jinja/mainnet-validator/relayer.service.j2 diff --git a/template/0.9.961/jinja/mainnet-validator/restart.sh.j2 b/template/0.10.1/jinja/mainnet-validator/restart.sh.j2 similarity index 100% rename from template/0.9.961/jinja/mainnet-validator/restart.sh.j2 rename to template/0.10.1/jinja/mainnet-validator/restart.sh.j2 diff --git a/template/0.9.961/jinja/mainnet-validator/solv-agave.service.j2 b/template/0.10.1/jinja/mainnet-validator/solv-agave.service.j2 similarity index 100% rename from template/0.9.961/jinja/mainnet-validator/solv-agave.service.j2 rename to template/0.10.1/jinja/mainnet-validator/solv-agave.service.j2 diff --git a/template/0.9.961/jinja/mainnet-validator/solv-agave3.service.j2 b/template/0.10.1/jinja/mainnet-validator/solv-agave3.service.j2 similarity index 100% rename from template/0.9.961/jinja/mainnet-validator/solv-agave3.service.j2 rename to template/0.10.1/jinja/mainnet-validator/solv-agave3.service.j2 diff --git a/template/0.9.961/jinja/mainnet-validator/solv.service.j2 b/template/0.10.1/jinja/mainnet-validator/solv.service.j2 similarity index 100% rename from template/0.9.961/jinja/mainnet-validator/solv.service.j2 rename to template/0.10.1/jinja/mainnet-validator/solv.service.j2 diff --git a/template/0.9.961/jinja/mainnet-validator/start-validator.sh.j2 b/template/0.10.1/jinja/mainnet-validator/start-validator.sh.j2 similarity index 78% rename from template/0.9.961/jinja/mainnet-validator/start-validator.sh.j2 rename to template/0.10.1/jinja/mainnet-validator/start-validator.sh.j2 index bbfc6915..f663603e 100644 --- a/template/0.9.961/jinja/mainnet-validator/start-validator.sh.j2 +++ b/template/0.10.1/jinja/mainnet-validator/start-validator.sh.j2 @@ -18,11 +18,11 @@ exec agave-validator \ --only-known-rpc \ --expected-genesis-hash 5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d \ --expected-shred-version 50093 \ ---dynamic-port-range {{ dynamic_port_range | default("8900-8925") }} \ +--dynamic-port-range {{ dynamic_port_range | default("8000-8025") }} \ --rpc-port {{ port_rpc | default(8899, true) }} \ --wal-recovery-mode skip_any_corrupted_record \ --use-snapshot-archives-at-startup when-newest \ ---limit-ledger-size {{ limit_ledger_size | default(100000000) }} \ +--limit-ledger-size {{ limit_ledger_size | default(200000000) }} \ --no-port-check \ --staked-nodes-overrides overrides.yml \ --rpc-bind-address 0.0.0.0 \ @@ -30,13 +30,10 @@ exec agave-validator \ --tip-payment-program-pubkey T1pyyaTNZsKv2WcRAB8oVnk93mLJw2XzjtVYqCsaHqt \ --tip-distribution-program-pubkey 4R3gSG8BpU4t19KYj8CfnbtRpnT8gtk4dvTHxVRwc2r7 \ --merkle-root-upload-authority 8F4jGUmxF36vQ6yabnsxX6AQVXdKBhs8kGSUuRKSg8Xt \ ---commission-bps {{ commission_bps | default(1000) }} \ ---block-engine-url {{ block_engine_url | default("https://frankfurt.block-engine.jito.wtf") }} \ ---shred-receiver-address {{ shred_receiver_address | default("141.98.216.96:1002") }} \ +--commission-bps {{ commission_bps | default(0) }} \ +--block-engine-url {{ block_engine_url | default("https://frankfurt.mainnet.block-engine.jito.wtf") }} \ +--shred-receiver-address {{ shred_receiver_address | default("64.130.50.14:1002") }} \ {% endif %} {% if validator_type == 'jito-bam' %} --bam-url {{ bam_url | default("http://frankfurt.mainnet.bam.jito.wtf") }} \ {% endif %} -{% if validator_type in ['jito'] %} ---relayer-url {{ relayer_url | default("http://frankfurt.mainnet.relayer.jito.wtf:8100") }} \ -{% endif %} \ No newline at end of file diff --git a/template/0.9.961/jinja/testnet-rpc/firedancer-config.toml.j2 b/template/0.10.1/jinja/testnet-rpc/firedancer-config.toml.j2 similarity index 98% rename from template/0.9.961/jinja/testnet-rpc/firedancer-config.toml.j2 rename to template/0.10.1/jinja/testnet-rpc/firedancer-config.toml.j2 index d44dd00a..fd317983 100644 --- a/template/0.9.961/jinja/testnet-rpc/firedancer-config.toml.j2 +++ b/template/0.10.1/jinja/testnet-rpc/firedancer-config.toml.j2 @@ -14,7 +14,7 @@ dynamic_port_range = "{{ dynamic_port_range | default('8900-8925') }}" port = {{ rpc_port | default(8899) }} {% if rpc_type == 'Geyser gRPC' %} full_api = true - private = false + private = true transaction_history = {{ transaction_history | default(true) | to_json }} extended_tx_metadata_storage = {{ extended_tx_metadata_storage | default(true) | to_json }} pubsub_enable_block_subscription = {{ pubsub_enable_block_subscription | default(true) | to_json }} @@ -23,7 +23,7 @@ dynamic_port_range = "{{ dynamic_port_range | default('8900-8925') }}" {% elif rpc_type == 'SendTx RPC' %} full_api = true - private = false + private = true transaction_history = {{ transaction_history | default(false) | to_json }} extended_tx_metadata_storage = {{ extended_tx_metadata_storage | default(false) | to_json }} pubsub_enable_block_subscription = {{ pubsub_enable_block_subscription | default(false) | to_json }} @@ -32,7 +32,7 @@ dynamic_port_range = "{{ dynamic_port_range | default('8900-8925') }}" {% elif rpc_type == 'Index RPC' %} full_api = true - private = false + private = true transaction_history = {{ transaction_history | default(true) | to_json }} extended_tx_metadata_storage = {{ extended_tx_metadata_storage | default(true) | to_json }} pubsub_enable_block_subscription = {{ pubsub_enable_block_subscription | default(true) | to_json }} @@ -41,7 +41,7 @@ dynamic_port_range = "{{ dynamic_port_range | default('8900-8925') }}" {% elif rpc_type == 'Index RPC + gRPC' %} full_api = true - private = false + private = true transaction_history = {{ transaction_history | default(true) | to_json }} extended_tx_metadata_storage = {{ extended_tx_metadata_storage | default(true) | to_json }} pubsub_enable_block_subscription = {{ pubsub_enable_block_subscription | default(true) | to_json }} @@ -50,7 +50,7 @@ dynamic_port_range = "{{ dynamic_port_range | default('8900-8925') }}" {% else %} full_api = {{ full_api | default(false) | to_json }} - private = false + private = true transaction_history = {{ transaction_history | default(false) | to_json }} extended_tx_metadata_storage = {{ extended_tx_metadata_storage | default(false) | to_json }} pubsub_enable_block_subscription = {{ pubsub_enable_block_subscription | default(true) | to_json }} diff --git a/template/0.9.961/jinja/testnet-rpc/firedancer.service.j2 b/template/0.10.1/jinja/testnet-rpc/firedancer.service.j2 similarity index 100% rename from template/0.9.961/jinja/testnet-rpc/firedancer.service.j2 rename to template/0.10.1/jinja/testnet-rpc/firedancer.service.j2 diff --git a/template/0.9.961/jinja/testnet-rpc/geyser.json.j2 b/template/0.10.1/jinja/testnet-rpc/geyser.json.j2 similarity index 100% rename from template/0.9.961/jinja/testnet-rpc/geyser.json.j2 rename to template/0.10.1/jinja/testnet-rpc/geyser.json.j2 diff --git a/template/0.9.961/jinja/testnet-rpc/restart.sh.j2 b/template/0.10.1/jinja/testnet-rpc/restart.sh.j2 similarity index 100% rename from template/0.9.961/jinja/testnet-rpc/restart.sh.j2 rename to template/0.10.1/jinja/testnet-rpc/restart.sh.j2 diff --git a/template/0.9.961/jinja/testnet-rpc/solv-agave.service.j2 b/template/0.10.1/jinja/testnet-rpc/solv-agave.service.j2 similarity index 100% rename from template/0.9.961/jinja/testnet-rpc/solv-agave.service.j2 rename to template/0.10.1/jinja/testnet-rpc/solv-agave.service.j2 diff --git a/template/0.9.961/jinja/testnet-rpc/solv-agave3.service.j2 b/template/0.10.1/jinja/testnet-rpc/solv-agave3.service.j2 similarity index 100% rename from template/0.9.961/jinja/testnet-rpc/solv-agave3.service.j2 rename to template/0.10.1/jinja/testnet-rpc/solv-agave3.service.j2 diff --git a/template/0.9.961/jinja/testnet-rpc/solv.service.j2 b/template/0.10.1/jinja/testnet-rpc/solv.service.j2 similarity index 100% rename from template/0.9.961/jinja/testnet-rpc/solv.service.j2 rename to template/0.10.1/jinja/testnet-rpc/solv.service.j2 diff --git a/template/0.9.961/jinja/testnet-rpc/start-firedancer.sh.j2 b/template/0.10.1/jinja/testnet-rpc/start-firedancer.sh.j2 similarity index 100% rename from template/0.9.961/jinja/testnet-rpc/start-firedancer.sh.j2 rename to template/0.10.1/jinja/testnet-rpc/start-firedancer.sh.j2 diff --git a/template/0.9.961/jinja/testnet-rpc/start-validator.sh.j2 b/template/0.10.1/jinja/testnet-rpc/start-validator.sh.j2 similarity index 89% rename from template/0.9.961/jinja/testnet-rpc/start-validator.sh.j2 rename to template/0.10.1/jinja/testnet-rpc/start-validator.sh.j2 index e044cbe6..bf071c27 100644 --- a/template/0.9.961/jinja/testnet-rpc/start-validator.sh.j2 +++ b/template/0.10.1/jinja/testnet-rpc/start-validator.sh.j2 @@ -44,6 +44,12 @@ exec agave-validator \ {% else -%} --limit-ledger-size {{ limit_ledger_size | default(100000000) }} \ {% endif -%} +{% if tpu_peer_address is defined and tpu_peer_address %} +{% if rpc_type == 'Index RPC' or rpc_type == 'Index RPC + gRPC' %} +--rpc-send-transaction-tpu-peer {{ tpu_peer_address }} \ +--rpc-send-transaction-also-leader \ +{% endif %} +{% endif %} --no-port-check{% if rpc_type == 'Geyser gRPC' or rpc_type == 'Index RPC + gRPC' %} \ --rpc-pubsub-enable-block-subscription \ --rpc-pubsub-enable-vote-subscription \ diff --git a/template/0.9.961/jinja/testnet-validator/firedancer-config-agave.toml.j2 b/template/0.10.1/jinja/testnet-validator/firedancer-config-agave.toml.j2 similarity index 83% rename from template/0.9.961/jinja/testnet-validator/firedancer-config-agave.toml.j2 rename to template/0.10.1/jinja/testnet-validator/firedancer-config-agave.toml.j2 index 83390bfe..842cccca 100644 --- a/template/0.9.961/jinja/testnet-validator/firedancer-config-agave.toml.j2 +++ b/template/0.10.1/jinja/testnet-validator/firedancer-config-agave.toml.j2 @@ -1,7 +1,7 @@ name = "solv" user = "solv" scratch_directory = "/home/{user}" -dynamic_port_range = "{{ dynamic_port_range | default("8900-8925") }}" +dynamic_port_range = "{{ dynamic_port_range | default("8100-8125") }}" [log] path = "/home/solv/solana-validator.log" @@ -48,9 +48,9 @@ dynamic_port_range = "{{ dynamic_port_range | default("8900-8925") }}" snapshot_fetch = true genesis_fetch = true expected_genesis_hash = "4uhcVJyU9pJkvQyS88uRDiswHXSCkY3zQawwpjk2NsNY" - expected_bank_hash = "CJZAAtgdqYiqHTFKJ9XD9qw4W21wHqojkhrVJSfFF9b7" - expected_shred_version = 24207 - wait_for_supermajority_at_slot = 374301609 + expected_bank_hash = "{{ expected_bank_hash | default("3zk4WMwk6wCTVJXu9UAk2dYWMedCKooDs15XL5u6FkvE") }}" + expected_shred_version = {{ expected_shred_version | default(27350) }} + wait_for_supermajority_at_slot = {{ wait_for_supermajority | default(383520372) }} [hugetlbfs] mount_path = "/mnt" diff --git a/template/0.9.961/jinja/testnet-validator/firedancer-config-jito.toml.j2 b/template/0.10.1/jinja/testnet-validator/firedancer-config-jito.toml.j2 similarity index 83% rename from template/0.9.961/jinja/testnet-validator/firedancer-config-jito.toml.j2 rename to template/0.10.1/jinja/testnet-validator/firedancer-config-jito.toml.j2 index 028702bc..8d8cf2dc 100644 --- a/template/0.9.961/jinja/testnet-validator/firedancer-config-jito.toml.j2 +++ b/template/0.10.1/jinja/testnet-validator/firedancer-config-jito.toml.j2 @@ -1,7 +1,7 @@ name = "solv" user = "solv" scratch_directory = "/home/{user}" -dynamic_port_range = "{{ dynamic_port_range | default("8900-8925", true) }}" +dynamic_port_range = "{{ dynamic_port_range | default("8100-8125", true) }}" [log] path = "/home/solv/solana-validator.log" @@ -48,9 +48,9 @@ dynamic_port_range = "{{ dynamic_port_range | default("8900-8925", true) }}" snapshot_fetch = true genesis_fetch = true expected_genesis_hash = "4uhcVJyU9pJkvQyS88uRDiswHXSCkY3zQawwpjk2NsNY" - expected_bank_hash = "CJZAAtgdqYiqHTFKJ9XD9qw4W21wHqojkhrVJSfFF9b7" - expected_shred_version = 24207 - wait_for_supermajority_at_slot = 374301609 + expected_bank_hash = "{{ expected_bank_hash | default("3zk4WMwk6wCTVJXu9UAk2dYWMedCKooDs15XL5u6FkvE") }}" + expected_shred_version = {{ expected_shred_version | default(27350) }} + wait_for_supermajority_at_slot = {{ wait_for_supermajority | default(383520372) }} [hugetlbfs] mount_path = "/mnt" @@ -78,4 +78,4 @@ dynamic_port_range = "{{ dynamic_port_range | default("8900-8925", true) }}" tip_distribution_program_addr = "DzvGET57TAgEDxvm3ERUM4GNcsAJdqjDLCne9sdfY4wf" tip_payment_program_addr = "GJHtFqM9agxPmkeKjHny6qiRKrXZALvvFGiKf11QE7hy" tip_distribution_authority = "GZctHpWXmsZC1YHACTGGcHhYxjdRqQvTpYkb9LMvxDib" - commission_bps = {{ commission_bps | default(1000, true) }} \ No newline at end of file + commission_bps = {{ commission_bps | default(0) }} \ No newline at end of file diff --git a/template/0.9.961/jinja/testnet-validator/firedancer-config.toml.j2 b/template/0.10.1/jinja/testnet-validator/firedancer-config.toml.j2 similarity index 94% rename from template/0.9.961/jinja/testnet-validator/firedancer-config.toml.j2 rename to template/0.10.1/jinja/testnet-validator/firedancer-config.toml.j2 index afb5728a..f80913c6 100644 --- a/template/0.9.961/jinja/testnet-validator/firedancer-config.toml.j2 +++ b/template/0.10.1/jinja/testnet-validator/firedancer-config.toml.j2 @@ -52,7 +52,7 @@ dynamic_port_range = "{{ dynamic_port_range | default('8900-8925') }}" [hugetlbfs] mount_path = "/mnt" - max_page_size = "gigantic" + max_page_size = "{{ hugetlbfs_page_size | default('huge') }}" [layout] affinity = "auto" @@ -75,5 +75,5 @@ dynamic_port_range = "{{ dynamic_port_range | default('8900-8925') }}" tip_distribution_program_addr = "DzvGET57TAgEDxvm3ERUM4GNcsAJdqjDLCne9sdfY4wf" tip_payment_program_addr = "GJHtFqM9agxPmkeKjHny6qiRKrXZALvvFGiKf11QE7hy" tip_distribution_authority = "GZctHpWXmsZC1YHACTGGcHhYxjdRqQvTpYkb9LMvxDib" - commission_bps = {{ commission_bps | default(1000, true) }} + commission_bps = {{ commission_bps | default(0) }} {% endif %} \ No newline at end of file diff --git a/template/0.9.961/jinja/testnet-validator/firedancer.service.j2 b/template/0.10.1/jinja/testnet-validator/firedancer.service.j2 similarity index 64% rename from template/0.9.961/jinja/testnet-validator/firedancer.service.j2 rename to template/0.10.1/jinja/testnet-validator/firedancer.service.j2 index f0e25b50..c44c72a4 100644 --- a/template/0.9.961/jinja/testnet-validator/firedancer.service.j2 +++ b/template/0.10.1/jinja/testnet-validator/firedancer.service.j2 @@ -12,9 +12,8 @@ LimitNOFILE=1000000 LimitMEMLOCK=2000000000 LogRateLimitIntervalSec=0 -ExecStartPre=chown -R solv:solv /mnt -ExecStartPre=chmod -R 700 /mnt -ExecStartPre=sudo /home/solv/firedancer/build/native/gcc/bin/fdctl configure init all --config /home/solv/firedancer-config.toml +ExecStartPre=/bin/bash -c "chown -R solv:solv /mnt/ledger /mnt/accounts /mnt/snapshot 2>/dev/null || true" +ExecStartPre=/bin/bash -c "chmod -R 700 /mnt/ledger /mnt/accounts /mnt/snapshot 2>/dev/null || true" ExecStart=sudo /home/solv/firedancer/build/native/gcc/bin/fdctl run --config /home/solv/firedancer-config.toml TimeoutSec=infinity diff --git a/template/0.9.961/jinja/testnet-validator/restart.sh.j2 b/template/0.10.1/jinja/testnet-validator/restart.sh.j2 similarity index 100% rename from template/0.9.961/jinja/testnet-validator/restart.sh.j2 rename to template/0.10.1/jinja/testnet-validator/restart.sh.j2 diff --git a/template/0.9.961/jinja/testnet-validator/solv-agave3.service.j2 b/template/0.10.1/jinja/testnet-validator/solv-agave3.service.j2 similarity index 100% rename from template/0.9.961/jinja/testnet-validator/solv-agave3.service.j2 rename to template/0.10.1/jinja/testnet-validator/solv-agave3.service.j2 diff --git a/template/0.9.961/jinja/testnet-validator/solv.service.j2 b/template/0.10.1/jinja/testnet-validator/solv.service.j2 similarity index 100% rename from template/0.9.961/jinja/testnet-validator/solv.service.j2 rename to template/0.10.1/jinja/testnet-validator/solv.service.j2 diff --git a/template/0.9.961/jinja/testnet-validator/start-firedancer.sh.j2 b/template/0.10.1/jinja/testnet-validator/start-firedancer.sh.j2 similarity index 100% rename from template/0.9.961/jinja/testnet-validator/start-firedancer.sh.j2 rename to template/0.10.1/jinja/testnet-validator/start-firedancer.sh.j2 diff --git a/template/0.9.961/jinja/testnet-validator/start-validator-agave.sh.j2 b/template/0.10.1/jinja/testnet-validator/start-validator-agave.sh.j2 similarity index 57% rename from template/0.9.961/jinja/testnet-validator/start-validator-agave.sh.j2 rename to template/0.10.1/jinja/testnet-validator/start-validator-agave.sh.j2 index ebcd6470..4150ecd2 100644 --- a/template/0.9.961/jinja/testnet-validator/start-validator-agave.sh.j2 +++ b/template/0.10.1/jinja/testnet-validator/start-validator-agave.sh.j2 @@ -11,11 +11,12 @@ exec agave-validator \ --known-validator 5D1fNXzvv5NjV1ysLjirC4WY92RNsVH18vjmcszZd8on \ --only-known-rpc \ --expected-genesis-hash 4uhcVJyU9pJkvQyS88uRDiswHXSCkY3zQawwpjk2NsNY \ ---dynamic-port-range {{ dynamic_port_range | default("8900-8925", true) }} \ +--dynamic-port-range {{ dynamic_port_range | default("8000-8025") }} \ --rpc-port {{ port_rpc | default(8899, true) }} \ --wal-recovery-mode skip_any_corrupted_record \ ---wait-for-supermajority 374301609 \ ---expected-shred-version 24207 \ ---expected-bank-hash CJZAAtgdqYiqHTFKJ9XD9qw4W21wHqojkhrVJSfFF9b7 \ ---limit-ledger-size \ ---no-port-check \ No newline at end of file +--wait-for-supermajority {{ wait_for_supermajority | default("383520372") }} \ +--expected-shred-version {{ expected_shred_version | default("27350") }} \ +--expected-bank-hash {{ expected_bank_hash | default("3zk4WMwk6wCTVJXu9UAk2dYWMedCKooDs15XL5u6FkvE") }} \ +--limit-ledger-size {{ limit_ledger_size | default(200000000) }} \ +--no-port-check \ +--rpc-bind-address 0.0.0.0 \ No newline at end of file diff --git a/template/0.9.961/jinja/testnet-validator/start-validator.sh.j2 b/template/0.10.1/jinja/testnet-validator/start-validator-jito.sh.j2 similarity index 59% rename from template/0.9.961/jinja/testnet-validator/start-validator.sh.j2 rename to template/0.10.1/jinja/testnet-validator/start-validator-jito.sh.j2 index b16ee826..09b5fb00 100644 --- a/template/0.9.961/jinja/testnet-validator/start-validator.sh.j2 +++ b/template/0.10.1/jinja/testnet-validator/start-validator-jito.sh.j2 @@ -11,23 +11,19 @@ exec agave-validator \ --known-validator 5D1fNXzvv5NjV1ysLjirC4WY92RNsVH18vjmcszZd8on \ --only-known-rpc \ --expected-genesis-hash 4uhcVJyU9pJkvQyS88uRDiswHXSCkY3zQawwpjk2NsNY \ ---dynamic-port-range {{ dynamic_port_range | default("8900-8925") }} \ +--dynamic-port-range {{ dynamic_port_range | default("8000-8025") }} \ --rpc-port {{ port_rpc | default(8899, true) }} \ --wal-recovery-mode skip_any_corrupted_record \ ---expected-shred-version 24207 \ ---expected-bank-hash EJMzxv7JscF8WNZfDYqzsAyALCDCS52HuihabVgyz5mf \ ---limit-ledger-size {{ limit_ledger_size | default(100000000) }} \ +--wait-for-supermajority {{ wait_for_supermajority | default("383520372") }} \ +--expected-shred-version {{ expected_shred_version | default("27350") }} \ +--expected-bank-hash {{ expected_bank_hash | default("3zk4WMwk6wCTVJXu9UAk2dYWMedCKooDs15XL5u6FkvE") }} \ +--limit-ledger-size {{ limit_ledger_size | default(200000000) }} \ --no-port-check \ ---staked-nodes-overrides overrides.yml \ --rpc-bind-address 0.0.0.0 \ -{% if validator_type in ['jito', 'jito-bam'] %} +--commission-bps {{ commission_bps | default(0) }} \ +--bam-url {{ bam_url | default("http://ny.testnet.bam.jito.wtf") }} \ +--block-engine-url {{ block_engine_url | default("https://ny.testnet.block-engine.jito.wtf") }} \ +--shred-receiver-address {{ shred_receiver_address | default("64.130.35.224:1002") }} \ --tip-payment-program-pubkey GJHtFqM9agxPmkeKjHny6qiRKrXZALvvFGiKf11QE7hy \ --tip-distribution-program-pubkey DzvGET57TAgEDxvm3ERUM4GNcsAJdqjDLCne9sdfY4wf \ ---merkle-root-upload-authority 7T4inmPmtNBX3MhLwJ9hFsSMnGJYYkKioVABSNTWVRuS \ ---commission-bps {{ commission_bps | default(1000) }} \ ---block-engine-url {{ block_engine_url | default("https://frankfurt.block-engine.jito.wtf") }} \ ---shred-receiver-address {{ shred_receiver_address | default("141.98.216.96:1002") }} \ -{% endif %} -{% if validator_type == 'jito-bam' %} ---bam-url {{ bam_url | default("http://ny.testnet.bam.jito.wtf") }} \ -{% endif %} \ No newline at end of file +--merkle-root-upload-authority 7T4inmPmtNBX3MhLwJ9hFsSMnGJYYkKioVABSNTWVRuS \ \ No newline at end of file diff --git a/template/0.10.1/jinja/testnet-validator/start-validator.sh.j2 b/template/0.10.1/jinja/testnet-validator/start-validator.sh.j2 new file mode 100644 index 00000000..cd5b9b33 --- /dev/null +++ b/template/0.10.1/jinja/testnet-validator/start-validator.sh.j2 @@ -0,0 +1,32 @@ +#!/bin/bash +exec agave-validator \ +--identity /home/solv/identity.json \ +--vote-account {{ vote_account }} \ +--log /home/solv/solana-validator.log \ +--accounts /mnt/accounts \ +--ledger /mnt/ledger \ +--entrypoint entrypoint.testnet.solana.com:8001 \ +--entrypoint entrypoint2.testnet.solana.com:8001 \ +--entrypoint entrypoint3.testnet.solana.com:8001 \ +--known-validator 5D1fNXzvv5NjV1ysLjirC4WY92RNsVH18vjmcszZd8on \ +--dynamic-port-range {{ dynamic_port_range | default("8000-8025") }} \ +--rpc-port {{ port_rpc | default(8899, true) }} \ +--wal-recovery-mode skip_any_corrupted_record \ +{% if wait_for_supermajority is defined %} +--wait-for-supermajority {{ wait_for_supermajority }} \ +{% endif %} +--expected-shred-version {{ expected_shred_version | default(27350) }} \ +{% if expected_bank_hash is defined %} +--expected-bank-hash {{ expected_bank_hash }} \ +{% endif %} +--limit-ledger-size {{ limit_ledger_size | default(200000000) }} \ +--no-port-check \ +{% if validator_type in ['jito', 'jito-bam'] %} +--tip-payment-program-pubkey GJHtFqM9agxPmkeKjHny6qiRKrXZALvvFGiKf11QE7hy \ +--tip-distribution-program-pubkey DzvGET57TAgEDxvm3ERUM4GNcsAJdqjDLCne9sdfY4wf \ +--merkle-root-upload-authority 7T4inmPmtNBX3MhLwJ9hFsSMnGJYYkKioVABSNTWVRuS \ +--commission-bps {{ commission_bps | default(0) }} \ +--bam-url {{ bam_url | default("http://ny.testnet.bam.jito.wtf") }} \ +--block-engine-url {{ block_engine_url | default("https://ny.testnet.block-engine.jito.wtf") }} \ +--shred-receiver-address {{ shred_receiver_address | default("64.130.35.224:1002") }} \ +{% endif %} diff --git a/template/0.9.961/ansible/mainnet-rpc/geyser_build.yml b/template/0.9.961/ansible/mainnet-rpc/geyser_build.yml deleted file mode 100644 index 01766076..00000000 --- a/template/0.9.961/ansible/mainnet-rpc/geyser_build.yml +++ /dev/null @@ -1,72 +0,0 @@ ---- -- name: Install Yellowstone Geyser gRPC plugin from hosted binary - hosts: all - vars_files: - - ~/.slv/versions.yml - become: true - vars: - geyser_install_root: "/home/solv/yellowstone-grpc" - geyser_current_link: "{{ geyser_install_root }}/current" - geyser_target_dir: "{{ geyser_install_root }}/target/release" - geyser_lib_name: "libyellowstone_grpc_geyser.so" - geyser_lib_path: "{{ geyser_target_dir }}/{{ geyser_lib_name }}" - geyser_config_template: "~/.slv/mainnet-rpc/geyser.json.j2" - geyser_config_path: "/home/solv/geyser.json" - tasks: - - name: Resolve geyser version and download URL (overridable via -e geyser_version=) - set_fact: - geyser_version_resolved: "{{ geyser_version | default(mainnet_rpcs.geyser_version) }}" - geyser_release_dir: "{{ geyser_install_root }}/releases/{{ geyser_version | default(mainnet_rpcs.geyser_version) }}" - geyser_download_url: "https://storage.slv.dev/yellowstone-grpc/{{ (geyser_version | default(mainnet_rpcs.geyser_version)) | urlencode }}/{{ geyser_lib_name }}" - geyser_download_dest: "{{ geyser_install_root }}/releases/{{ geyser_version | default(mainnet_rpcs.geyser_version) }}/{{ geyser_lib_name }}" - - - name: Ensure directories exist for geyser plugin - file: - path: "{{ item }}" - state: directory - owner: solv - group: solv - mode: "0755" - loop: - - "{{ geyser_install_root }}" - - "{{ geyser_install_root }}/releases" - - "{{ geyser_release_dir }}" - - "{{ geyser_target_dir }}" - - - name: Download geyser plugin shared object - get_url: - url: "{{ geyser_download_url }}" - dest: "{{ geyser_download_dest }}" - mode: "0644" - owner: solv - group: solv - force: yes - timeout: 60 - retries: 3 - delay: 2 - - - name: Point 'current' symlink to this geyser release - file: - src: "{{ geyser_release_dir }}" - dest: "{{ geyser_current_link }}" - state: link - force: yes - owner: solv - group: solv - - - name: Symlink geyser plugin into target/release - file: - src: "{{ geyser_download_dest }}" - dest: "{{ geyser_lib_path }}" - state: link - force: yes - owner: solv - group: solv - - - name: Copy the geyser.json configuration file - template: - src: "{{ geyser_config_template }}" - dest: "{{ geyser_config_path }}" - owner: solv - group: solv - mode: "0644" diff --git a/template/0.9.961/jinja/testnet-validator/start-validator-jito.sh.j2 b/template/0.9.961/jinja/testnet-validator/start-validator-jito.sh.j2 deleted file mode 100644 index fa1f7f75..00000000 --- a/template/0.9.961/jinja/testnet-validator/start-validator-jito.sh.j2 +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/bash -exec agave-validator \ ---identity /home/solv/identity.json \ ---vote-account {{ vote_account }} \ ---log /home/solv/solana-validator.log \ ---accounts /mnt/accounts \ ---ledger /mnt/ledger \ ---entrypoint entrypoint.testnet.solana.com:8001 \ ---entrypoint entrypoint2.testnet.solana.com:8001 \ ---entrypoint entrypoint3.testnet.solana.com:8001 \ ---known-validator 5D1fNXzvv5NjV1ysLjirC4WY92RNsVH18vjmcszZd8on \ ---only-known-rpc \ ---expected-genesis-hash 4uhcVJyU9pJkvQyS88uRDiswHXSCkY3zQawwpjk2NsNY \ ---dynamic-port-range {{ dynamic_port_range | default("8900-8925") }} \ ---rpc-port {{ port_rpc | default(8899, true) }} \ ---wal-recovery-mode skip_any_corrupted_record \ ---wait-for-supermajority 374301609 \ ---expected-shred-version 24207 \ ---expected-bank-hash CJZAAtgdqYiqHTFKJ9XD9qw4W21wHqojkhrVJSfFF9b7 \ ---limit-ledger-size \ ---no-port-check \ ---commission-bps {{ commission_bps | default(1000) }} \ ---relayer-url http://ny.testnet.relayer.jito.wtf:8100 \ ---block-engine-url https://ny.testnet.block-engine.jito.wtf \ ---shred-receiver-address 64.130.35.224:1002 \ ---tip-payment-program-pubkey GJHtFqM9agxPmkeKjHny6qiRKrXZALvvFGiKf11QE7hy \ ---tip-distribution-program-pubkey DzvGET57TAgEDxvm3ERUM4GNcsAJdqjDLCne9sdfY4wf \ ---merkle-root-upload-authority 7T4inmPmtNBX3MhLwJ9hFsSMnGJYYkKioVABSNTWVRuS \ \ No newline at end of file diff --git a/template/latest b/template/latest index 926d5d7e..01ba93ee 120000 --- a/template/latest +++ b/template/latest @@ -1 +1 @@ -/Users/fumi/labo/slv/template/0.10.0 \ No newline at end of file +/home/openclaw/.openclaw/workspace/vs2-app/slv/template/0.10.1 \ No newline at end of file