Linux Ansible在执行.run文件时无法传递参数
我正在尝试使用Ansible在剧本中使用以下任务安装.run文件(使用Makeself 2.1.5创建):Linux Ansible在执行.run文件时无法传递参数,linux,ansible,parameter-passing,Linux,Ansible,Parameter Passing,我正在尝试使用Ansible在剧本中使用以下任务安装.run文件(使用Makeself 2.1.5创建): - name: Install Program command: /home/user/folder/program.run -- /S /D=/home/user/folder/destination/ 这里,/S是运行静默安装的开关,参数/D设置安装的目标。在控制台中成功运行此命令 Ansible声称无误运行任务: changed: [127.0.0.1] => {
- name: Install Program
command: /home/user/folder/program.run -- /S /D=/home/user/folder/destination/
这里,/S
是运行静默安装的开关,参数/D
设置安装的目标。在控制台中成功运行此命令
Ansible声称无误运行任务:
changed: [127.0.0.1] => {
"changed": true,
"cmd": [
"/home/user/folder/program.run",
"--",
"/S",
"/D=/home/user/folder/destination/"
],
"delta": "0:00:00.065261",
"end": "2017-01-06 09:08:43.114265",
"invocation": {
"module_args": {
"_raw_params": "/home/user/folder/program.run -- /S /D=/home/user/folder/destination/",
"_uses_shell": false,
"chdir": null,
"creates": null,
"executable": null,
"removes": null,
"warn": true
},
"module_name": "command"
},
"rc": 0,
"start": "2017-01-06 09:08:43.049004",
"stderr": "",
"stdout": "",
"stdout_lines": [],
"warnings" : []
因此,不知何故,附加参数导致执行失败,而Ansible没有注意到。我尝试过使用shell
命令和各种引用我的命令的方式,但都没有用
如果我没有将参数传递给.run
文件,即使用命令:/home/user/folder/program.run
,则会打开一个安装提示,要求用户输入,这与Ansible的目的不符
有人能解决这个问题吗?一个可能的解决方法可能是使用expect
模块,但我更希望能够使用命令行参数,因为这不是我想要安装的唯一文件
我在Ubuntu 16.04.1 LTS上使用Ansible 2.2.0.0
编辑:
按照techraf的建议,我使用
shell
模块找到了一个简单的解决方案。使用shell:konsole-e/home/user/folder/program.run/S/D=/home/user/folder/destination/
导致安装正确完成。也可以将命令放入脚本文件中,并使用脚本
模块运行它。尝试使用shell
模块,而不是命令
:
- name: Install Program
shell: /home/user/folder/program.run -- /S /D=/home/user/folder/destination/
您在命令执行中使用了--
,这实际上阻止了shell解析后面的参数。它是一个内置的shell,不是命令的参数
现在无法测试它(坦白地说,没有你运行的真正程序是不可能的),但我打赌它应该可以工作
如果上述方法不起作用,您可能必须将这一行放入脚本中,并使用
脚本
模块运行它。您的“各种引用方式”是否包含\/S
或\\/S
或\\\/S
?当然没有--
。标题是错误的,Ansible实际上成功地传递了参数,尽管--
应该可以阻止它。@techraf:你几乎解决了我的问题。当我卸下--
时,安装例程已正确启动。我误解了安装程序,认为--
是向嵌入式脚本传递参数所必需的。还有一个问题,安装程序打开一个窗口并要求“按return”将其关闭。但这是安装程序的问题,而不是Ansible的问题。使用shell
模块并不能解决问题。它产生相同的输出,除了“\u uses_shell”:true
,但不安装程序。如果它不起作用,您可能必须编写脚本并使用脚本运行它。当我删除--
时,安装程序会正确启动,但会打开一个窗口,并在安装结束时要求“按return”。我将尝试编写一个脚本,看看这是否解决了问题。这可能就是为什么指示您按照我的建议使用--
编写脚本的原因。我编写了一个脚本,但安装程序仍然要求“按回车键”,所以我想我必须找到另一种方法。但是感谢您的帮助,删除--
是朝着正确方向迈出的重要一步。