Skip to main content

Nimbus is engineered to optimize data backup processes and efficiently orchestrate service deployments.

Project description

nimbus

Nimbus is engineered to optimize data backup processes and efficiently orchestrate service deployments for homelabs and dev environments.

build codecov pypi py3.12 MIT License

Table of Contents

Overview

Nimbus stands as a comprehensive data backup manager and service deployment orchestrator tailored for homelabs, media centers, and local development environments. It offers a seamless, turnkey solution to streamline your data management and service orchestration needs. While Nimbus is robust for personal or developmental use, it is not intended to supplant production-level or mission-critical tools designed for commercial-scale backups and deployments.

Getting Started

Install ni with pipx or pip:

pip install nimbuscli
ni --version

Alternatively you can build it from source. Nimbus uses poetry for dependency management and packaging.

pipx ensurepath
pipx install poetry

curl https://pyenv.run | bash

pyenv install 3.12
pyenv virtualenv 3.12 ni_env
pyenv local ni_env

poetry install
ni --version

To do something with nimbus you need to setup the application configuration. For guidance and examples on setting up your configuration, please refer to the configuration example.

Usage

By default, Nimbus searches for its configuration file at the ~/.nimbus/config.yaml path.
It is anticipated that all configurations for the application will be centralized within this file.

Important Note on Glob Patterns in bash/sh
When using the ni command, it’s essential to use \* in place of *.
This is because bash or sh interprets * as a glob pattern and attempts to expand it before passing it to ni.
By escaping the asterisk (\*), you ensure that ni receives the character literally, allowing it to process the glob pattern as intended.

Backups

The backup command facilitates the creation of backups and enables their optional upload to a remote destination, such as an AWS S3 bucket.
The command accepts optional selectors, that filter the configured backup groups using specified glob patterns.

ni backup [selectors]

Lets assume we have the following Nimbus configuration:

profiles:
  archive:
    - name: rar-protected
      provider: rar
      password: SecretPassword
      recovery: 3
      compression: 0
  upload:
    - name: aws-archive
      provider: aws
      access_key: XXXXXXXXXXXXX
      secret_key: XXXXXXXXXXXXXXXXXXXXXXXXX
      bucket: backups.bucket.aws
      storage_class: STANDARD

commands:
  backup:
    destination: ~/.nimbus/backups
    archiver: rar-protected
    uploader: aws-archive
    directories: 
      photos:
        - ~/Pictures
        - /mnt/photos
      cloud:
        - /mnt/nextcloud
      docs:
        - ~/Documents

With this configuration, the following backup commands would result in:

Command Selected Backup groups
ni backup photos cloud docs
ni backup nx\*
ni backup photos photos
ni backup ph\* \*cloud\* photos cloud
ni backup \*o\?\? cloud docs

Deployments

The up and down commands manage deployments of services. Nimbus supports services structured as Docker Compose stacks and performs recursive service discovery for the configured directories.
The command accepts optional selectors, that filter the discovered services using specified glob patterns.

ni up [selectors]
ni down [selectors]

Lets assume we have the following Nimbus configuration:

commands:
  deploy:
    services:
      - ~/.nimbus/services

And under the ~/.nimbus/services we have the following directory structure:

|- services
    |- media
        |- .env
        |- compose.yaml
    |- cloud
        |- .env
        |- compose.yaml
    |- git
        |- some_file.txt 
        |- start.sh

With this configuration and directory structure, the following deployment commands would result in:

Command Selected Services
ni up media cloud
ni up media media
ni down g\*
ni down git
ni down cl\* cloud

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nimbuscli-0.3.1.tar.gz (29.0 kB view details)

Uploaded Source

Built Distribution

nimbuscli-0.3.1-py3-none-any.whl (38.2 kB view details)

Uploaded Python 3

File details

Details for the file nimbuscli-0.3.1.tar.gz.

File metadata

  • Download URL: nimbuscli-0.3.1.tar.gz
  • Upload date:
  • Size: 29.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.2 CPython/3.10.12 Linux/5.15.146.1-microsoft-standard-WSL2

File hashes

Hashes for nimbuscli-0.3.1.tar.gz
Algorithm Hash digest
SHA256 3cd5f6e5ebc5eed1960fa0dec58563fcc1d19cc8773db1b0aafddb1981aa99cb
MD5 e3e063095ae019932162dab6285afe48
BLAKE2b-256 f2568d1858236a38d1a5b7fc6c4f49be07214bedeec0d970b201502056dda299

See more details on using hashes here.

File details

Details for the file nimbuscli-0.3.1-py3-none-any.whl.

File metadata

  • Download URL: nimbuscli-0.3.1-py3-none-any.whl
  • Upload date:
  • Size: 38.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.2 CPython/3.10.12 Linux/5.15.146.1-microsoft-standard-WSL2

File hashes

Hashes for nimbuscli-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1a07d08e9f09e619fdc37b52f1c1e5144e1452234eb1de9e1f25aa1777bff4a2
MD5 164d6ef04a63f70eca7e5de5eeea80c2
BLAKE2b-256 057f1d9b532caa868776d633b34628770d152d3e9c3c168a19916be3e95cc22f

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page