[feat] add coolify-node entity and example #37
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This pull request introduces a new "Coolify" integration, enabling the deployment and management of self-hosted Coolify instances using Monk. The changes include configuration files, a detailed example, and a custom lifecycle script for managing nodes. Below are the most important changes grouped by theme:
Configuration and Manifest Setup:
MANIFEST
file to define the repository, load a YAML schema, and reference the lifecycle script (node-sync.js
).example.yaml
to define a namespace, root-node and join-node configurations, and a stack setup for deploying Coolify instances. This file also specifies Azure as the provider and includes secrets management.Documentation:
README.md
file with a usage example for setting up Coolify instances, including commands for loading the manifest, setting secrets, and running the stack. It also provides instructions for accessing the deployed instance.Schema Definition:
node-entity.yaml
, which defines the schema for a Coolify node, including required properties (e.g., provider, region, instance) and lifecycle management using the customsync
script.Lifecycle Management:
node-sync.js
, a lifecycle script that handles creating, updating, and deleting nodes. It includes logic for root-node initialization, API token generation, and joining additional nodes to the root instance. The script also manages SSH keys and validates nodes against the Coolify API.