Closed bauen1 closed 2 years ago
V2 should properly fix this (#759 implemented). The facts API has been rewritten and simplified such that it properly handles all the execution related global arguments. Hoping to have an alpha release out this week!
Support for this is now released in v2 :)
Describe the bug
e.g.
pyinfra -vvv --sudo --dry --limit unused -- inventory.py fact systemd.SystemdStatus
does not respectuse_sudo_password
as defined in the inventory.To Reproduce
Create an inventory with a host and
use_sudo_password
set, invokepyinfra -vvv --sudo --dry --limit unused -- inventory.py fact systemd.SystemdStatus
on it and observe that it (wrongly) asks for a sudo password.Expected behavior
Global arguments should be applied, this allows setting the sudo password, etc., in the inventory.
Meta
Version used was https://github.com/Fizzadar/pyinfra/commit/c8e2f8569798d72b0668d8ac9a5d1fdace74d2ff
Things from discord
@fizzadar And I also have a question about https://github.com/Fizzadar/pyinfra/commit/2cd2e1a5b3ad6389a9ae815b28f2326fe55a4f42
Right now I'm trying to run a fact against a host, that has
use_sudo_password
defined in the inventory, this should cause pyinfra to go straight to uploading the password without first trying to run the command without providing a password¹, but it seemingly doesn't do it, it even prompts me for the password, despite it being in the inventory as a string¹It's an issue because that sends mail to the (other) system admins, who rightfully get a bit annoyed at me
Oh, and it's not set in the config, just in the inventory data, perhaps that is tripping things up
And I think it might be because in https://github.com/Fizzadar/pyinfra/blob/current/pyinfra/api/facts.py#L187-L188 which is invoked directly when using the CLI get get a fact, nothing is done to "apply global arguments", especially because
current_op_global_kwargs
doesn't seem to be set by the cli before calling get_facts