jenkins - Jenkins Free style Job 中调用 ansible-playbook 的权限被拒绝消息

标签 jenkins svn ansible jenkins-pipeline

我的申请

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

我目前的方法

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

当我手动运行 Ansible playbook 时,它可以成功运行。但是当我创建一个 Jenkins 工作并使用工作调用这个剧本时,Ansible 部分显示“Red Crossmark”。

我在 Jenkins 上执行的步骤

  • 创建新的 jenkins 自由风格项目
  • 编辑了项目
  • 的描述
  • 在源代码管理中选择“Subversion”并添加 SVN repo URL 和凭据
  • 选中“构建触发器”部分中的“轮询 SCM”
  • 在 Build 部分选择“Invoke Ansible Playbook”并添加 playbook Url。

  • 下图显示了调用 ansible 部分,

    更新

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

    enter image description here

    错误

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

    enter image description here

    更新控制台输出错误
    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 命令命令时,出现相同的错误。但是当我运行 shell 命令“ $sudo ansible-playbook ”时,没有得到错误。正因为如此,我在这里也选中了“sudo”复选框。但我变得完全不同了。

    我该如何解决工作失败的问题以及为什么我无法申请?

    最佳答案

    也许问题在于对 SVN 存储库的权限?它需要身份验证吗?

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

    关于jenkins - Jenkins Free style Job 中调用 ansible-playbook 的权限被拒绝消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53097429/

    相关文章:

    linux - 如何在 linux 中读取用户日期并在 svn 日志中使用该日期

    ansible - 如何在 Ansible 的一个变量中使用来自多个主机的主机变量?

    java - 如何在 Jenkins 上设置 LD_LIBRARY_PATH

    Jenkins 无法识别 Maven

    maven - Hudson 3.1.0 + Maven 2.2.1 + sonar 3.7.3 [ERROR] 加载器约束违规 : when resolving field "VISIBLE"

    jenkins - Jenkins 作业参数的动态或条件显示(而不是它们的值总体)

    svn - 通过 apache webdav 访问 subversion 存储库时 Pdf 被破坏

    svn - 创建 'partial' 补丁文件/使用 TortoiseSVN

    python - Ansibe 支持 Python 3 吗?如果您需要 Python 3 支持,请改用 `dnf` Ansible 模块

    linux - Ansible 剧本创建输出到日志文件