我正在尝试运行以下ansible剧本,以在远程服务器上的路径“ nexux / bin”处启动“ nexus”服务,但操作失败:
- hosts: nexus
become: yes
become_user: nexus
become_method: sudo
tasks:
- name: changing dir and starting nexus service
shell:
chdir: nexux/bin
executable: ./nexus start
有人可以在这里进行故障排除以找出根本原因吗?
答案 0 :(得分:0)
正如ansible输出非常清楚地告诉您的那样,在该语法中,您没有提供命令。 executable:
被设计为 shell 可执行文件,而不是“运行此文件”参数。很清楚in the examples section of the fine manual
- shell: cd /opt/nexus/bin && ./nexus start
如果要使用chdir:
选项,则必须将其放在shell:
的同级yaml键下,如下所示:
- shell: echo hello world
args:
chdir: /opt/nexus/bin
# I'm omitting the "executable:" key here, because you for sure
# do not want to do that, but if you did, then fine, put it here
如上所述,正如文档也所指出的,您真正想要的是使用command:
,因为您没有使用任何特殊的 shell 字符(重定向,管道,&&
短语等),因此:
- command: ./nexus start
args:
chdir: /opt/nexus/bin
答案 1 :(得分:0)
尝试使用shell模块,我也建议与nohup一起运行并将输出发送到文件中
- shell: |
cd /opt/nexus/bin
nohup ./nexus start > /tmp/nexus.log 2>&1 &