Talis is a multi-cloud infrastructure provisioning and configuration project that uses:
- Hypervisor (VitFusion) API to create and manage cloud instances
- Ansible for initial system configuration and package installation
- Multi-cloud: With a single codebase, you can choose which cloud provider to use (currently supporting DigitalOcean, with more providers coming soon) (This is done through the hypervisor API)
- Ansible: Provides initial system configuration and package installation
- Extensive Testing: Comprehensive test coverage for all cloud provider operations
- Go (1.24 or higher)
- Ansible (2.9 or higher)
- SSH key pair for instance access
- Cloud Credentials: (To Be Updated for Hypervisor API)
- For DigitalOcean: Personal Access Token in
DIGITALOCEAN_TOKEN
environment variable - For Linode: Coming soon
- For Vultr: Coming soon
- For DataPacket: Coming soon
- For DigitalOcean: Personal Access Token in
See architecture doc
- Copy
.env.example
to.env
:
cp .env.example .env
- Add your DigitalOcean Personal Access Token to the
.env
file:
echo "DIGITALOCEAN_TOKEN=your_digitalocean_token_here" >&g
8000
t; .env
Alternatively, you can set it as an environment variable directly.
- Configure the SSH key for Talis server operations (one of these options):
- Provide the SSH key content directly (preferred for deployment):
# Add to .env file echo "TALIS_SSH_KEY=-----BEGIN OPENSSH PRIVATE KEY-----..." >> .env # Or set as environment variable export TALIS_SSH_KEY="-----BEGIN OPENSSH PRIVATE KEY-----..."
- Provide the SSH key content directly (preferred for deployment):
If this is your first time using talis you will need to initialize a user and a project.
# Create a user
make run-cli ARGS="users create --username my-user"
# Create a project
make run-cli ARGS="projects create --name my-project --owner-id <user-id>"
Now you can create a configuration file and use it to create infrastructure.
# Copy and modify the example create configuration
cp create.json_example create.json
# Create infrastructure using your configuration
make run-cli ARGS="infra create --file create.json"
# A delete file (e.g., delete_create.json if your input file was create.json) will be automatically generated after successful creation
# Delete infrastructure using the auto-generated file
make run-cli ARGS="infra delete --file delete.json"
See the create.json_example and delete.json_example files for more information.
For programmatic access to the Talis API using Go, refer to the Go API Client Usage documentation.
TODO: add documentation for hypervisor API
Modify files in ansible/
:
main.yml
: Main Ansible configurationstages/setup.yml
: Initial system setup and configurationvars/main.yml
: Variable definitions- Add new stages in
ansible/stages/
for additional configurations
- AWS provider implementation
- Linode provider implementation
- Vultr provider implementation
- DataPacket provider implementation
- Webhook notification system
- Enhanced job management and monitoring
- 100 Light Nodes deployment support
# Run all tests
make test
The project uses:
- golangci-lint for code quality
- go test for unit and integration testing
- yamllint for YAML file validation
Run the linters:
make lint