问题描述
在运行 Ansible adhoc 命令时,是否有可能向 shell 模块传递参数?用户已经知道可以使用 -a
参数传递 free_form
参数,但是他想弄清楚如何指定额外的参数,比如 chdir
或 executable
。用户希望找到与以下任务等效的adhoc命令:
- name: Change working dir to somedir/ and run somescript.sh using bash
shell: somescript.sh >> somelog.txt
args:
chdir: somedir/
executable: /bin/bash
解决方案
请注意以下操作可能因版本差异而异,请在实施前做好备份。
使用 Ansible adhoc 命令传递参数给 shell 模块
在 Ansible adhoc 命令中向 shell 模块传递参数,你可以将参数直接追加到命令之后。下面是一个示例,展示如何传递参数给 shell 模块:
ansible -m shell --args "pwd; touch test; ls -1" localhost
在上述示例中,我们使用 -m shell
参数指定要使用 shell 模块,并在 --args
后面添加我们要传递的参数。注意,在这里我们直接在命令后添加了多个命令,用分号分隔。
如果你想传递更多参数,比如 chdir
或 executable
,可以像下面这样做:
ansible -m shell --args "pwd; touch test; ls -1" localhost | chdir=/scratch/tmp executable=/bin/bash
在上面的示例中,我们在命令末尾使用管道 |
来传递额外的参数。这样,你就可以像在任务中一样传递 chdir
和 executable
参数。
请注意,根据你的具体情况,你可能需要根据实际情况进行适当的调整和修改。
总结
在 Ansible adhoc 命令中向 shell 模块传递参数的方法是,将参数直接追加到命令之后。你可以通过管道 |
将额外的参数传递给 shell 模块,就像在任务中一样。根据需要,你可以在命令中添加多个命令,用分号分隔。
记得根据具体情况进行调整,确保参数传递的正确性。在实施前,最好做好备份,以防操作失误。
注意:Ansible 的版本和特定配置可能会影响命令的准确性和结果,请根据实际情况进行调整。
参考链接
注意:上述解决方案中的命令示例是基于当前已知的信息和标准操作进行构建的。根据实际情况,可能需要对命令进行进一步的调整和测试,以确保其适用性和正确性。
本解决方案提供的信息仅供参考,请在实际操作中谨慎处理,确保你理解所执行的操作及其可能带来的影响。