使用Ansible Builder安装tar.gz格式的集合

首先

我认为在使用ansible-builder创建自定义执行环境容器镜像时,通常会将集合包含在依赖关系中。

在这种情况下,主要是通过ansible-galaxy安装集合,但如果在没有互联网访问的环境下,可能需要以tar.gz格式进行安装。

本文将介绍在ansible-builder中进行镜像构建时,安装tar.gz格式的集合的方法。

从Ansible Galaxy下载tarball。

我将访问Ansible galaxy,并下载所需收藏的tarball。

 

可以从名为”Download tarball”的链接中下载。

将ansible-builder的版本升级到3.

在创建镜像时,如果要安装 tar.gz 格式的集合包,您需要在 execution-environment.yml 文件中使用 additional_build_files 选项,但是为了使用该选项,您需要将 ansible-builder 版本升级到 3。

升级程序步骤

pip install --upgrade ansible-navigator
pip install --upgrade ansible-builder

请确认使用 “ansible-builder –version” 命令时显示的版本号为3.0.0及以上。
要将 ansible-builder 版本升级到3,您需要先升级 ansible-navigator 版本以满足依赖关系要求。

写execution-environment.yml文件

以下是版本3的execution-environment.yml的示例。

---
version: 3

build_arg_defaults:
  ANSIBLE_GALAXY_CLI_COLLECTION_OPTS: '--pre'

dependencies:
  ansible_core:
    package_pip: ansible-core==2.14.4
  ansible_runner:
    package_pip: ansible-runner
  galaxy: requirements.yml
  python:
    - six
    - psutil
  system: bindep.txt

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

additional_build_files:
    - src: files/ansible.cfg
      dest: configs

additional_build_steps:
  prepend_galaxy:
    - ADD _build/configs/ansible.cfg ~/.ansible.cfg

  prepend_final: |
    RUN whoami
    RUN cat /etc/os-release
  append_final:
    - RUN echo This is a post-install command!
    - RUN ls -la /etc

假设存在以下目录结构。

.
├── collections
│   └── sample-collection-x.y.z.tar.gz
├── execution-environment.yml
└── requirements.yml

在 “additional_build_files” 选项中,添加以下内容。

additional_build_files:
    - src: collections/sample-collection-x.y.z.tar.gz
      dest: mycollections

dest似乎指的是在构建时创建的_build目录下方。

将以下内容写入requirements.yml文件中。

collections:
  - source: mycollections/sample-collection-x.y.z.tar.gz
    type: file

执行构建。

按照通常的流程来执行编译。

ansible-builder build --tags sample-image:x.y

请参照以下内容,用汉语进行准确表述,只需提供一种选择。

    • Execution Environment Definition

 

    ansible-builder and local collection (GitHub Issue)
广告
将在 10 秒后关闭
bannerAds