1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
|
# $Id: TODO 184 2008-03-03 01:54:09Z alan $
reorganize TODO file :)
#################
Version 0.16:
Break a bunch of stuff:
* change behavior of symlinks in SOURCE -- nobody likes the current
behavior, and rsyncd won't let it work as intended anyway. Just copy
them down as symlinks, instead of trying to dereference them within the
repository.
* don't test for -x on scripts, just -e (making non-executable scripts a
fatal error, rather than skipping silently by what is usually a mistake)
* get rid of implicit '-e ssh' with a double-colon in SOURCE. Make people
use --rsh explicitly (maybe add a warning first?)
* replace --cvs-exclude in slack-sync with a better exclude list
[so people can, against my advice :), install .so files and such]
#################
logging!
add --explicit-roles option that enables specifying roles on the command line
but defaults to on. but you can disable this in slack.conf if you want to
avoid admin errors.
make slack-getroles use slack-sync, so only slack-sync needs to know about
how to get stuff from source, and we can more easily add support
for other roles sources
in rolediff, feed the files to slack-diff via stdin or something to speed
things up.
make slack.conf noreplace in slack.spec?
in --preview=prompt, add a "skip" option to skip a particular role
fully support alternate diff programs (temp files or fds for modes with
filename and attribute in the text; honor DIFF env var or something)
Slack.pm: in find_files_to_install(), probably better to hand the callback a
relative path (sub out ^$source/).
make run_backend() do the printing to stderr and dereferencing backend flags
make slack-getroles work for non-superusers (by caching the role list in /tmp
or something)
write unit tests for slack-stage changes (--subdir support)
more unit tests for slack-diff
we can use fakeroot if avail and skip some tests if non-root
manpage update:
describe order of operations
add functionality to check manually-supplied role list against list in
slack-getroles, with option to override
just skip syncing if source equals cache.
use an "install" script, if present, instead of built-in
file install routines
export dry-run, backup, backup-dir if they exist
support preview
add a flag to run script in preview with a dry-run flag or env
function library for shell scripts
in RPM, deb, create subdirs of CACHE
a push script to read roles.conf and push a role to all servers running it
defaults for slack.conf in Slack.pm or somewhere? (so people don't have to
keep patching as new variables are introduced...)
#################
PRE-1.0:
* Figure out some better way to handle backup options:
- by default, we want admins to just specify the base backup dir in config,
and we can add the time-based subdir to it
- we generally want only installfiles to do backups (given the existence
of fixfiles, it's pretty useless for slack-sync)
- if we're doing backups in slack-sync, we need to append
files(.subrole)?|scripts
- rsync really hates whatever fixfiles does with symlinks in the
accounts role. it's probably a bug. track it down.
- before running scripts, install them in some other directory, so we
can keep track of the last script we ran for backup and warning
purposes. (just doing it in slack-sync wouldn't work for nagging
or warning purposes). Probably we'll have to install them all
at once, since we don't know what other files in the scripts/
directory they may use.
* Nagging
- we want to be able to nag admins about files they have not yet installed
or scripts they have not yet run
* separate slack-runscript, slack-runfixfiles
* allow ./configure to set paths
* manpages for slack, slack-backends
* record what roles have been installed
--------
LATER:
* build in support for heterogenous underlying distros, like subsets have
(maybe just using subroles)
* Nagging email about pending changes
* Use backup functionality to store original versions of files,
so we can uninstall
* Use backups to store intermediate versions of files for rollbacks
* Make a helper that uses tripwire or AIDE to find files that
have been modified and upload them to repository, so people
can be *really* lazy.
* Locking to prevent concurrent writes
* something like rpm -ql, -qf to show/query files in a role (just from files
dir)
* use a tarball as a source (possibly fetched with wget)
* support http urls (with wget), both as raw dir trees and as tar.gz files
* use rsync+ssh to mean rsync -e ssh (like svn)
* maybe split the getting stuff in sync/getroles from the syncing stuff in stage, so we can have a common backend for various URLs
|