ansible:如何执行只安装在委托上而不安装在控制器上的自定义模块?

ansible:如何执行只安装在委托上而不安装在控制器上的自定义模块?,ansible,ansible-module,Ansible,Ansible Module,在尝试执行以下操作时,我(对我而言)遇到了ansible的意外问题: #myplaybook.ansible.yml -主持人:myhost2 任务: -名称:执行pgsql查询 community.postgresql.postgresql\u查询: ... 其中myhost1是执行ansible playbook-v myplaybook.ansible.yml的控制器。 在目标主机上myhost2community.postgresql.postgresql\u query安装了ansi

在尝试执行以下操作时,我(对我而言)遇到了
ansible
的意外问题:

#myplaybook.ansible.yml
-主持人:myhost2
任务:
-名称:执行pgsql查询
community.postgresql.postgresql\u查询:
...
其中
myhost1
是执行
ansible playbook-v myplaybook.ansible.yml
的控制器。 在目标主机上
myhost2
community.postgresql.postgresql\u query
安装了
ansible galaxy install
,并且满足了依赖关系(尤其是
psycopg2

问题是:
ansible
在实际评估playbook之前就已经爆炸了,因为它在控制器上找不到
postgresql\u查询
模块,但在
myhost2
上运行此功能的全部目的是避免首先必须在控制器上安装此类依赖项

类似地,我也希望能够像这样执行上述操作,这显然不适用于相同的原因:

#myplaybook.ansible.yml
-主持人:myhost3
任务:
-名称:执行pgsql查询
委托人:myhost2
community.postgresql.postgresql\u查询:
...
问题
如何仅评估在目标主机或代理主机上的任务中调用的
ansible
模块?

这与ansible的工作方式无关。当您有一个playbook时,每个任务都将在控制器上进行评估,这将创建一个Python脚本,控制器将把该脚本发送到托管节点,以便它们执行它。如果控制器不知道模块,那么控制器将无法生成Python脚本,任务当然会失败。此外,您在“控制器”节点上安装ansible模块,而不是在“受控”节点上安装ansible模块,这就是它的工作方式,也是设计的方式。您可能会被要求在受控节点上安装“psycopg2”弄糊涂:这只是一个特定于模块的依赖项,远程python需要它与远程Postgres交互。@β.εηοιτ.βε谢谢,我(错误地)假设,如果受控节点有一个完整的ansible安装,它将在“更高”的级别上使用。你可能想把这个评论变成一个答案(来结束这个问题)?@Lester谢谢,这确实可能是下一个问题。目前,我只是确保在“生产”中使用的相同控制器(即我的CI runner)上进行测试,因此事实上现在一切都是
localhost