- BUG git doesn't store read/write permissions, so we need a way to set this across repo checkouts
- tree err with overwriting dir
- show errors, even in non -v
- auto handlers
- xz deputy on the line
- self update
- deputy can execute simple "command" task
- chief connects to target
- chief loads playbook into job
- deputy loads job from stdin
- chief and deputy can exchange job over ssh
- build.sh embeds multi-arch linux deputy builds into chief
- chief tests presence of deputy over target
- chief uploads deputy to target
- chief supports embedded targets in playbooks
- support for with_items / loop
- chief runs jobs in parallel
- properly fix quoting in yaml parsing, maybe use this? https://pkg.go.dev/github.com/mitchellh/mapstructure#example-Decode
- add license
- display task results with "whip -v"
- Deputy handles multi plays
- support for variables
- can be defined in playbook, task (via "loop") or externally?
- add air for dev rebuild
- actually sends files
- replace json ipc with gob streaming
- support for template substitution
- support for inventory files
- chief also reads stderr from deputy to catch panics
- limit parallel jobs to x, cli argument
- record gif demo for in readme https://github.com/charmbracelet/vhs
- support handlers
- implement basic runners https://mike42.me/blog/2019-01-the-top-100-ansible-modules
- copy
- authorized_key
- shell
- command
- template
- file
- apt
- systemd
- rsync support (via this? https://github.com/gokrazy/rsync/)
- publish on github
- support vault
- add taskrunner syntax validation so we can lint the tasks before actual run
- struct based cli arg parsing? such as go-arg or go-flags or kong
- module auto doc generation
-
bug: - [email protected] E: dpkg was interrupted, you must manually run 'sudo dpkg --configure -a' to correct the problem.
-
compress gob stream https://kopia.io/docs/advanced/compression/ zstd?
-
Play.PreRun shell command
-
tests for vault
-
tui progress shows DONE when there is an error
-
rename runner to module
-
dont pass whole task to runner
-
add: creates as backwards compat
-
better warning for unvalidated runner:
- name: install root bashrc
copy: src=files/root/bashrc dest=/root/.bashrc
gives
0.000 XXX Runner not found, should have been validated
- get_url
- apt: state latest?
- apt: pkg should be "name" ?
- tags
- bug: _args get assigned to every task
- bug: tree, prefixmap props don't trickle down in map (eg handler for /etc)
- bug: task (pre-) runner should be able to modify their vars, args
- secrets (age?)
- templates
- local command (go build) -- hmmm should get rid of this
- task pre-runners? could load files, run local commands etc
- apt
- creates/validates options ==> unless
- handlers, notify
- files: owner, state, notify
- lineinfile
- files: actual checksum comparison
- systemd (service?)
- validate handler names
- alert on duplicate handlers
- replace Afero with tar for files serialization, so we can infer filemode from the src files
- set up docs https://squidfunk.github.io/mkdocs-material/setup/adding-a-comment-system/
Quality improvements:
- composability: embed "install sansec ssh keys" ?
- embedded files per task
- flatten task list per target, kill play, just send list of tasks to deputy
- need to validate key=val params for the tree module (and others?)