如何使用ansible剧本在目标服务器中启动服务

时间:2018-11-18 12:33:54

标签: ansible

我正在尝试运行以下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

有人可以在这里进行故障排除以找出根本原因吗?

2 个答案:

答案 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 &