diff --git a/ansible_mitogen/connection.py b/ansible_mitogen/connection.py index b5f28d34..411b99f1 100644 --- a/ansible_mitogen/connection.py +++ b/ansible_mitogen/connection.py @@ -356,7 +356,7 @@ def _connect_mitogen_doas(spec): 'username': spec.remote_user(), 'password': spec.password(), 'python_path': spec.python_path(), - 'doas_path': spec.become_exe(), + 'doas_path': spec.ansible_doas_exe(), 'connect_timeout': spec.timeout(), 'remote_name': get_remote_name(spec), } diff --git a/ansible_mitogen/transport_config.py b/ansible_mitogen/transport_config.py index d5f15b10..0bdad4f3 100644 --- a/ansible_mitogen/transport_config.py +++ b/ansible_mitogen/transport_config.py @@ -294,6 +294,12 @@ class Spec(with_metaclass(abc.ABCMeta, object)): Connection-specific arguments. """ + @abc.abstractmethod + def ansible_doas_exe(self): + """ + Value of "ansible_doas_exe" variable. + """ + class PlayContextSpec(Spec): """ @@ -425,6 +431,12 @@ class PlayContextSpec(Spec): def extra_args(self): return self._connection.get_extra_args() + def ansible_doas_exe(self): + return ( + self._connection.get_task_var('ansible_doas_exe') or + os.environ.get('ANSIBLE_DOAS_EXE') + ) + class MitogenViaSpec(Spec): """ @@ -635,3 +647,9 @@ class MitogenViaSpec(Spec): def extra_args(self): return [] # TODO + + def ansible_doas_exe(self): + return ( + self._host_vars.get('ansible_doas_exe') or + os.environ.get('ANSIBLE_DOAS_EXE') + )