【问题标题】:Invoke Ansible playbook in Jenkins在 Jenkins 中调用 Ansible 剧本
【发布时间】:2018-03-06 23:36:46
【问题描述】:

我有 jenkins 构建,我正在尝试调用 ansible playbook 文件以进行 s3 上传。当我执行用于调用 ansible playbook 文件的构建后脚本时,我以以下错误结束。 无法运行程序“ansible-playbook”(在目录“/var/jenkins_home/workspace/mybuild”中):错误=2,没有这样的文件或目录

下面的截图是 ansible post build 脚本配置。

仅供参考:我的构建文件夹中有一个文件(ansibledemo.yml)。我尝试给出绝对路径(/var/jenkins_home/workspace/mybuild/ansibledemo.yml)。还是不行。

当我尝试直接在 jenkins 映像(终端)中运行 ansible-playbook myplaybook.yml 时,我最终得到 bash: ansible-playbook: command not found

当我尝试在我的 jenkins 服务器中安装 ansible 时,我无法执行任何安装命令。请看下面的截图。

【问题讨论】:

  • 我怀疑 ansible-playbook 本身的搜索路径存在问题...
  • 你能试试 ${WORKSPACE}/mybuild/ansibledemo.yml 还是 ${WORKSPACE}/ansibledemo.yml
  • @ArbabNazar 我已经编辑了我的问题。即使我直接在 jenkins cmd 中运行 playbook 文件,我也会遇到错误。

标签: jenkins continuous-integration ansible ansible-playbook


【解决方案1】:

你的 Jenkins 机器上没有安装 Ansible,首先你需要在 jenkins 机器上安装 ansible:

在 Ubuntu/Debian 上:

sudo apt-add-repository ppa:ansible/ansible
sudo apt-get update
sudo apt-get install ansible

在 CentOS/RedHat 上:

sudo yum install epel-release
sudo yum install ansible

之后,您将能够运行 ansible-playbook。

【讨论】:

  • 我已经更新了我的问题。每当我尝试在我的 jenkins 服务器中安装时,我都会遇到 command not found 错误。
  • jenkins 不是 sudo 用户,需要以 root 或有 sudo 权限的用户登录
  • 我在 docker 容器中运行 jenkins。这是我无法执行任何命令的原因吗?如果是/否,你能在这里表达一些想法吗?
【解决方案2】:

您可以尝试使用pip版本作为替代安装并尝试,请参阅以下步骤,

$ virtualenv venv
$ source venv/bin/activate
$ pip install ansible-container[docker,openshift]

您可以在文档中查看更多安装选项:https://docs.ansible.com/ansible-container/installation.html

但始终保留一个单独的 vm / docker (如“ansible-controller”)并将其用作 jenkins 的奴隶总是一个不错的选择,这样您就不需要 ansible 中的 ansible 插件。 jenkins 在没有太多负载的情况下将始终保持稳定

【讨论】:

    【解决方案3】:
    1. 从配置的源下载包信息。

      # apt update

    2. 安装ansible

      # apt install ansible

    就是这样。

    如果您运行官方 jenkins 容器(基于 debian)而不是带有 ansible 构建的 repo 并且您不需要“apt-add-repository”。但是您可以通过安装 software-properties-common 来安装 apt-add-repository 以供进一步使用。

    dpkg -S apt-add-repository 表示这个数据包属于 software-properties-common。

    出现错误是因为容器的作者总是试图让它尽可能的轻,并删除包信息。

    您不需要 sudo,因为默认情况下您在容器中成为 root。只有在您有意提及时,您才会成为另一个用户。

    请在您的问题中添加您在容器中工作的信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-27
      • 1970-01-01
      • 2020-05-08
      • 1970-01-01
      • 2022-11-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多