我正在使用
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-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 似乎是我的首选引擎。