我正在尝试启动一个安装脚本,它已经存在于远程主机上的ansible剧本。还有一些参数需要。
- hosts: myhost
become: yes
gather_facts: no
tasks:
- name: Running an installation script
command: sh /home/user/install.sh --param1 'param1' --param2 'param2' --param3 'param3' --param4 'param4'
但它不起作用。当我尝试启动剧本时,我得到以下输出:
fatal: [myhost]: FAILED! => {"changed": true, "cmd": ["sh", "/home/user/install.sh", "--param1", "param1", "----param1", "--param1", "--param3", "param3", "--param4", "param4"], "delta": "0:00:00.002254", "end": "2019-04-17 11:27:13.063837", "msg": "non-zero return code", "rc": 2, "start": "2019-04-17 11:27:13.061583", "stderr": "/home/user/install.sh: 4: set: Illegal option -o pipefail", "stderr_lines": ["/home/user/install.sh: 4: set: Illegal option -o pipefail"], "stdout": "", "stdout_lines": []}
3条答案
按热度按时间lyr7nygr1#
脚本失败,并显示以下消息:
“标准错误_行”:["/home/user/install.sh:4:设置:非法选项-o pipefail”]
尝试从字符串读取命令。请参阅sh。
从男人那里问
-c选项导致命令从字符串操作数而不是标准输入中读取。请记住,此选项只接受单个字符串作为其参数,因此多字字符串必须用引号括起来。
eagi6jfj2#
正如文档所建议的(https://docs.ansible.com/ansible/latest/modules/command_module.html),您可以使用如下命令:
如果您的脚本中有一个shebang,这应该没有问题。
另一个解决方案是使用脚本(https://docs.ansible.com/ansible/latest/modules/script_module.html),如下所示:
让我听听有没有帮助
gopyfrb33#
您可以使用shell模块而不是command模块将参数传递给linux命令,特别是脚本,因为它具有脚本模块。
和用于linux命令
例如: shell :“curl --socks 5本地主机:9000 http://www.ansible.com“
有关详细信息,请参阅
https://docs.ansible.com/ansible/latest/modules/shell_module.html