无法获得产品版本。如何使用ansible

问题描述 投票:0回答:1
设置CLASSPATH

我可以通过在UNIX中的命令提示符处执行此操作来获取Weblogic版本。

$ . /app/wlserv*/server/bin/setWLSEnv.sh
$ java weblogic.version

我希望在远程主机上使用Ansible来获取Weblogic版本,所以我写了这本剧本:

---
  - hosts: dest_nodes

    tasks:
      - name: Get weblogic version
        shell: "/app/wlserv*/server/bin/setWLSEnv.sh;java weblogic.version"
        register: wlsversion

      - debug:
          msg: "{{ wlsversion }}"

但是,出现此错误:

fatal: [10.0.0.91]: FAILED! => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": true,
    "cmd": "/app/wlserv*/server/bin/setWLSEnv.sh;java weblogic.version",
    "delta": "0:00:00.271434",
    "end": "2020-05-15 16:31:44.209506",
    "invocation": {
        "module_args": {
            "_raw_params": "/app/wlserv*/server/bin/setWLSEnv.sh;java weblogic.version",
            "_uses_shell": true,
            "argv": null,
            "chdir": null,
            "creates": null,
            "executable": null,
            "removes": null,
            "stdin": null,
            "stdin_add_newline": true,
            "strip_empty_ends": true,
            "warn": true
        }
    },
    "msg": "non-zero return code",
    "rc": 1,
    "start": "2020-05-15 16:31:43.938072",
    "stderr": "Error: Could not find or load main class weblogic.version",
    "stderr_lines": [
        "Error: Could not find or load main class weblogic.version"
    ],
    "stdout": "CLASSPATH=/usr/java/jdk1.8.0_192-amd64/lib/tools.jar:/app/wlserver/modules/features/wlst.wls.classpath.jar:\n\nPATH=/app/wlserver/server/bin:/app/wlserver/../oracle_common/modules/thirdparty/org.apache.ant/1.9.8.0.0/apache-ant-1.9.8/bin:/usr/java/jdk1.8.0_192-amd64/jre/bin:/usr/java/jdk1.8.0_192-amd64/bin:/usr/lib64/qt-3.3/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/app/wlserver/../oracle_common/modules/org.apache.maven_3.2.5/bin\n\nYour environment has been set.",
    "stdout_lines": [
        "CLASSPATH=/usr/java/jdk1.8.0_192-amd64/lib/tools.jar:/app/wlserver/modules/features/wlst.wls.classpath.jar:",
        "",
        "PATH=/app/wlserver/server/bin:/app/wlserver/../oracle_common/modules/thirdparty/org.apache.ant/1.9.8.0.0/apache-ant-1.9.8/bin:/usr/java/jdk1.8.0_192-amd64/jre/bin:/usr/java/jdk1.8.0_192-amd64/bin:/usr/lib64/qt-3.3/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/app/wlserver/../oracle_common/modules/org.apache.maven_3.2.5/bin",
        "",
        "Your environment has been set."
    ]
}

从输出中,我看到确实设置了类路径,但是在远程主机上java weblogic.version命令失败。

您能建议我如何将Weblogic版本注册到wlsversion变量吗?

ansible runtime-error version classpath environment
1个回答
0
投票

哇,经过一番努力,我找到了解决方案。在此处发布解决方案。我敢肯定,很多人都会遇到这个问题。

---
  - hosts: dest_nodes

    tasks:
      - name: Get weblogic CLASSPATH
        shell: "/app/wlserv*/server/bin/setWLSEnv.sh"
        register: wlsenv

      - name: Get weblogic Version
        shell: "java weblogic.version"
        environment:
          CLASSPATH: "{{ wlsenv.stdout }}"
        register: wlsversion

      - debug:
          msg: "{{ wlsversion }}"
© www.soinside.com 2019 - 2024. All rights reserved.