не удалось найти ansible-playbook при выполнении через jenkins

#jenkins #ansible

#дженкинс #ansible

Вопрос:

Я пытаюсь запустить ansible-playbook через jenkins, но в итоге выдаю ошибку, которая гласит

 "ERROR! the playbook: /home/ansible/apache/provision.yml could not be found"
  

Я попытался выполнить playbook вручную, и он работает просто отлично. Я попытался выполнить отладку с точки зрения разрешений. Ansible playbook принадлежит пользователю «ansible» и группе «ansible». Jenkins запускается пользователем «jenkins» и также является частью группы «ansible», но ничего не работает. Ниже показано, что выводится на консоль. Ребята, можете ли вы посоветовать, как я могу устранить это?

 *
Building in workspace /var/lib/jenkins/workspace/Apache-Provision


[Apache-Provision] $ /usr/bin/ansible-playbook /home/ansible/apache/provision.yml -s -U ansible -f 5

ERROR! the playbook: /home/ansible/apache/provision.yml could not be found

FATAL: command execution failed
hudson.AbortException: Ansible playbook execution failed
    at org.jenkinsci.plugins.ansible.AnsiblePlaybookBuilder.perform(AnsiblePlaybookBuilder.java:262)
    at org.jenkinsci.plugins.ansible.AnsiblePlaybookBuilder.perform(AnsiblePlaybookBuilder.java:232)
    at hudson.tasks.BuildStepCompatibilityLayer.perform(BuildStepCompatibilityLayer.java:81)
    at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20)
    at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:744)
    at hudson.model.Build$BuildExecution.build(Build.java:206)
    at hudson.model.Build$BuildExecution.doRun(Build.java:163)
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:504)
    at hudson.model.Run.execute(Run.java:1810)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
    at hudson.model.ResourceController.execute(ResourceController.java:97)
    at hudson.model.Executor.run(Executor.java:429)
ERROR: Ansible playbook execution failed
Finished: FAILURE*
  

Комментарии:

1. Нахождение в группе не означает, что у группы есть разрешение на чтение файла или разрешение на чтение и выполнение в родительских каталогах. Вполне возможно, что /home/ansible у него нет групповых разрешений на чтение и выполнение.

2. да, вы правы, мой jenkins master использует user для подключения к моему jenkins slave от другого пользователя, когда я помещаю playbook в свой каталог / root, у обычного пользователя нет разрешения на поиск этого playbook. большое спасибо за ваш ответ.

Ответ №1:

Возможно, вы переименовали свое задание Jenkins с консоли, и всякий раз, когда вы его переименовываете, создается новое рабочее пространство с обновленным именем, пожалуйста, проверьте это и обновите путь к рабочему пространству в конфигурации jenkins.