Skip to main content

Quick IT Management Tools

This is a set of lightweight IT management tools meant for small organizations and homelabs. It is meant to fall somewhere between the capabilities of bash scripts and ansible.

The tools automate a handful of operations which I found myself having to repeatedly perform, but didn't have straightforward means of automation without jumping into much heavier and more complex solutions. The project is set up to provide a comfortable command line interface for manual and scripted use, while also being a fully usable Python 3 library.

Features

I add these features as I have need of them, but suggestions and contributions are welcome:

(All are in progress)

  • Certificate checking and deployment
  • Local hosts file management
  • Local DNS static entry management
  • Vyos wireguard management

Debugging

pip install --editable .

Development Information

Startup

From the command line, all persisted state is accessed through a singleton of the Environment class. This is retrieved from the Environment.default() method.

During the first call to Environment.default() the environment is constructed. The configuration for the Environment object is provided by the QuickConfig class. This in turn is constructed through the QuickConfig.default() static method, which attempts to load a configuration file from the default application configuration directory provided by click.

Object Construction

These mechanisms are messy and need to be streamlined once I have a better idea of all the things they need to do.

Objects which provide functionality are constructed dynamically at runtime from stored configuration. The Environment object has a field called builders which is a simple dataclass that has two IBuilder objects, one for building context objects, and one for building key stores.

An IBuilder instantiates objects at the request of callers. Types which the builder can produce must be registered using the register method, which takes the name The default implementation of an IBuilder is the GenericBuilder (these might be able to be squashed into one later).

Registering a type with the builder involves giving it a friendly string name for the type (this is the human-readable name used in configuration files), the type of the object to be built, and the type of the configuration object. Types which are built by a builder must have a class initializer which accepts an instance of the configuration object as the first argument.

Configurations for objects are stored in the form of json/yaml dictionaries having three elements: (1) a string name, (2) a string type which matches a string type name registered with the appropriate builder, and (3) a config dictionary that will be passed into the initializer of the configuration object. When something is going to be built, these three things are put into an EntityConfig object which then gets given to the builder's build method. It will first instantiate the configuration type using dacite's from_dict method on the config dictionary. Then it will instantiate the final object by passing this configuration object into the initializer for that class.

All of this is basically a complicated way of managing dynamic configurations.

Hosts

Hosts are one of the main entities. A host represents a computer or something that acts like a computer. It has the following properties:

  • A unique name
  • A text description
  • A list of client management mechanisms (ssh, api, etc)
  • A set of type based configurations

Metadata

Release files for quick-manage 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for quick-manage 0.1.0
File Size Uploaded Provenance Actions
quick-manage-0.1.0.tar.gz 28.0 kB Without provenance Details for quick-manage-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for quick-manage 0.1.0
File Interpreter ABI Platform Actions
quick_manage-0.1.0-py3-none-any.whl Python 3 none any Details for quick_manage-0.1.0-py3-none-any.whl

Total release size: 63.4 kB

Release files / quick-manage-0.1.0.tar.gz

Download URL quick-manage-0.1.0.tar.gz
Size 28.0 kB
Tags Source
SHA-256 checksum
How to use checksums
4fcd9e645f298aa5d9b185c717977679fd0a554ce738d1aad6d3086c839d90cd
BLAKE2b-256 checksum
How to use checksums
a3e7559bd92c48a684b52f2bc4998aaea3a680776c486be03bf0dd0436d51d9e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.6

Release files / quick_manage-0.1.0-py3-none-any.whl

Download URL quick_manage-0.1.0-py3-none-any.whl
Size 35.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
bd6103c3a97c0668a0ebf5c0ece4ca7b9f5684fbb4c23ee8a30ceb5dc5c926aa
BLAKE2b-256 checksum
How to use checksums
14df64b651f7999649bad1207396899b006853a0c553b77f451df840723f1158
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.6

Security for quick-manage 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page