mrrl-containers

MRRL version of container scripts
git clone https://ccx.te2000.cz/git/mrrl-containers
Log | Files | Refs

commit 020b3703edbd2f0ff8be0e2d1aed303f77a8dfe5
parent 3273fd705ad38f1cc4c0abd674bd19da330e665a
Author: Jan Pobříslo <ccx@te2000.cz>
Date:   Thu, 11 Aug 2022 02:10:43 +0200

Initial Debian & Puppet support.

Diffstat:
Mzsh-functions/confz_containers_init | 77+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mzsh-functions/confz_site_containers_init | 17+++++++++++++++++
2 files changed, 94 insertions(+), 0 deletions(-)

diff --git a/zsh-functions/confz_containers_init b/zsh-functions/confz_containers_init @@ -1257,3 +1257,80 @@ confz_container_nix_packages_installed_check() { (( $#missing == 0 )) } #typeset -f -t confz_container_nix_packages_installed_check + +# --- Debian --- + +confz_container_debian_image_check() { + checkvars containers_dir image_name arch suite + defvar mirror http://ftp.cvut.cz/debian/ + + unify root $vars[containers_dir]/systems/$vars[image_name] + + require container_sysroot_user %uid %gid :containers_dir :image_name + require container_generic_layout :uid :gid :root + #require container_debian_base_files :uid :gid :root + require container_debootstrap :arch :mirror :repository \ + :root user=container-$vars[image_name] +} + +confz_container_debootstrap_check() { + checkvars user root arch mirror suite + defvar variant minbase + defvar debootstrap_executable debootstrap + do_command=( + s6-setuidgid $vars[user] + $vars[debootstrap_executable] + --variant=$vars[variant] + $vars[suite] # SUITE + $vars[root] # TARGET + $vars[mirror] # MIRROR + ) + [[ -f $vars[root]/usr/bin/apt-get && -f $vars[root]/usr/bin/sh ]] +} + +confz_container_debian_packages_installed_check() { + checkvars containers_dir image_name packages svscan_dir + + require container_service_sysroot :containers_dir :svscan_dir \ + :image_name + + local root=$vars[containers_dir]/systems/$vars[image_name] + local -a missing installed + local pkg + + installed=( ${(f)"$( + awk '/^Package: /{p=$2} /^Status:.* installed/{print p}' $vars[root]/var/lib/dpkg/status + )"} ) + + for pkg in $=vars[packages]; do + (( $installed[(I)${pkg}] )) || missing+=( $pkg ) + done + + do_command=( + $commands[cd] $vars[svscan_dir]/container.$vars[image_name].sysroot + container_sysroot_run + /usr/bin/apt-get install --trivial-only -- $missing + ) + + fail_reason="Following packages are not installed: $missing" + (( $#missing == 0 )) +} + +confz_container_puppet_apt_repo_check() { + checkvars user root arch suite + defvar puppet_version 7 + + [[ -f $vars[root]/etc/apt/trusted.gpg.d/puppet$vars[puppet_version]-keyring.gpg \ + && -f $vars[root]/etc/apt/sources.list.d/puppet$vars[puppet_version].list ]] +} +confz_container_puppet_apt_repo_do() { + local deb_file=puppet7-release-$vars[suite].deb + + s6-setuidgid $vars[user] \ + wget --unlink -O $vars[root]/root/$deb_file https://apt.puppetlabs.com/$deb_file \ + || return $? + $commands[cd] $vars[svscan_dir]/container.$vars[image_name].sysroot \ + container_sysroot_run \ + /usr/bin/dpkg -i /root/$deb_file +} + diff --git a/zsh-functions/confz_site_containers_init b/zsh-functions/confz_site_containers_init @@ -175,6 +175,20 @@ confz_site_container_nix_check() { require container_nix_bin_linked :containers_dir :image_name } +confz_site_container_debian_puppetserver_check() { + checkvars containers_dir svscan_dir image_name packages + defvar arch amd64 + defvar suite bullseye # Debian 11 + defvar packages puppetserver + + require container_debian_image \ + :containers_dir :repository :image_name :svscan_dir :system \?root + require container_puppet_apt_repo \ + :user :root :arch :suite + require container_debian_packages_installed \ + :containers_dir :svscan_dir :image_name :packages +} + confz_site_container_images_check() { checkvars containers_dir svscan_dir @@ -332,6 +346,9 @@ confz_site_container_images_check() { # require site_container_nix :containers_dir :svscan_dir \ # image_name=nix-signal packages="$nix_core signal-desktop" + + require site_container_debian_puppetserver :containers_dir :svscan_dir \ + image_name=rcm-puppetserver } confz_site_containers_check() {