--- title: "Enroll 0.7.0 beta: Ansible-only again, with stronger safety tooling" date: "2026-06-30" description: "Current Enroll 0.7.0 beta notes: the Puppet and Salt experiment has been removed; Enroll now documents Ansible-only output and stronger safety tooling." summary: "The current beta focuses Enroll back on Ansible-only output, removes stale Puppet/Salt documentation, and clarifies safety and provenance guidance." html_title: "Enroll 0.7.0 beta - Ansible-only current documentation" og_title: "Enroll 0.7.0 beta: Ansible-only current documentation" og_description: "The current Enroll beta removes the old Puppet/Salt experiment from the docs and focuses on Ansible output, validation, SOPS, and safety." og_type: "article" ---
News

Enroll 0.7.0 beta: Ansible-only again, with stronger safety tooling

The current beta focuses Enroll back on one supported output path: harvest Linux hosts and render Ansible.

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.

Documentation note: if you find an old command using --target ansible, --target puppet, or --target salt, it is stale. Current enroll manifest has no --target option.

What remains

  • Harvest bundles with state.json and captured artifacts.
  • Ansible manifesting in single-site mode or --fqdn multi-site mode.
  • Role grouping by package section/group where possible, with --no-common-roles available 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 --check

Security 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 --dangerous mode.
  • 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 PATH setups unless --assume-safe-path is 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.