2017-10-04 180 views
0

我正在使用Ansible創建symlinkNexus符號鏈接不能看到install4j_java_home

這裏是我創建的任務:

--- 

- name: Create nexus symlink 
    file: 
    src: "/{{ lcp }}/nex/local/lib/nexus/{{ nexus_package }}/bin/nexus" 
    path: "/etc/init.d/nexus" 
    owner: root 
    group: root 
    state: link 

- name: add nexus service 
    command: /sbin/chkconfig --add /etc/init.d/nexus 
    args: 
    chdir: /etc/init.d 

- name: set nexus service level 
    command: /sbin/chkconfig --levels 345 nexus on 
    args: 
    chdir: /etc/init.d 

- name: start nexus service 
    command: /sbin/service nexus start 
    args: 
    chdir: /etc/init.d 

我所注意到的是,Ansible運行爲root。在運行我的任務時,我不得不直接指向/sbin/chkconfig,因爲它正在查看bin文件夾。

我有一個用戶叫nexi,我正在運行Nexus as。我的HOME目錄位於/int/nex/nexi。在這個家庭目錄中,我可以看到-rw-rw-r-- 1 nexi nexi 107 Oct 3 19:48 .install4j

/etc/init.d我可以看到我的符號鏈接創建lrwxrwxrwx 1 root root 49 Oct 2 14:20 nexus -> /int/nex/local/lib/nexus/nexus-3.4.0-02/bin/nexus

當我執行/sbin/service nexus startAnsible,然後我得到

No suitable Java Virtual Machine could be found on your system.\nThe version of the JVM must be at least 1.8 and at most 1.8.\nPlease define INSTALL4J_JAVA_HOME to point to a suitable JVM.

你可以看到,我有一個JAVA_HOME

which java 
/int/nex/local/lib/java/jdk1.8.0_131/bin/java 

而且install4j在我HOMEnexi用戶

cat .install4j 
JRE_VERSION /int/nex/local/lib/java/jdk1.8.0_131 1 8 0 131 
JRE_INFO /int/nex/local/lib/java/jdk1.8.0_131 0 

我一直在關注Sonatype的的Nexus docs

我曾嘗試添加在/etc/.profile.djava.sh揭露了Java位置爲root。雖然我不在這裏。這是我放在java.sh

export JAVA_HOME=/int/nex/local/lib/java/jdk1.8.0_131 
export PATH=$PATH:/int/nex/local/lib/java/jdk1.8.0_131/bin 

回答

1

你可以看到,我有一個JAVA_HOME

是。當您運行交互式shell會話時,您可以看到(僅在交互式shell會話中)。也許出於同樣的原因,你的路徑不同,你必須定義可執行文件的絕對路徑。

我已經嘗試添加在/etc/.profile.d一個java.sh暴露根

不具有任何影響java的位置,因爲Ansible在非交互模式運行殼和外殼沒有源文件(例如參見man bash)。


添加JAVA_HOMEPATH作爲環境Ansible模塊。見Setting the Environment

+0

當我在服務器上運行'nexi'並運行'service nexus start'時,我得到了與上面相同的'INSTALL4J_JAVA_HOME'錯誤。我是否需要爲所有任務更改'JAVA_HOME'和'PATH'? –

+1

是的,沒有。形式上是的,因爲每一個任務都會在一個單獨的會話中運行。不,因爲您可以在鏈接文檔中閱讀:「*您也可以在播放級別使用它*」 – techraf