linux - Ansible - 如何使用参数运行 Java jar?

标签 linux bash vagrant ansible

我对 ansible 剧本有疑问。我正在尝试将 Java jar 作为命令运行。每当我直接在虚拟机上运行它时 - 它一直有效:

java -jar Installer20161018.jar -readImage Linux_x86-64_20161111.zip -installDir /opt/installPath/vf5511/instDir

重要信息:必须从用户 vf5511 运行安装,他的 home 文件夹是 /opt/installPath/vf5511

但是当尝试编写剧本并运行它时 - 一切都出错了。

这是剧本:

---
- hosts: webmwc10
  become: yes
  become_user: wm5511
  become_method: sudo
  tasks:
    - name: installing server
      shell: java -jar Installer20161018.jar -readImage Linux_x86-64_20161111.zip -installDir /opt/installPath/vf5511/instDir

当我运行 playbook 时,出现错误:

"rc": 127,
"start": "2017-06-02 09:21:31.931049",
"stderr": "/bin/sh: java: command not found",
"stderr_lines": [
    "/bin/sh: java: command not found"
],
"stdout": "",
"stdout_lines": []

未找到 Java?我不明白这一点。 Java 已安装并正常工作!

谁能帮我解决这个问题?

最佳答案

在目标服务器上运行以下命令以排除 Java 问题

    which java
    java -version

成功后,将引号添加到您的 shell 命令中,如下所示,然后再次运行剧本。

    shell: "java -jar Installer20161018.jar -readImage Linux_x86-64_20161111.zip -installDir /opt/installPath/vf5511/instDir"

关于linux - Ansible - 如何使用参数运行 Java jar?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44325507/

相关文章:

c++ - 程序接收信号 SIGILL,非法指令

bash - 如何在 Mac OS 中使用脚本检测文件是别名还是原始文件

php - Laravel Vagrant 不工作 - Errno::EADDRNOTAVAIL

vagrant - 我无法连接到 Vagrant 处理的虚拟机 : `ssh` executable not found in any directories in the %PATH%,,但我有它

redis - 无法连接到 vagrant 机器上的 redis

c - 如何使用 Linux 最快的方式写入二进制文件?

Linux Mint 想要缩小驱动器

ruby-on-rails - 如何从 shell 脚本运行 rails command 命令?

bash - 如何获取hiveQL脚本花费的时间

c - 如何避免 C 容器服务器的用户定义库程序中出现 "exit"?