Status: IN
FTL2 deployments use a two-phase host registration pattern: connect first as `root` to bootstrap an `admin` user, then re-register the same hostname with `ansible_user='admin'` and `ansible_become=True` for privileged operations.
Source: entries/2026/05/11/deployments-catbeez-deploy-prod.md
# Phase 1: bootstrap as root
ftl.add_host(hostname="web01", ansible_host=ip, ansible_user="root")
await ftl["web01"].user(name="admin", groups="wheel", create_home=True)
await ftl["web01"].copy(content=sudoers, dest="/etc/sudoers.d/admin")
# Phase 2: re-register as admin with become
ftl.add_host(hostname="web01", ansible_host=ip,
ansible_user="admin", ansible_become=True)
await ftl["web01"].copy(src="app.conf", dest="/etc/app/config.yml")