Jenkins 自由风格作业中调用 ansible-playbook 的权限被拒绝消息

Permission denied Message in Jenkins Free style Job for calling ansible-playbook

我的申请

我正在尝试创建一个 Jenkins 作业来实施我的 CI/CD 管道。我正在使用 SVN 存储库进行版本控制。当我提交到这个存储库时,Jenkins 中的作业配置需要触发并需要调用一个 Ansible Playbook YML 文件。我正在使用 Ansible 剧本配置管道的每个阶段。

我目前的做法

我创建了一个 svn 存储库并在 hooks 目录中配置了 post-commit 钩子。我创建了一个 Ansible 剧本。我正在使用这个 Ansible 剧本构建我所有的管道阶段。

当我手动 运行 Ansible 剧本时,它成功运行。但是当我创建一个詹金斯工作并使用工作调用这个剧本时,Ansible 部分显示 "Red Crossmark".

我在 Jenkins 上执行的步骤

  1. 创建了新的 jenkins 自由风格项目
  2. 编辑了项目的描述
  3. 在源代码管理中选择 "Subversion" 并添加 SVN 存储库 URL 和凭据
  4. 已在“生成触发器”部分选中 "Poll SCM"
  5. 在构建部分选择 "Invoke Ansible Playbook " 并添加剧本 Url。

下图显示了调用 ansible 部分,

更新

注意: 使用 sudo 复选框选中状态

错误

当我尝试申请时,它没有显示任何内容。如果我保存并再次从仪表板获取,它显示 "Failed"。就像下面的屏幕截图,

更新控制台输出错误

TASK [Gathering Facts] *********************************************************
fatal: [localhost]: FAILED! => {"changed": false, "module_stderr": "sudo: a password is required\n", "module_stdout": "", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 1}
to retry, use: --limit @/home/spacestudy/pipelinesite.retry

 PLAY RECAP *********************************************************************
 localhost                  : ok=0    changed=0    unreachable=0    failed=1  

通过取消选中 sudo 复选框更新了尝试

 TASK [pipelinerole : login into dockerhub] *************************************
fatal: [localhost]: FAILED! => {"changed": false, "msg": "Error connecting: Error while fetching server API version: ('Connection aborted.', error(13, 'Permission denied'))"}
to retry, use: --limit @/home/spacestudy/pipelinesite.retry

在 EC2

上通过 Shell 命令直接测试方法

注意:

当我 运行 直接在我的 EC2 上执行“$ansible-playbook” shell command 命令时,得到同样的错误。但是当我 运行 shell 命令 "$sudo ansible-playbook" 时,没有得到错误。因此,我在这里也选中了 "sudo" 复选框。但是我越来越不一样了。

如何解决工作失败的问题以及无法申请的原因?

也许问题出在 SVN 存储库的权限上?是否需要身份验证?

错误是 Connection aborted.', error(13, 'Permission deniedsudo: a password is required。根据屏幕截图,您没有指定任何用户凭据。当您的构建机器访问 SVN 服务器和存储库时,它似乎必须提供用户名和密码。如果您现在指定凭据但仍然看到错误,请确保它们是正确的并且用户帐户对存储库具有读取权限。