Date: 2026-05-11
Time: 15:13
FTL2 supports parallel execution of modules across multiple remote hosts simultaneously. Hosts are organized into groups within a YAML inventory, and operations can target all hosts, specific groups, individual hosts, or pattern-matched subsets using the --limit flag. By default, FTL2 executes concurrently across all targeted hosts, so total execution time approximates the slowest host rather than the sum of all hosts.
webservers, databases) under the all.children hierarchy.all (every host) and ungrouped (hosts not in any explicit group) always exist.groups.vars, inherited by all hosts in the group.-a flag).Basic multi-host execution:
ftl2 -m <module> -i inventory.yml
Targeting with --limit:
--limit webservers # specific group
--limit web01 # specific host
--limit "web*" # glob pattern
--limit "!db*" # exclude pattern
--limit "web01,web02" # comma-separated list
--limit "!databases" # exclude a group
Inventory YAML structure:
all:
children:
webservers:
vars:
http_port: 80
hosts:
web01:
ansible_host: 127.0.0.1
ansible_port: 2222
databases:
hosts:
db01:
ansible_host: 127.0.0.1
ansible_port: 2224
Verbose logging for timing/debugging:
ftl2 -m ping -i inventory.yml -vvv
ping, shell, copy, setup) work identically in single-host and multi-host contexts.--limit to control execution order, and idempotent modules to ensure safe re-runs.all and ungrouped are built-in groups that always exist.--limit supports groups, individual hosts, glob patterns, exclusion patterns (!), and comma-separated lists.ansiblehost, ansibleport, ansibleuser, ansibleconnection, ansiblepythoninterpreter as host connection parameters.--limit before running across all hosts.