From bfb29c35227d2dd5cc2799cf032562e37512e755 Mon Sep 17 00:00:00 2001 From: Roman Sysoev Date: Tue, 14 May 2024 16:30:11 +0300 Subject: [PATCH 1/2] chore(core): build images on alt-linux and base-scratch Use alt-linux and base-scratch as base runtime environments. Signed-off-by: Roman Sysoev --- images/base-alt-p10/werf.inc.yaml | 7 ++ images/cdi-apiserver/werf.inc.yaml | 21 ++-- images/cdi-cloner/werf.inc.yaml | 22 +++-- images/cdi-controller/werf.inc.yaml | 21 ++-- images/cdi-importer/werf.inc.yaml | 35 +++++-- images/cdi-operator/werf.inc.yaml | 22 +++-- images/cdi-uploadproxy/werf.inc.yaml | 19 +++- images/cdi-uploadserver/werf.inc.yaml | 27 ++++-- images/libguestfs/werf.inc.yaml | 37 ++++++- images/virt-exportproxy/werf.inc.yaml | 25 ++++- images/virt-exportserver/werf.inc.yaml | 25 ++++- images/virt-handler/werf.inc.yaml | 45 ++++++++- images/virt-launcher/libvirt.conf | 19 ++++ images/virt-launcher/werf.inc.yaml | 127 ++++++++++++++++++++++++- 14 files changed, 388 insertions(+), 64 deletions(-) create mode 100644 images/base-alt-p10/werf.inc.yaml create mode 100644 images/virt-launcher/libvirt.conf diff --git a/images/base-alt-p10/werf.inc.yaml b/images/base-alt-p10/werf.inc.yaml new file mode 100644 index 000000000..a351fe86e --- /dev/null +++ b/images/base-alt-p10/werf.inc.yaml @@ -0,0 +1,7 @@ +--- +image: {{ $.ImageName }} +from: docker.io/alt:p10@sha256:aaddacc787afa546cc03a252adf9799d48f7a0498ecb46ea0d477642b03018eb +shell: + setup: + # Create nonroot-user group and user. + - groupadd --gid 1001 nonroot-user && useradd nonroot-user --uid 1001 --gid 1001 --shell /bin/bash --create-home diff --git a/images/cdi-apiserver/werf.inc.yaml b/images/cdi-apiserver/werf.inc.yaml index f2ec11b5d..869352d9b 100644 --- a/images/cdi-apiserver/werf.inc.yaml +++ b/images/cdi-apiserver/werf.inc.yaml @@ -1,14 +1,23 @@ --- image: {{ $.ImageName }} -fromImage: base-scratch +fromImage: base-alt-p10 import: - image: cdi-artifact - add: /images/kubevirt/{{ $.ImageName }}:latest - excludePaths: - - 'sys' - to: / + add: /images/kubevirt/{{ $.ImageName }}:latest/usr/bin + to: /usr/bin before: setup -# Source https://github.com/kubevirt/containerized-data-importer/blob/main/cmd/cdi-apiserver/BUILD.bazel + includePaths: + - cdi-apiserver +shell: + install: + # Install packages from Sisyphus repository because p10 repository does not have required versions. + - echo "rpm [alt] http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus x86_64 classic" > /etc/apt/sources.list.d/sisyphus.list + - | + apt-get update && apt-get install --yes \ + glibc==6:2.38.0.76.e9f05fa1c6-alt1:sisyphus+347163.100.1.1 + - apt-get clean + - rm --recursive --force /var/lib/apt/lists/ftp.altlinux.org* +# Source https://github.com/kubevirt/containerized-data-importer/blob/v1.58.0/cmd/cdi-apiserver/BUILD.bazel docker: ENTRYPOINT: ["/usr/bin/cdi-apiserver", "-alsologtostderr"] USER: 1001 diff --git a/images/cdi-cloner/werf.inc.yaml b/images/cdi-cloner/werf.inc.yaml index 1ab1ebc39..c8a19549f 100644 --- a/images/cdi-cloner/werf.inc.yaml +++ b/images/cdi-cloner/werf.inc.yaml @@ -1,13 +1,23 @@ --- image: {{ $.ImageName }} -fromImage: base-scratch +fromImage: base-alt-p10 import: - image: cdi-artifact - add: /images/kubevirt/{{ $.ImageName }}:latest - excludePaths: - - 'sys' - to: / + add: /images/kubevirt/{{ $.ImageName }}:latest/usr/bin + to: /usr/bin before: setup -# Source https://github.com/kubevirt/containerized-data-importer/blob/main/cmd/cdi-cloner/BUILD.bazel + includePaths: + - cdi-cloner + - cloner_startup.sh +shell: + install: + # Install packages from Sisyphus repository because p10 repository does not have required versions. + - echo "rpm [alt] http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus x86_64 classic" > /etc/apt/sources.list.d/sisyphus.list + - | + apt-get update && apt-get install --yes \ + glibc==6:2.38.0.76.e9f05fa1c6-alt1:sisyphus+347163.100.1.1 + - apt-get clean + - rm --recursive --force /var/lib/apt/lists/ftp.altlinux.org* +# Source https://github.com/kubevirt/containerized-data-importer/blob/v1.58.0/cmd/cdi-cloner/BUILD.bazel docker: ENTRYPOINT: ["/usr/bin/cloner_startup.sh"] diff --git a/images/cdi-controller/werf.inc.yaml b/images/cdi-controller/werf.inc.yaml index 431c271e0..673ca1072 100644 --- a/images/cdi-controller/werf.inc.yaml +++ b/images/cdi-controller/werf.inc.yaml @@ -1,14 +1,23 @@ --- image: {{ $.ImageName }} -fromImage: base-scratch +fromImage: base-alt-p10 import: - image: cdi-artifact - add: /images/kubevirt/{{ $.ImageName }}:latest - excludePaths: - - 'sys' - to: / + add: /images/kubevirt/{{ $.ImageName }}:latest/usr/bin + to: /usr/bin before: setup -# Source https://github.com/kubevirt/containerized-data-importer/blob/main/cmd/cdi-controller/controller.go + includePaths: + - cdi-controller +shell: + install: + # Install packages from Sisyphus repository because p10 repository does not have required versions. + - echo "rpm [alt] http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus x86_64 classic" > /etc/apt/sources.list.d/sisyphus.list + - | + apt-get update && apt-get install --yes \ + glibc==6:2.38.0.76.e9f05fa1c6-alt1:sisyphus+347163.100.1.1 + - apt-get clean + - rm --recursive --force /var/lib/apt/lists/ftp.altlinux.org* +# Source https://github.com/kubevirt/containerized-data-importer/blob/v1.58.0/cmd/cdi-controller/BUILD.bazel docker: ENTRYPOINT: ["/usr/bin/cdi-controller", "-alsologtostderr"] USER: 1001 diff --git a/images/cdi-importer/werf.inc.yaml b/images/cdi-importer/werf.inc.yaml index f4cec75e2..70604b9ea 100644 --- a/images/cdi-importer/werf.inc.yaml +++ b/images/cdi-importer/werf.inc.yaml @@ -1,13 +1,36 @@ --- image: {{ $.ImageName }} -fromImage: base-scratch +fromImage: base-alt-p10 import: - image: cdi-artifact - add: /images/kubevirt/{{ $.ImageName }}:latest - excludePaths: - - 'sys' - to: / + add: /images/kubevirt/{{ $.ImageName }}:latest/usr/bin + to: /usr/bin before: setup -# Source https://github.com/kubevirt/containerized-data-importer/blob/main/cmd/cdi-importer/BUILD.bazel + includePaths: + - cdi-containerimage-server + - cdi-image-size-detection + - cdi-importer + - cdi-source-update-poller +shell: + install: + # Intall main packages. + - | + apt-get update && apt-get install --yes \ + qemu-img==8.2.2-alt0.p10.1:p10+345290.260.6.1 \ + sqlite3==3.35.5-alt1.p10.1:p10+340851.100.1.1 \ + nbd-client==3.25-alt3:p10+340489.300.2.1 \ + nbd-server==3.25-alt3:p10+340489.300.2.1 + # Install packages from Sisyphus repository because p10 repository does not have required versions. + - echo "rpm [alt] http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus x86_64 classic" > /etc/apt/sources.list.d/sisyphus.list + - echo "rpm [alt] http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus noarch classic" >> /etc/apt/sources.list.d/sisyphus.list + - | + apt-get update && apt-get install --yes \ + glibc==6:2.38.0.76.e9f05fa1c6-alt1:sisyphus+347163.100.1.1 \ + libnbd==1.19.11-alt1:sisyphus+347436.100.3.1 + - apt-get clean + - rm --recursive --force /var/lib/apt/lists/ftp.altlinux.org* + setup: + - ln -s /sbin/blockdev /usr/sbin/blockdev +# Source https://github.com/kubevirt/containerized-data-importer/blob/v1.58.0/cmd/cdi-importer/BUILD.bazel docker: ENTRYPOINT: ["/usr/bin/cdi-importer", "-alsologtostderr"] diff --git a/images/cdi-operator/werf.inc.yaml b/images/cdi-operator/werf.inc.yaml index 3cd4e6447..69233133b 100644 --- a/images/cdi-operator/werf.inc.yaml +++ b/images/cdi-operator/werf.inc.yaml @@ -1,14 +1,24 @@ --- image: {{ $.ImageName }} -fromImage: base-scratch +fromImage: base-alt-p10 import: - image: cdi-artifact - add: /images/kubevirt/{{ $.ImageName }}:latest - excludePaths: - - 'sys' - to: / + add: /images/kubevirt/{{ $.ImageName }}:latest/usr/bin + to: /usr/bin + includePaths: + - cdi-operator + - csv-generator before: setup -# Source https://github.com/kubevirt/containerized-data-importer/blob/main/cmd/cdi-operator/BUILD.bazel +shell: + install: + # Install packages from Sisyphus repository because p10 repository does not have required versions. + - echo "rpm [alt] http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus x86_64 classic" > /etc/apt/sources.list.d/sisyphus.list + - | + apt-get update && apt-get install --yes \ + glibc==6:2.38.0.76.e9f05fa1c6-alt1:sisyphus+347163.100.1.1 + - apt-get clean + - rm --recursive --force /var/lib/apt/lists/ftp.altlinux.org* +# Source https://github.com/kubevirt/containerized-data-importer/blob/v1.58.0/cmd/cdi-operator/BUILD.bazel docker: ENTRYPOINT: ["/usr/bin/cdi-operator"] USER: 1001 diff --git a/images/cdi-uploadproxy/werf.inc.yaml b/images/cdi-uploadproxy/werf.inc.yaml index 82dc1887f..6e7117bcb 100644 --- a/images/cdi-uploadproxy/werf.inc.yaml +++ b/images/cdi-uploadproxy/werf.inc.yaml @@ -1,13 +1,22 @@ --- image: {{ $.ImageName }} -fromImage: base-scratch +fromImage: base-alt-p10 import: - image: cdi-artifact - add: /images/kubevirt/{{ $.ImageName }}:latest - excludePaths: - - 'sys' - to: / + add: /images/kubevirt/{{ $.ImageName }}:latest/usr/bin + includePaths: + - cdi-uploadproxy + to: /usr/bin before: setup +shell: + install: + # Install packages from Sisyphus repository because p10 repository does not have required versions. + - echo "rpm [alt] http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus x86_64 classic" > /etc/apt/sources.list.d/sisyphus.list + - | + apt-get update && apt-get install --yes \ + glibc==6:2.38.0.76.e9f05fa1c6-alt1:sisyphus+347163.100.1.1 + - apt-get clean + - rm --recursive --force /var/lib/apt/lists/ftp.altlinux.org* # Source https://github.com/kubevirt/containerized-data-importer/blob/main/cmd/cdi-uploadproxy/BUILD.bazel docker: ENTRYPOINT: ["/usr/bin/cdi-uploadproxy", "-alsologtostderr"] diff --git a/images/cdi-uploadserver/werf.inc.yaml b/images/cdi-uploadserver/werf.inc.yaml index e99d4895b..6d59d7c25 100644 --- a/images/cdi-uploadserver/werf.inc.yaml +++ b/images/cdi-uploadserver/werf.inc.yaml @@ -1,13 +1,28 @@ --- image: {{ $.ImageName }} -fromImage: base-scratch +fromImage: base-alt-p10 import: - image: cdi-artifact - add: /images/kubevirt/{{ $.ImageName }}:latest - excludePaths: - - 'sys' - to: / + add: /images/kubevirt/{{ $.ImageName }}:latest/usr/bin + includePaths: + - cdi-uploadserver + to: /usr/bin before: setup -# Source https://github.com/kubevirt/containerized-data-importer/blob/main/cmd/cdi-uploadserver/BUILD.bazel +shell: + install: + # Intall main packages. + - | + apt-get update && apt-get install --yes \ + qemu-img==8.2.2-alt0.p10.1:p10+345290.260.6.1 + # Install packages from Sisyphus repository because p10 repository does not have required versions. + - echo "rpm [alt] http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus x86_64 classic" > /etc/apt/sources.list.d/sisyphus.list + - echo "rpm [alt] http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus noarch classic" >> /etc/apt/sources.list.d/sisyphus.list + - | + apt-get update && apt-get install --yes \ + glibc==6:2.38.0.76.e9f05fa1c6-alt1:sisyphus+347163.100.1.1 \ + libnbd==1.19.11-alt1:sisyphus+347436.100.3.1 + - apt-get clean + - rm --recursive --force /var/lib/apt/lists/ftp.altlinux.org* +# Source https://github.com/kubevirt/containerized-data-importer/blob/v1.58.0/cmd/cdi-uploadserver/BUILD.bazel docker: ENTRYPOINT: ["/usr/bin/cdi-uploadserver", "-alsologtostderr"] diff --git a/images/libguestfs/werf.inc.yaml b/images/libguestfs/werf.inc.yaml index 760b53540..a0df5381f 100644 --- a/images/libguestfs/werf.inc.yaml +++ b/images/libguestfs/werf.inc.yaml @@ -1,10 +1,41 @@ --- image: {{ $.ImageName }} -fromImage: base-scratch +fromImage: base-alt-p10 import: +- image: virt-artifact + add: /images/kubevirt/{{ $.ImageName }}:latest/usr/local/lib/guestfs/appliance + includePaths: + - '*' + to: /usr/local/lib/guestfs/appliance + before: setup - image: virt-artifact add: /images/kubevirt/{{ $.ImageName }}:latest - excludePaths: - - 'sys' + includePaths: + - .version + - entrypoint.sh to: / before: setup +shell: + install: + # Intall main packages. + - | + apt-get update && apt-get install --yes \ + acl==2.3.1-alt1:sisyphus+279621.200.1.1 \ + libguestfs==1.48.4-alt2:p10+307399.200.6.1 \ + guestfs-tools==1.48.2-alt1:p10+307399.300.6.1 \ + libvirt-daemon-driver-qemu==9.7.0-alt2.p10.2:p10+343223.200.3.1 \ + qemu-kvm-core==8.2.2-alt0.p10.1:p10+345290.260.6.1 + # Install packages from Sisyphus repository because p10 repository does not have required versions. + - echo "rpm [alt] http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus x86_64 classic" >> /etc/apt/sources.list.d/sisyphus.list + - echo "rpm [alt] http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus noarch classic" >> /etc/apt/sources.list.d/sisyphus.list + - | + apt-get update && apt-get install --yes \ + glibc==6:2.38.0.76.e9f05fa1c6-alt1:sisyphus+347163.100.1.1 \ + seabios==1.16.3-alt3:sisyphus+339925.100.2.1 \ + edk2-ovmf==20231115-alt1:sisyphus+339582.600.5.1 + - apt-get clean + - rm --recursive --force /var/lib/apt/lists/ftp.altlinux.org* +# Source https://github.com/kubevirt/kubevirt/blob/v1.0.0/cmd/libguestfs/BUILD.bazel +docker: + ENTRYPOINT: ["/entrypoint.sh"] + USER: 1001 diff --git a/images/virt-exportproxy/werf.inc.yaml b/images/virt-exportproxy/werf.inc.yaml index 6026a127b..5b9146554 100644 --- a/images/virt-exportproxy/werf.inc.yaml +++ b/images/virt-exportproxy/werf.inc.yaml @@ -1,14 +1,29 @@ --- image: {{ $.ImageName }} -fromImage: base-scratch +fromImage: base-alt-p10 import: - image: virt-artifact - add: /images/kubevirt/{{ $.ImageName }}:latest - excludePaths: - - 'sys' + add: /images/kubevirt/{{ $.ImageName }}:latest/usr/bin + includePaths: + - virt-exportproxy + to: /usr/bin + before: setup +- image: virt-artifact + add: /images/kubevirt/{{ $.ImageName }}:latest/ + includePaths: + - .version to: / before: setup -# Source https://github.com/kubevirt/kubevirt/blob/main/cmd/virt-exportproxy/BUILD.bazel +shell: + install: + # Install packages from Sisyphus repository because p10 repository does not have required versions. + - echo "rpm [alt] http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus x86_64 classic" > /etc/apt/sources.list.d/sisyphus.list + - | + apt-get update && apt-get install --yes \ + glibc==6:2.38.0.76.e9f05fa1c6-alt1:sisyphus+347163.100.1.1 + - apt-get clean + - rm --recursive --force /var/lib/apt/lists/ftp.altlinux.org* +# Source https://github.com/kubevirt/kubevirt/blob/v1.0.0/cmd/virt-exportproxy/BUILD.bazel docker: ENTRYPOINT: ["/usr/bin/virt-exportproxy"] USER: 1001 diff --git a/images/virt-exportserver/werf.inc.yaml b/images/virt-exportserver/werf.inc.yaml index 96af74ff6..0bb3f807b 100644 --- a/images/virt-exportserver/werf.inc.yaml +++ b/images/virt-exportserver/werf.inc.yaml @@ -1,14 +1,29 @@ --- image: {{ $.ImageName }} -fromImage: base-scratch +fromImage: base-alt-p10 import: - image: virt-artifact - add: /images/kubevirt/{{ $.ImageName }}:latest - excludePaths: - - 'sys' + add: /images/kubevirt/{{ $.ImageName }}:latest/usr/bin + includePaths: + - virt-exportserver + to: /usr/bin + before: setup +- image: virt-artifact + add: /images/kubevirt/{{ $.ImageName }}:latest/ + includePaths: + - .version to: / before: setup -# Source https://github.com/kubevirt/kubevirt/blob/main/cmd/virt-exportserver/BUILD.bazel +shell: + install: + # Install packages from Sisyphus repository because p10 repository does not have required versions. + - echo "rpm [alt] http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus x86_64 classic" > /etc/apt/sources.list.d/sisyphus.list + - | + apt-get update && apt-get install --yes \ + glibc==6:2.38.0.76.e9f05fa1c6-alt1:sisyphus+347163.100.1.1 + - apt-get clean + - rm --recursive --force /var/lib/apt/lists/ftp.altlinux.org* +# Source https://github.com/kubevirt/kubevirt/blob/v1.0.0/cmd/virt-exportserver/BUILD.bazel docker: ENTRYPOINT: ["/usr/bin/virt-exportserver"] USER: 1001 diff --git a/images/virt-handler/werf.inc.yaml b/images/virt-handler/werf.inc.yaml index bd2ef733f..d9ec7e278 100644 --- a/images/virt-handler/werf.inc.yaml +++ b/images/virt-handler/werf.inc.yaml @@ -1,13 +1,48 @@ --- image: {{ $.ImageName }} -fromImage: base-scratch +fromImage: base-alt-p10 +shell: + install: + # Install main packages. + - | + apt-get update && apt-get install --yes \ + acl==2.3.1-alt1:sisyphus+279621.200.1.1 \ + qemu-img==8.2.2-alt0.p10.1:p10+345290.260.6.1 \ + findutils==4.8.0.0.10.1157-alt1:sisyphus+278099.1200.1.1 \ + nftables==1:1.0.9-alt2:p10+343579.100.2.1 \ + xorriso==1.5.4-alt1:sisyphus+279285.100.1.3 + # Install packages from Sisyphus repository because p10 repository does not have required versions. + - echo "rpm [alt] http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus x86_64 classic" > /etc/apt/sources.list.d/sisyphus.list + - | + apt-get update && apt-get install --yes \ + glibc==6:2.38.0.76.e9f05fa1c6-alt1:sisyphus+347163.100.1.1 + - apt-get clean + - rm --recursive --force /var/lib/apt/lists/ftp.altlinux.org* + setup: + # Create qemu group and user. + - groupadd --gid 107 qemu && useradd qemu --uid 107 --gid 107 --shell /bin/bash --create-home import: +- image: virt-artifact + add: /images/kubevirt/{{ $.ImageName }}:latest/usr/bin + to: /usr/bin + after: install + includePaths: + - virt-chroot + - virt-handler + - container-disk - image: virt-artifact add: /images/kubevirt/{{ $.ImageName }}:latest - excludePaths: - - 'sys' to: / - before: setup -# Source https://github.com/kubevirt/kubevirt/blob/main/cmd/virt-handler/BUILD.bazel + after: install + includePaths: + - .version + - virt_launcher.cil +- image: virt-artifact + add: /images/kubevirt/{{ $.ImageName }}:latest/etc + to: /etc + after: install + includePaths: + - nsswitch.conf +# Source https://github.com/kubevirt/kubevirt/blob/v1.0.0/cmd/virt-handler/BUILD.bazel docker: ENTRYPOINT: ["/usr/bin/virt-handler"] diff --git a/images/virt-launcher/libvirt.conf b/images/virt-launcher/libvirt.conf new file mode 100644 index 000000000..9f1f01749 --- /dev/null +++ b/images/virt-launcher/libvirt.conf @@ -0,0 +1,19 @@ +# +# This can be used to setup URI aliases for frequently +# used connection URIs. Aliases may contain only the +# characters a-Z, 0-9, _, -. +# +# Following the '=' may be any valid libvirt connection +# URI, including arbitrary parameters + +#uri_aliases = [ +# "hail=qemu+ssh://root@hail.cloud.example.com/system", +# "sleet=qemu+ssh://root@sleet.cloud.example.com/system", +#] + +# +# These can be used in cases when no URI is supplied by the application +# (@uri_default also prevents probing of the hypervisor driver). +# +uri_default = "qemu:///system" +remote_mode = "direct" diff --git a/images/virt-launcher/werf.inc.yaml b/images/virt-launcher/werf.inc.yaml index 723029cb1..29dc4b168 100644 --- a/images/virt-launcher/werf.inc.yaml +++ b/images/virt-launcher/werf.inc.yaml @@ -1,13 +1,57 @@ --- image: {{ $.ImageName }} -fromImage: base-scratch +fromImage: base-alt-p10 import: +- image: {{ $.ImageName }}-lib-builder + add: /usr/local/lib/ + to: /lib64 + after: install + includePaths: + - libcrypt.so.2.0.0 + - libpcre.so.1.2.13 +- image: {{ $.ImageName }}-lib-builder + add: /usr/local/lib64/ + to: /lib64 + after: install + includePaths: + - libcrypto.so.3 + - libssl.so.3 +- image: {{ $.ImageName }}-lib-builder + add: /lib64 + to: /lib64 + after: install + includePaths: + - libpcre2-8.so.0.11.2 - image: virt-artifact - add: /images/kubevirt/{{ $.ImageName }}:latest - excludePaths: - - 'sys' + add: /images/kubevirt/{{ $.ImageName }}:latest/ to: / + after: install + includePaths: + - .version +- image: virt-artifact + add: /images/kubevirt/{{ $.ImageName }}:latest/etc/libvirt + to: /etc/libvirt + after: install + includePaths: + - qemu.conf + - virtqemud.conf +- image: virt-artifact + add: /images/kubevirt/{{ $.ImageName }}:latest/etc + to: /etc + after: install + includePaths: + - nsswitch.conf +- image: virt-artifact + add: /images/kubevirt/{{ $.ImageName }}:latest/usr/bin + to: /usr/bin before: setup + includePaths: + - container-disk + - node-labeller.sh + - virt-freezer + - virt-launcher + - virt-launcher-monitor + - virt-probe git: - add: /images/{{ $.ImageName }} to: / @@ -16,12 +60,85 @@ git: - '**/*' includePaths: - scripts + - add: /images/{{ $.ImageName }} + to: /etc/libvirt + stageDependencies: + setup: + - '**/*' + includePaths: + - libvirt.conf shell: + install: + - | + apt-get update && apt-get install --yes \ + acl==2.3.1-alt1:sisyphus+279621.200.1.1 \ + libvirt-client==9.7.0-alt2.p10.2:p10+343223.200.3.1 \ + libvirt-daemon-driver-qemu==9.7.0-alt2.p10.2:p10+343223.200.3.1 \ + qemu-kvm-core==8.2.2-alt0.p10.1:p10+345290.260.6.1 \ + swtpm-tools==0.8.0-alt1:p10+322023.200.2.1 \ + ethtool==1:6.5-alt4:p10+337060.100.1.1 \ + findutils==4.8.0.0.10.1157-alt1:sisyphus+278099.1200.1.1 \ + nftables==1:1.0.9-alt2:p10+343579.100.2.1 \ + xorriso==1.5.4-alt1:sisyphus+279285.100.1.3 + # Install packages from Sisyphus repository because p10 repository does not have required versions. + - echo "rpm [alt] http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus x86_64 classic" >> /etc/apt/sources.list.d/sisyphus.list + - echo "rpm [alt] http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus noarch classic" >> /etc/apt/sources.list.d/sisyphus.list + - | + apt-get update && apt-get install --yes \ + glibc==6:2.38.0.76.e9f05fa1c6-alt1:sisyphus+347163.100.1.1 \ + passt==20240405.g954589b-alt1:sisyphus+345215.100.1.1 \ + seabios==1.16.3-alt3:sisyphus+339925.100.2.1 \ + edk2-ovmf==20231115-alt1:sisyphus+339582.600.5.1 \ + libffi8==1:3.4.6-alt1:sisyphus+341904.100.1.1 + - apt-get clean + - rm --recursive --force /var/lib/apt/lists/ftp.altlinux.org* setup: # Replace virt-launcher-monitor with script. - mv /usr/bin/virt-launcher-monitor /usr/bin/virt-launcher-monitor-orig - cp /scripts/virt-launcher-monitor-wrapper.sh /usr/bin/virt-launcher-monitor - chmod +x /usr/bin/virt-launcher-monitor -# Source https://github.com/kubevirt/containerized-data-importer/blob/main/cmd/cdi-apiserver/BUILD.bazel + # Create qemu group and user. + - groupadd --gid 107 qemu && useradd qemu --uid 107 --gid 107 --shell /bin/bash --create-home + # Create links to required for virt-launcher libs. + - ln -s /lib64/libcrypt.so.2.0.0 /lib64/libcrypt.so.2 + - ln -s /lib64/libpcre.so.1.2.13 /lib64/libpcre.so.1 + - ln -s /lib64/libpcre2-8.so.0.11.2 /lib64/libpcre2-8.so.0 +# Source https://github.com/kubevirt/kubevirt/blob/v1.0.0/cmd/virt-launcher/BUILD.bazel docker: ENTRYPOINT: ["/usr/bin/virt-launcher"] +--- +image: {{ $.ImageName }}-lib-builder +fromImage: base-alt-p10 +shell: + beforeInstall: + # Install build packages. + - | + apt-get update && apt-get install --yes \ + autoconf==2:2.69-alt5:sisyphus+263686.100.1.1 \ + automake==1:1.16-alt1:sisyphus+226889.100.2.1 \ + libtool==3:2.4.2-alt7 \ + pkg-config==0.29.2-alt3:sisyphus+278099.3600.1.1 \ + gcc==10-alt1:sisyphus+263054.200.3.1 \ + make==2:4.3.0-alt1:sisyphus+278158.1100.1.1 \ + git==2.33.8-alt1:p10+319522.100.1.1 \ + perl-IPC-Cmd==1.04-alt1:sisyphus+234736.100.1.1 \ + wget==1.21.3-alt1:p10+305270.100.3.1 \ + gcc-c++==10-alt1:sisyphus+263054.200.3.1 + install: + # Install libcrypt.so.2. + - git clone --branch v4.4.23 https://github.com/besser82/libxcrypt.git /tmp/libxcrypt + - cd /tmp/libxcrypt + - ./autogen.sh + - ./configure --disable-obsolete-api + - make && make install + # Install libcrypto.so.3 and libssl.so.3. + - git clone https://github.com/openssl/openssl.git /tmp/openssl + - cd /tmp/openssl + - ./Configure + - make && make install + # Install libpcre.so.1. + - wget -O /tmp/pcre.tar.gz https://sourceforge.net/projects/pcre/files/pcre/8.45/pcre-8.45.tar.gz/download + - tar -xf /tmp/pcre.tar.gz -C /tmp + - cd /tmp/pcre-8.45 + - ./configure --enable-utf --enable-unicode-properties + - make && make install From b39cbbcf87cb0db36d90f81071d9ca8184e08f24 Mon Sep 17 00:00:00 2001 From: Roman Sysoev <36233932+hardcoretime@users.noreply.github.com> Date: Thu, 6 Jun 2024 15:31:19 +0300 Subject: [PATCH 2/2] chore(core): configure libvirt for alt-linux Libvirt is compiled here without probing modular daemons. Co-authored-by: Ivan Mikheykin Signed-off-by: Roman Sysoev <36233932+hardcoretime@users.noreply.github.com> --- images/virt-launcher/libvirt.conf | 1 + 1 file changed, 1 insertion(+) diff --git a/images/virt-launcher/libvirt.conf b/images/virt-launcher/libvirt.conf index 9f1f01749..7de9a4707 100644 --- a/images/virt-launcher/libvirt.conf +++ b/images/virt-launcher/libvirt.conf @@ -15,5 +15,6 @@ # These can be used in cases when no URI is supplied by the application # (@uri_default also prevents probing of the hypervisor driver). # +# Explicitly set uri_default for AltLinux. Libvirt is compiled here without probing modular daemons. uri_default = "qemu:///system" remote_mode = "direct"