[英]Ansible doesn't recognize mvn command, but Maven is installed
我正在嘗試從Ansible Tower運行Maven項目,但是Ansible kepps給我一個“ mvn:無法識別的命令”錯誤,如果我從Linux服務器上的命令行手動進行操作,則mvn可以正常運行
我在嘗試從Ansible運行Gradle時遇到了類似的問題,但是該解決方案在這里不起作用。 以前的問題是,我在運行劇本時需要設置env變量。 我在這里嘗試過,但無濟於事。 我檢查了我的路徑,可以在那里看到Maven路徑。
我接受了Zeitounator的建議,並嘗試使用絕對路徑從Ansible撥打電話,並且行得通。 但是,正如他所說,這只是一個測試,而不是實際的解決方案。
看來Ansible不知道在哪里尋找Maven,而且我不太確定該如何將這些信息傳達給它。 我覺得這是Ansible的一個愚蠢的怪癖,它有愚蠢的簡單解決方案,如果我可以使用“ mvn:找不到命令”以外的任何其他東西,可以解決該問題。
這是我的劇本打來的電話:
- name: test mvn
shell: mvn -version
args:
chdir: /opt/jenkins/batchtest/
environment:
MAVEN_HOME: /opt/maven/
JAVA_HOME: /usr/java/jdk1.8.0_162
這是獲取PATH的結果:
-bash-4.2$ echo $PATH
/bin:/usr/lib64/qt-3.3/bin:/opt/maven/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin
這是mvn -version的輸出,以防我丟失了某些內容
-bash-4.2$ mvn -version
Apache Maven 3.5.3 (3383c37e1f9e9b3bc3df5050c29c8aff9f295297; 2018-02-24T13:49:05-06:00)
Maven home: /opt/maven
Java version: 1.8.0_202, vendor: Oracle Corporation
Java home: /usr/java/jre1.8.0_202-amd64
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-957.12.1.el7.x86_64", arch: "amd64", family: "unix"
您將直接使用bash shell在服務器上啟動上述測試命令。
默認情況下,Ansible shell
模塊使用sh shell(請參閱文檔 )
我必須在這里進行猜測,但是我有99.9%的把握將maven bin路徑添加到了bash特定的init文件中的PATH
變量中,因此在使用sh時它不可用。
您現在有2個解決方案:
PATH
的方式,以便bash和sh都選擇該值。 對於系統范圍的設置,可以使用/etc/profile
。 對於特定用戶,使用~/.profile
應該可以解決問題。 - name: test mvn
shell: mvn -version
args:
chdir: /opt/jenkins/batchtest/
executable: /bin/bash
environment:
MAVEN_HOME: /opt/maven/
JAVA_HOME: /usr/java/jdk1.8.0_162
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.