Commit Briefs

Izzy Blacklock

added command line params for bin/configNow.pl Initial work for staging (master)

Initial work to create staging repo and merge config. Seems to be a bug I haven't had a chance to fix yet. usage for bin/configNow.pl added. bin/configNow.pl account <users>


Izzy Blacklock

Initial support for staging git

renamed shellname to account. adding of configNow repos to the stageNow repo as submodules.


Izzy Blacklock

Added acmeClient and CustDomain modules.

only write files if we have content.



Izzy Blacklock

Reworked how output files are generated

renamed {configNow} to {gitWorkDir} in config hash $type added to module keys to allow specifying group vs user output filenames for modules now stripped of leading / write_file() and delete_file now responsible for prefixing path with {gitWorkDir} {lists}->{filenames} generated during IRCNOW::ConfigNow::load_mod() - hash of filenames => array of module objects wanting to write to file - write_config() now uses the filename hash to find output to write more cleanup needed but seems to work currently.


Izzy Blacklock

moved repo code to subs in ConfigNow.pm

Now checks if the repo is clean before creating files. Added $self->{repo} to store the repo object.



Izzy Blacklock

intial work to write config to files and create git repo

Now appends the output to the specified file for each file in a module. Creates the directory tree needed.


Izzy Blacklock

Moved poc into proper ConfigNow module structure with plugin model

Currently outputs SmtpDove and prosody config files.



Branches


Tags

This repository contains no tags

Tree

.gitignorecommits | blame
.gitmodulescommits | blame
README.mdcommits | blame
Templates/
bin/
lib/

README.md

!! Summary

configNow is a method of configuring shell accounts using the remote shells method here:
https://www.planetofnix.com/wiki/pmwiki.php?n=Howto.RemoteShells

It handles creating of shell accounts and user accounts for a shell account.  It also manages a history of config changes via a git repository.  Each shell account will have a git repository in ~/configNow/ for storing configuration snippits for the account.  The account ownder can view and modify these snippits using the configNow tool or by hand.  Changes commited will be pulled into a staging area for inclusion in the generated configuration files for the system.

The system config filles will be assembled from the combined snippits of all the active users and also stored in a git repo to track changes.  The config file snippits will be stored in the appropriate format using the path and filename of the file they'll be merged into.  So dns records will be found in ~/configNow/var/nsd/zones/master/user.planetofnix.com and mail config will be found in ~/configNow/etc/mail/, etc.

Account holders and Admins will be notified of pending changes needing review before config changes are deployed.  Some basic sanity checks should be done to help alert users and admins to detected issues.  Some changes could be auto aproved.  Either way, admins will be able to view the history and revert to earlier versions if a change breaks something. 

NOTE: This is a work in progress so things are likely to change as the project matures.  The goal is to have an easy way to manage user configuration in a way that also enables and help them to learn to handle their own managemnt.  This is accomplished by giving them access to see and manipulate their portions of the config files in thier raw format as well as easy to use tools for beginners.

!! Configuration Supported

This project should be able to support any config file needed to manage users on any of the servers.  A plugin system will likely be needed to make it easy for server admins to add additional configuration needs over time.

!!! DNS Zone Files

/var/nsd/zones/master/

!!! Shell Accounts

!!! eMail Accounts

!!! XMPP Accounts 

!!! Lets Encrypte Certificates

!!! ZNC Accounts

!! configNow Config

Configuration variables used in the generation of account config snippits will be set in ./configNow.conf, /etc/configNow.conf, or /home/configNow/configNow.conf.  It'll be searched in that order; first one found will be used.

!!! confignow.conf Example

[@
@]