[英]Error running ansible-playbook using Jenkins
當我使用 Jenkins 運行 ansible playbook 時,出現以下錯誤。
Java.io.IOException: Cannot run program "/usr/bin/ansible-playbook" (in directory "/var/jenkins_home/workspace/ans"): error=2, No such file or directory
“
這就是我的 Jenkinsfile 中的內容
pipeline {
agent any
environment {
PATH = "/usr/bin/ansible:/usr/bin/ansible-playbook:$PATH"
ANS_HOME = tool('ansible')
}
stages {
stage('Example') {
steps {
echo "PATH is: $ANS_HOME"
sh "whoami"
sh "echo $PATH"
sh "/usr/bin/ansible-playbook -i /path /to/myinventory.ini /path/to/playbooks/myplaybook.yml --extra-vars '{\"mode\" : \"running\"}'"
}
}
}
}
它以 root 用戶身份運行,因為我從 sh "whoami" 的輸出是 root 。還有路徑有 /usr/bin 、 /usr/bin/ansible 和 /usr/bin/ansible-playbook
--------輸出如下 -------------------------------
> [Pipeline] {
> [Pipeline] stage
> [Pipeline] { (Example)
> [Pipeline] echo
> PATH is: /usr/bin/
> [Pipeline] sh
> [t_AWS-DB-resource-scheduler-TM5AGTEATY6FDJ7IENKWVPBZAIMOHYN5WXTFRS72TMHS4V4L57UA]
> Running shell script
> ps: unrecognized option: p
> + whoami
> root
> [Pipeline] sh
> [t_AWS-DB-resource-scheduler-TM5AGTEATY6FDJ7IENKWVPBZAIMOHYN5WXTFRS72TMHS4V4L57UA]
> Running shell script
> ps: unrecognized option: p
> + echo /usr/bin/ansible:/usr/bin/ansible-playbook:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/java-1.8-openjdk/jre/bin:/usr/lib/jvm/java-1.8-openjdk/bin
> /usr/bin/ansible:/usr/bin/ansible-playbook:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/java-1.8-openjdk/jre/bin:/usr/lib/jvm/java-1.8-openjdk/bin
> [Pipeline] sh
> [t_AWS-DB-resource-scheduler-TM5AGTEATY6FDJ7IENKWVPBZAIMOHYN5WXTFRS72TMHS4V4L57UA]
> Running shell script
> ps: unrecognized option: p
> -o COL1,COL2=HEADER Select columns for display
> + /usr/bin/ansible-playbook -i /mnt/management/environments/localhost.ini
> /mnt/management/playbooks/utilities/aws-scheduler.yml --extra-vars
> {"mode" : "running"}
> /var/jenkins_home/workspace/t_AWS-DB-resource-scheduler-TM5AGTEATY6FDJ7IENKWVPBZAIMOHYN5WXTFRS72TMHS4V4L57UA@tmp/durable-ae31d6ed/script.sh:
> line 1: /usr/bin/ansible-playbook: not found
我將按照以下步驟解決您的問題:
檢查 Jenkins 用來運行您的劇本的文件夾是什么,此信息位於任務控制台中。
確保 Jenkins 在運行任務后沒有清理存儲庫。
SSH 進入 Jenkins 並轉到 jenkins 作為 jenkins 用戶使用的工作區。
確保所有文件都位於預期位置。
手動運行腳本。
如果您可以手動運行該命令,請確保將正確的命令放在管道上,並確保路徑之間沒有空格。 (我這樣說是因為您粘貼的命令在“/path”“/to/myinventory.ini”之間有空格)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.