aboutsummaryrefslogtreecommitdiff
path: root/docker/base/Dockerfile.j2
diff options
context:
space:
mode:
authorMichal Nasiadka <mnasiadka@gmail.com>2026-07-06 15:26:00 +0200
committerMichal Nasiadka <mnasiadka@gmail.com>2026-07-06 19:59:40 +0000
commitdb35ac8d793506bc43b62e7e39d27a75de1043ed (patch)
treefeec28d13a43490f5fd4260374144a1abfc20331 /docker/base/Dockerfile.j2
parent1ae1850557e3b99902f73b32c9005618537a1f2d (diff)
downloadkolla-db35ac8d793506bc43b62e7e39d27a75de1043ed.tar.gz
kolla-db35ac8d793506bc43b62e7e39d27a75de1043ed.zip
Migrate to pyproject.toml
[tool.setuptools.data-files] does not support recursive directory installation. The old setup.cfg [files] worked because PBR's FilesConfig.expand_globs() used os.walk() to expand docker/*, but this hook is not triggered by the pbr.build PEP-517 backend. Move docker/ into kolla/ and use [tool.setuptools.package-data] instead. Update kolla_worker._get_images_dir() to check the kolla package directory first so both editable and regular installs work. Change-Id: I4fc452c03740ef22ebbb4e8d0d86c4f4783e2d09 Signed-off-by: Michal Nasiadka <mnasiadka@gmail.com>
Diffstat (limited to 'docker/base/Dockerfile.j2')
-rw-r--r--docker/base/Dockerfile.j2346
1 files changed, 0 insertions, 346 deletions
diff --git a/docker/base/Dockerfile.j2 b/docker/base/Dockerfile.j2
deleted file mode 100644
index 0e2f3c1ab..000000000
--- a/docker/base/Dockerfile.j2
+++ /dev/null
@@ -1,346 +0,0 @@
-FROM {{ base_image }}:{{ base_distro_tag }}
-{% block labels %}
-LABEL maintainer="{{ maintainer }}" name="{{ image_name }}"
-{% endblock %}
-
-RUN . /etc/os-release;\
- if [ "${PRETTY_NAME#{{ supported_distro_name }}}" = "$PRETTY_NAME" ]; then \
- echo "Only releases \"{{ supported_distro_name }}\" are supported on {{ base_distro }}"; false; \
- fi
-
-# We use curl in this dockerfile so let configure it before first use
-COPY curlrc /root/.curlrc
-
-{% block base_lang %}
-# NOTE(yoctozepto): use a UTF-8 (Unicode) locale like standard image installs do
-# fixes issues arising from ascii fallback usage
-ENV LANG en_US.UTF-8
-{% endblock %}
-
-LABEL kolla_version="{{ kolla_version }}"
-
-{% import "macros.j2" as macros with context %}
-{% block base_header %}{% endblock %}
-
-ENV KOLLA_BASE_DISTRO={{ base_distro }} \
- KOLLA_BASE_ARCH={{ base_arch }}
-
-#### Customize PS1 to be used with bash shell
-COPY kolla_bashrc /tmp/
-RUN cat /tmp/kolla_bashrc >> /etc/skel/.bashrc \
- && cat /tmp/kolla_bashrc >> /root/.bashrc
-
-# PS1 var when used /bin/sh shell
-ENV PS1="$(tput bold)($(printenv KOLLA_SERVICE_NAME))$(tput sgr0)[$(id -un)@$(hostname -s) $(pwd)]$ "
-
-{% if base_package_type == 'rpm' %}
-# For RPM Variants, enable the correct repositories - this should all be done
-# in the base image so repos are consistent throughout the system. This also
-# enables to provide repo overrides at a later date in a simple fashion if we
-# desire such functionality. I think we will :)
-
-ENV KOLLA_RPM_OVS_VERSION=3.5 \
- KOLLA_RPM_OVN_VERSION=26.03
-
-RUN cat /tmp/kolla_bashrc >> /etc/bashrc \
- && sed -i 's|^\(override_install_langs=.*\)|# \1|' /etc/dnf/dnf.conf
-
-{% block base_dnf_conf %}
-{% block base_yum_conf %}
-
-COPY dnf.conf /etc/dnf/dnf.conf
-
-{% endblock %}
-{% endblock %}
-
-#### BEGIN REPO ENABLEMENT
-{% set base_yum_url_packages = [
-] %}
-
-{% set base_yum_repo_keys = [
-] %}
-
-{% block base_centos_repo_overrides_post_copy %}{% endblock %}
-
-# Install what is needed for en_US.UTF-8
-{% block base_centos_distro_sync_and_languages %}
-
-{% set base_centos_language_packages = [
- 'langpacks-en',
- 'glibc-all-langpacks'
-] %}
-
-# NOTE(hrw): this macro file drops all languages other than C.UTF-8 so horizon fails
-# https://bugzilla.redhat.com/show_bug.cgi?id=1729770
-RUN rm -f /etc/rpm/macros.image-language-conf \
- && {{ macros.install_packages(base_centos_language_packages | customizable("centos_language_packages"), chain=True, clean=False) }} \
- && {{ macros.rpm_security_update(clean_package_cache) }}
-
-{% endblock %}
-
-{{ macros.install_packages(base_yum_url_packages | customizable("yum_url_packages")) }}
-
-{% for key in base_yum_repo_keys | customizable('yum_repo_keys') %}
-{%- if loop.first %}RUN {% else %} && {% endif -%}
- rpm --import {{ key }}
-{%- if not loop.last %} \{% endif %}
-{% endfor -%}
-
-{% for cmd in rpm_setup %}
-{{ cmd }}
-{% endfor %}
-
-{% block base_centos_repo_overrides_post_rpm %}{% endblock %}
-
-{% block base_centos_gpg_key_import %}
-{% endblock %}
-
-{% set base_centos_yum_repo_keys = [
-] %}
-
-{% set base_centos_yum_repo_packages = [
- 'centos-release-ceph-squid',
- 'centos-release-nfv-openvswitch',
- 'epel-release',
-] %}
-
-# We need 'dnf-plugins-core' for 'dnf config-manager'
-{% set base_centos_yum_repo_packages = base_centos_yum_repo_packages + [
- 'dnf-plugins-core'
-] %}
-
-RUN {{ macros.install_packages(base_centos_yum_repo_packages | customizable("centos_yum_repo_packages"), chain=True, clean=False) }}
-
-{%- for key in base_centos_yum_repo_keys | customizable('centos_yum_repo_keys') %} && rpm --import {{ key }} {% endfor %} \
-{% block base_centos_repo_overrides_post_yum %}{% endblock -%}
- && {{ macros.rpm_security_update(clean_package_cache) }}
-
-#### END REPO ENABLEMENT
-
-{# We are back to the basic if conditional here which is:
- if base_package_type == 'rpm' #}
-
-{% block base_redhat_binary_versionlock %}{% endblock %}
-
-{# NOTE(hrw): CentOS Stream 9 has curl-minimal, Rocky Linux 9 has curl so we do not install any #}
-{% set base_centos_packages = [
- 'ca-certificates',
- 'crypto-policies-scripts',
- 'dumb-init',
- 'findutils',
- 'hostname',
- 'iproute',
- 'iscsi-initiator-utils',
- 'lsof',
- 'lvm2',
- 'ncurses',
- 'openssl',
- 'procps-ng',
- 'python3',
- 'python3-pip',
- 'python3-pyyaml',
- 'socat',
- 'sudo',
- 'tar',
- 'util-linux',
- 'util-linux-user',
- 'which',
- 'patch'
-] %}
-
-# Install base packages
-{{ macros.enable_extra_repos(['epel']) }}
-{{ macros.install_packages(base_centos_packages | customizable("centos_packages") | customizable("centos_binary_packages") | customizable("centos_source_packages")) }}
-
-{# endif for base_package_type rpm #}
-{% elif base_package_type == 'deb' %}
-# This will prevent questions from being asked during the install
-ENV DEBIAN_FRONTEND noninteractive
-
-# Reducing disk footprint
-COPY dpkg_reducing_disk_footprint /etc/dpkg/dpkg.cfg.d/dpkg_reducing_disk_footprint
-
-{% block base_ubuntu_package_pre %}
-# curl and ca-certificates to fetch remote keys via http
-# gnupg to fetch keys directly from keyserver
-{% set base_ubuntu_package_pre_packages = [
- 'adduser',
- 'ca-certificates',
- 'curl',
- 'gnupg'
-] %}
-# ubuntu-cloud-keyring to install UCA packages
-{% if base_distro == 'ubuntu' %}
-{% set base_ubuntu_package_pre_packages = base_ubuntu_package_pre_packages + [
- 'ubuntu-cloud-keyring'
-] %}
-{% endif %}
-{{ macros.install_packages(base_ubuntu_package_pre_packages | customizable("base_ubuntu_package_pre_packages")) }}
-{% endblock %}
-
-# Customize PS1 bash shell
-# - enlarge 'system users' range so 'haproxy' package will not complain
-# see https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=939470
-# - enlarge 'system groups' range so 'hacluster' user added in
-# https://review.opendev.org/c/openstack/kolla/+/802671
-# can be in 'haclient' group with same high uid
-RUN cat /tmp/kolla_bashrc >> /etc/bash.bashrc \
- && sed -i -e s/#*LAST_SYSTEM_UID=999/LAST_SYSTEM_UID=59999/g \
- -e s/#*LAST_SYSTEM_GID=999/LAST_SYSTEM_GID=59999/g /etc/adduser.conf
-
-{# NOTE(mnasiadka): Ubuntu arm64 uses ports.ubuntu.com #}
-{% block base_ubuntu_package_sources_list %}
-{% if base_distro == "ubuntu" and base_arch == 'aarch64' %}
-COPY {{ base_distro }}.sources.arm64 /etc/apt/sources.list.d/{{ base_distro }}.sources
-{% else %}
-COPY {{ base_distro }}.sources /etc/apt/sources.list.d/
-{% endif %}
-COPY sources.list /etc/apt/sources.list.d/kolla-custom.list
-{% endblock %}
-
-{% block base_debian_after_sources_list %}{% endblock %}
-
-{# install Debian Openstack repos - they are not mirrored on CI #}
-{% if base_distro == 'debian' %}
-
-RUN apt update \
- && apt install -y --no-install-recommends extrepo \
- && extrepo enable openstack_{{ openstack_release_codename | lower }} \
- && apt purge -y extrepo \
- && apt --purge autoremove -y \
- && apt clean
-
-{% endif %}
-
-{% block base_ubuntu_package_apt_preferences %}
-COPY apt_preferences.{{ base_distro }} /etc/apt/preferences
-COPY apt_preferences /etc/apt/preferences.d/kolla-custom
-{% endblock %}
-
-{% set base_apt_packages = [
- 'apt-utils',
- 'dumb-init',
- 'systemd-standalone-sysusers',
- 'gawk',
- 'iproute2',
- 'kmod',
- 'lsof',
- 'lvm2',
- 'netbase',
- 'open-iscsi',
- 'procps',
- 'python3',
- 'python3-pip',
- 'python3-yaml',
- 'socat',
- 'sudo',
- 'tgt',
- 'patch'
-] %}
-
-{% set base_apt_keys = [
- {'name': 'erlang-ppa', 'keyid': 'F77F1EDA57EBB1CC'},
- {'name': 'rabbitmq', 'keyid': '6B73A36E6026DFCA'},
- {'name': 'haproxy', 'keyid': 'CFFB779AADC995E4F350A060505D97A41C61B9CD'},
-] %}
-
-{# NOTE(hrw): type field defaults to 'asc' which is used for single keys #}
-{% set base_remote_apt_keys = [
- {'name': 'docker-ce', 'url': 'https://download.docker.com/linux/debian/gpg'},
- {'name': 'fluentd', 'url': 'https://fluentd.cdn.cncf.io/GPG-KEY-fluent-package'},
- {'name': 'grafana', 'url': 'https://rpm.grafana.com/gpg.key'},
- {'name': 'mariadb', 'url': 'https://downloads.mariadb.com/MariaDB/mariadb-keyring-2019.gpg', 'type': 'gpg'},
- {'name': 'opensearch', 'url': 'https://artifacts.opensearch.org/publickeys/opensearch-release.pgp'},
- {'name': 'proxysql', 'url': 'https://repo.proxysql.com/ProxySQL/proxysql-3.0.x/repo_pub_key'},
-] %}
-
-{% block base_ubuntu_package_installation %}
- {%- block base_ubuntu_package_key_installation %}
- {% for key in base_apt_keys | customizable('apt_keys') %}
- {%- if loop.first %}RUN mkdir -p /etc/kolla/apt-keys/{% endif %} \
- && gpg --keyserver hkp://keyserver.ubuntu.com:80 \
- {% if env.http_proxy %} --keyserver-options "http-proxy={{ env.http_proxy }}" {% endif %}\
- --recv-keys {{ key.keyid }} \
- && gpg --export {{ key.keyid }} >/etc/kolla/apt-keys/{{ key.name }}.gpg
- {%- if not loop.last %} \
- {% endif -%}
- {% endfor %}
- {% for key in base_remote_apt_keys | customizable('remote_apt_keys') %}
- {%- if loop.first %} RUN mkdir -p /etc/kolla/apt-keys/ {% endif %} \
- && curl {{ key.url }} -o /etc/kolla/apt-keys/{{ key.name }}.{{ key.type | default('asc') }}
- {%- if not loop.last %} \
- {% endif -%}
- {% endfor %}
- {% endblock %}
-RUN apt-get --error-on=any update \
- && apt-get -y install locales \
- && sed -e "s/# $LANG UTF-8/$LANG UTF-8/g" /etc/locale.gen -i \
- && locale-gen "$LANG" \
- && apt-get -y upgrade \
- && apt-get -y dist-upgrade \
- && {{ macros.install_packages(base_apt_packages | customizable('apt_packages'), True) }} \
- # NOTE: python3-pip installs dependent tzdata package and blocks mount in docker - 2091161
- && unlink /etc/localtime
-
-{% endblock %}
-
-{# endif base_package_type deb #}
-{% endif %}
-
-{# NOTE(SamYaple): Avoid uid/gid conflicts by creating each user/group up front. #}
-{# Specifics required such as homedir or shell are configured within the service specific image #}
-{%- for name, user in users | dictsort() %}
-{% if loop.first -%}RUN {% else %} && {% endif -%}
- groupadd --gid {{ user.gid }} {{ user.group }} \
- && useradd -l -M --shell /usr/sbin/nologin --uid {{ user.uid }} --gid {{ user.gid }} {{ name }}
- {%- if not loop.last %} \{% endif -%}
-{%- endfor %}
-
-{% if base_distro == 'centos' %}
-RUN sed -ri '/-session(\s+)optional(\s+)pam_systemd.so/d' /etc/pam.d/system-auth \
- && sed -ri '/^[^#]/ s/systemd//g' /etc/nsswitch.conf
-{% endif %}
-
-COPY set_configs.py /usr/local/bin/kolla_set_configs
-COPY start.sh /usr/local/bin/kolla_start
-COPY copy_cacerts.sh /usr/local/bin/kolla_copy_cacerts
-COPY install_projects.sh /usr/local/bin/kolla_install_projects
-COPY kolla_patch.sh /usr/local/bin/kolla_patch
-COPY sudoers /etc/sudoers
-
-{% if use_dumb_init %}
-ENTRYPOINT ["dumb-init", "--single-child", "--"]
-{% endif %}
-
-{% if docker_healthchecks %}
-{% block healthcheck_installation %}
-
-COPY healthcheck_curl healthcheck_filemod healthcheck_listen healthcheck_port healthcheck_socket /usr/local/bin/
-RUN chmod 755 /usr/local/bin/healthcheck_*
-
-{% endblock %}
-{% endif %}
-
-RUN touch /usr/local/bin/kolla_extend_start \
- && chmod 755 /usr/local/bin/kolla_start \
- /usr/local/bin/kolla_set_configs \
- /usr/local/bin/kolla_copy_cacerts \
- /usr/local/bin/kolla_install_projects \
- /usr/local/bin/kolla_patch \
- && chmod 644 /usr/local/bin/kolla_extend_start \
- && chmod 440 /etc/sudoers \
- && mkdir -p /var/log/kolla \
- && chown :kolla /var/log/kolla \
- && chmod 2775 /var/log/kolla \
- && rm -f /tmp/kolla_bashrc
-
-{% block base_pip_conf %}
-# the variables like PIP_INDEX_URL, PIP_EXTRA_INDEX_URL, PIP_TRUSTED_HOST etc. should be defined here.
-# ENV PIP_INDEX_URL=https://pypi.python.org/simple
-# ENV PIP_TRUSTED_HOST=pypi.python.org
-{% endblock %}
-
-{{ macros.kolla_patch_sources() }}
-
-{% block base_footer %}{% endblock %}
-CMD ["kolla_start"]