You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Open decision left by #50, which enabled ANSIBLE_PIPELINING for the molecule scenarios only.
ansible/ansible.cfg sets no pipelining, so after #50 the test suite and a real make deploy use different Ansible transports: the suite streams modules over stdin, production stages a remote temp file.
What this does and does not mean
It is tempting to call this a coverage regression — it mostly isn't, and the calibration matters:
With pipelining on, command/shell modules are fed over stdin, so the remote-tmp path behind become_user is not exercised. The role has two such tasks: decdn key-gen (ansible/roles/decdn_node/tasks/main.yml:1192-1201) and the decdn config validate gate (:1444-1460).
But molecule connects as root, where handing the temp file to an unprivileged user is a plain chown. The ACL path the role warns about (:1489, "needs the acl package on this host") was therefore never reproduced by this suite, before or after perf(molecule): run scenarios in parallel, enable pipelining #50.
So no real coverage was lost. What remains is the divergence itself: prod runs a path the tests never take.
#50 already closed the sharper half of this by adding acl to baseline_packages, so hosts provisioned by site.yml are no longer exposed to the footgun the role documents.
The question
Set pipelining = True in ansible/ansible.cfg so test and prod match — and real deploys get the same speedup the suite did (−22% of per-task overhead) — or leave deploys on the default transport deliberately, and keep the divergence documented?
Argument for: fewer transports to reason about, faster deploys, and acl is now installed anyway.
Argument against: it changes behaviour on real hosts, which is a bigger blast radius than a test-only knob, and deploy speed has never been the complaint.
The coverage boundary is documented at ansible/molecule/default/molecule.yml in the meantime.
Open decision left by #50, which enabled
ANSIBLE_PIPELININGfor the molecule scenarios only.ansible/ansible.cfgsets nopipelining, so after #50 the test suite and a realmake deployuse different Ansible transports: the suite streams modules over stdin, production stages a remote temp file.What this does and does not mean
It is tempting to call this a coverage regression — it mostly isn't, and the calibration matters:
command/shellmodules are fed over stdin, so the remote-tmp path behindbecome_useris not exercised. The role has two such tasks:decdn key-gen(ansible/roles/decdn_node/tasks/main.yml:1192-1201) and thedecdn config validategate (:1444-1460).chown. The ACL path the role warns about (:1489, "needs theaclpackage on this host") was therefore never reproduced by this suite, before or after perf(molecule): run scenarios in parallel, enable pipelining #50.So no real coverage was lost. What remains is the divergence itself: prod runs a path the tests never take.
#50 already closed the sharper half of this by adding
acltobaseline_packages, so hosts provisioned bysite.ymlare no longer exposed to the footgun the role documents.The question
Set
pipelining = Trueinansible/ansible.cfgso test and prod match — and real deploys get the same speedup the suite did (−22% of per-task overhead) — or leave deploys on the default transport deliberately, and keep the divergence documented?Argument for: fewer transports to reason about, faster deploys, and
aclis now installed anyway.Argument against: it changes behaviour on real hosts, which is a bigger blast radius than a test-only knob, and deploy speed has never been the complaint.
The coverage boundary is documented at
ansible/molecule/default/molecule.ymlin the meantime.