簡體   English   中英

使用 Jenkins 運行 ansible-playbook 時出錯

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM