ansible-builder 不会创建 introspect.py 脚本

问题描述 投票:0回答:1

我正在使用

ansible-builder
构建执行环境。每次运行时都会出现此错误:

#24 0.269 /usr/bin/python3: 无法打开文件 '/output/scripts/introspect.py': [Errno 2] 没有这样的文件或目录

#24 错误:执行程序运行失败 [/bin/sh -c $PYCMD /output/scripts/introspect.py introspect --user-pip=requirements.txt --user-bindep=bindep.txt --write-bindep= /tmp/src/bindep.txt --write-pip=/tmp/src/requirements.txt]:退出代码:2

我认为

introspect.py
集合依赖自省有关。

对于上下文,我在我构建的自定义 Docker 容器中运行它,所以我可能错误地安装了

ansible-builder
?但我不确定。这是 Dockerfile:

FROM docker.io/docker

ENV PYTHONUNBUFFERED=1

RUN apk add --update --no-cache jq python3 && ln -sf python3 /usr/bin/python
RUN python3 -m venv .venv
RUN . .venv/bin/activate
RUN .venv/bin/pip3 install ansible-builder
RUN ln .venv/bin/ansible-builder /usr/bin/ansible-builder

我验证了

ansible-builder create
正在创建
_build/scripts/introspect.py
脚本,该脚本由 Dockerfile 复制:

COPY _build/scripts/ /output/scripts/

当我从 CLI 构建 EE 时它可以工作,但是当它使用上述容器在 CI 管道中构建时,我收到错误。

为什么我会收到此错误以及如何修复它?

ansible
1个回答
0
投票

我遇到了同样的错误,并成功解决了它。 我想我应该分享我的发现。

最近 ansible-builder 进行了升级,推出了 3.1.0 版本。

如果没有看到您的 execution-environment.yml 文件,我会怀疑您仍在使用该格式。

版本:1

我建议使用 version 3 格式,如下所示:

---
version: 3
images:
  base_image:
    name: registry.redhat.io/ansible-automation-platform-24/ee-minimal-rhel8:latest

dependencies:
  galaxy: requirements.yml

options:
  package_manager_path: /usr/bin/microdnf

可以在这里找到可靠的参考:[https://www.redhat.com/en/blog/unlocking-efficiency-harnessing-the-capability-of-ansible-builder-3.0]。 请注意选项。我第一次错过了它,然后我发现上面的链接更好地解释了它。

我可能会补充一些其他内容。 验证您的 ansible.cfg 正在使用的 python 版本,并构建一个版本相同的 python venv。 python3.9 似乎是我的首选引擎。

© www.soinside.com 2019 - 2024. All rights reserved.