Earlier 0.7.0 development builds experimented with Puppet and Salt renderers. That experiment has been removed from the current codebase. The supported flow today is simpler and more honest: harvest a Linux host, validate the bundle, and generate Ansible roles and playbooks.
--target ansible, --target puppet, or --target salt, it is stale. Current enroll manifest has no --target option.What remains
- Harvest bundles with
state.jsonand captured artifacts. - Ansible manifesting in single-site mode or
--fqdnmulti-site mode. - Role grouping by package section/group where possible, with
--no-common-rolesavailable when you prefer one generated role per package or unit. - Remote harvesting over SSH, including OpenSSH config support, sudo prompts, and encrypted key passphrase handling.
- Diff, explain, and validate workflows for drift reporting and bundle inspection.
- SOPS at-rest encryption for harvest and manifest bundles.
- JinjaTurtle integration for supported Ansible templates when the executable is available.
A current workflow
$ enroll harvest --out ./harvest
$ enroll validate ./harvest
$ enroll manifest --harvest ./harvest --out ./ansible
$ cd ./ansible
$ ansible-galaxy collection install -r requirements.yml
$ ansible-playbook -i "localhost," -c local playbook.yml --checkSecurity and provenance changes
The current documentation is also more explicit about trust boundaries. Enroll validates structure and tries to avoid accidental secret capture, symlink traversal, unsafe artifact paths, unsafe root output paths, and root PATH foot-guns. It still cannot prove that a harvested desired state is semantically safe to apply.
This harvest is structurally valid, but Enroll cannot prove it is semantically safe. Only apply manifests generated from harvests whose provenance you trust.
Other notable current behavior
- Safe-mode content scanning tolerates value-less credential words in comments, but populated credential assignments are still treated as sensitive even if commented out.
- Automatic per-user shell dotfile harvesting is only enabled in
--dangerousmode. - Plain directory harvests are frozen into a private temp tree before manifesting, reducing TOCTOU exposure between validation and rendering.
- Remote harvests reject unknown SSH host keys by default.
- Root runs refuse unsafe non-interactive
PATHsetups unless--assume-safe-pathis supplied.
The News and Troubleshooting sections are retained on the website, but they now document the current tool rather than the removed Puppet/Salt experiment.