Skip to main content

quick system configuration tool

Project description

A sysplan apply command in the fashion of netplan.

Overview

In /etc/sysplan.d, you can add .yaml configuration files that sysplan will be able to apply on your system. You will be able to generate systemd stuff, add your custom bash modules, and even more complex python modules to infinitely extend sysplan to your taste.

The structure of the yaml file is as such:

plugin_name:
  your-first-plan-name:
    any: config
    for:
    - your
    - plan

Tutorial

Basics and systemd

Try adding the following content into /etc/sysplan.d/example_systemd.yaml:

services:
  sysplan-test-service:
    TEST_ENV_VAR: 2
    Unit:
      Description: Example Service
    Service:
      Type: oneshot
      ExecStart: /bin/bash -c 'echo nice!'
      WorkingDirectory: /tmp

timers:
  sysplan-test-service:
    Timer:
      OnCalendar: '*-*-* 23:00:00'

mounts:
  mnt-backups:
    Unit:
      Description: Mount NFS Share
    Mount:
      What: 172.24.0.5:/srv/backups
      Where: /mnt/backups
      Type: nfs
      Options: defaults
      TimeoutSec: 10
    Install:
      WantedBy: multi-user.target

Then, try the following commands:

  • sysplan diff

  • sysplan apply

  • sysplan destroy

  • sysplan help

Custom bash modules

Add the following to /etc/sysplan.d/bash_example.yaml:

bash_example.sh:
  plan-one:
    somevar: date
    nested:
    - item: /tmp/$plan_name

  plan-two:
    somevar: uname -a

Add the following to /etc/sysplan.d/bash_example.sh:

write() {
    $somevar > /tmp/$plan_name
    cat /tmp/$plan_name
}

diff() {
    if [ ! -f $nested_0_item ]; then
        echo + $nested_0_item TO CREATE
    else
        $somevar | $(which diff) -u $nested_0_item -
    fi
}

activate() {
    echo activated >> /tmp/$plan_name
}

destroy() {
    rm -rf /tmp/$plan_name
}

Then again, play with the sysplan commands.

Custom python module

Custom Python modules are registered on the sysplan_plans entry points. For example, this is how the systemd plans are registered is setup.py:

entry_points={
    'sysplan_plans': [
        'services = sysplan.systemd:ServicePlan',
        'mounts = sysplan.systemd:MountPlan',
        'timers = sysplan.systemd:TimerPlan',
    ],
},

As such, the pointed python plan classes will be used for the services, mounts and timers keys in sysplan yaml.

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

sysplan-0.0.1.dev23.tar.gz (7.9 kB view details)

Uploaded Source

File details

Details for the file sysplan-0.0.1.dev23.tar.gz.

File metadata

  • Download URL: sysplan-0.0.1.dev23.tar.gz
  • Upload date:
  • Size: 7.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.6.1 pkginfo/1.7.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.9.5

File hashes

Hashes for sysplan-0.0.1.dev23.tar.gz
Algorithm Hash digest
SHA256 bebf1ec588566d9e72fab6a59b5535b97580e81ce2bed2c31f17987e65789958
MD5 af2de7d6226faa1843baf12224b471e4
BLAKE2b-256 7edf1a5fd5a1e2b86c388ffe8cf39ba999a61dcdac7e7ab3dbc1ac86a1071722

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