forked from pool/ignition
b4479a8bf8
* Features * Support offline Tang provisioning via pre-shared advertisement (3.4.0) * Allow enabling discard passthrough on LUKS devices (3.4.0) * Allow specifying arbitrary LUKS open options (3.4.0) * Ship aarch64 macOS ignition-validate binary in GitHub release artifacts * Changes * Mark the 3.4.0 config spec as stable * No longer accept configs with version 3.4.0-experimental * Create new 3.5.0-experimental config spec from 3.4.0 * Fail if files/links/dirs conflict with systemd units or dropins * Warn if template for enabled systemd instance unit has no Install section * Warn if filesystem overwrites partitioned disk * Warn if wipeTable overwrites a filesystem that would otherwise be reused * Warn if user/group specified for hard link * Install ignition-apply in /usr/libexec * Allow distros to add Ignition command-line arguments from a unit drop-in * Convert NEWS to Markdown and move to docs site * Require Go 1.18+ * Bug fixes * Don't overwrite LUKS1 volume when storage.luks.wipeVolume is false * Request network when custom Clevis config has needsNetwork set * Fix creating LUKS volume with custom Clevis config that uses TPM2 * Avoid logging spurious error when a LUKS volume wasn't previously formatted * Fix version string in ignition-validate release container * Fix reproducibility of systemd preset file in ignition-apply output * Document that user/group fields aren't applied to hard links * Clarify spec docs for files/directories/links group fields - Modified 0002-allow-multiple-mounts-of-same-device.patch to add new Ignition spec version - Add 0001-ignore-missing-qemu-blockdev.patch [bsc#1207679] to support booting without configuration device on s390x. OBS-URL: https://build.opensuse.org/package/show/devel:kubic:ignition/ignition?expand=0&rev=100
188 lines
6.9 KiB
RPMSpec
188 lines
6.9 KiB
RPMSpec
#
|
|
# spec file for package ignition
|
|
#
|
|
# Copyright (c) 2023 SUSE LLC
|
|
#
|
|
# All modifications and additions to the file contributed by third parties
|
|
# remain the property of their copyright owners, unless otherwise agreed
|
|
# upon. The license for this file, and modifications and additions to the
|
|
# file, is the same license as for the pristine package itself (unless the
|
|
# license for the pristine package is not an Open Source License, in which
|
|
# case the license is the MIT License). An "Open Source License" is a
|
|
# license that conforms to the Open Source Definition (Version 1.9)
|
|
# published by the Open Source Initiative.
|
|
|
|
# Please submit bugfixes or comments via https://bugs.opensuse.org/
|
|
#
|
|
|
|
|
|
Name: ignition
|
|
Version: 2.15.0
|
|
Release: 0
|
|
Summary: First boot installer and configuration tool
|
|
License: Apache-2.0
|
|
Group: System/Management
|
|
URL: https://github.com/coreos/ignition
|
|
Source: %{name}-%{version}.tar.xz
|
|
Source1: ignition-mount-initrd-fstab.service
|
|
Source2: ignition-umount-initrd-fstab.service
|
|
Source3: ignition-suse-generator
|
|
Source4: module-setup.sh
|
|
Source5: 02_ignition_firstboot
|
|
Source6: ignition-firstboot-complete.service
|
|
Source7: README.SUSE
|
|
Source8: ignition-setup-user.sh
|
|
Source9: ignition-setup-user.service
|
|
Source10: ignition-enable-network.service
|
|
Source11: ignition-enable-network.sh
|
|
Source12: ignition-kargs-helper
|
|
Source13: ignition-remove-reconfig_system.service
|
|
Source14: ignition-touch-selinux-autorelabel.conf
|
|
Source15: ignition-rmcfg-suse.conf
|
|
Source20: ignition-userconfig-timeout.conf
|
|
Source21: ignition-userconfig-timeout-arm.conf
|
|
Patch1: 0001-ignore-missing-qemu-blockdev.patch
|
|
Patch2: 0002-allow-multiple-mounts-of-same-device.patch
|
|
BuildRequires: dracut
|
|
BuildRequires: libblkid-devel
|
|
BuildRequires: systemd-rpm-macros
|
|
BuildRequires: update-bootloader-rpm-macros
|
|
BuildRequires: golang(API) >= 1.15
|
|
Requires: %{name}-dracut-grub2
|
|
Requires: dracut
|
|
Recommends: %{_sbindir}/groupadd
|
|
Recommends: %{_sbindir}/sgdisk
|
|
Recommends: %{_sbindir}/useradd
|
|
Recommends: %{_sbindir}/usermod
|
|
Recommends: /sbin/mkfs.btrfs
|
|
Recommends: /sbin/mkfs.ext4
|
|
Recommends: /sbin/mkfs.vfat
|
|
Recommends: /sbin/mkfs.xfs
|
|
Recommends: /sbin/mkswap
|
|
Recommends: /sbin/udevadm
|
|
Suggests: /sbin/mdadm
|
|
Provides: ignition-dracut = 0.0+git20200722.98ed51d
|
|
Obsoletes: ignition-dracut < 0.0+git20200722.98ed51d
|
|
%{update_bootloader_requires}
|
|
|
|
%description
|
|
Ignition is an utility to manipulate disks and configuration files
|
|
during the initramfs. This includes partitioning disks, formatting
|
|
partitions, writing files (regular files, systemd units, etc.), and
|
|
creating users.
|
|
On first boot, Ignition reads its configuration from a source of truth
|
|
(remote URL, network metadata service, hypervisor bridge, etc.) and
|
|
applies the configuration.
|
|
|
|
%package dracut-grub2
|
|
Summary: Files to trigger ignition firstboot with grub2
|
|
Group: System/Management
|
|
Requires: grub2
|
|
Requires(post): grub2
|
|
Requires(post): sed
|
|
|
|
%description dracut-grub2
|
|
GRUB2 configuration which sets ignition.firstboot based on
|
|
/boot/writable/firstboot_happened and ignition.firstboot and a matching service
|
|
which creates firstboot_happened after the first boot.
|
|
|
|
%prep
|
|
%autosetup -p1
|
|
|
|
mkdir -p dracut/30ignition-microos grub systemd_suse/ignition-delete-config.service.d
|
|
chmod +x %{SOURCE3} %{SOURCE4} %{SOURCE8} %{SOURCE12}
|
|
cp %{SOURCE1} %{SOURCE2} %{SOURCE3} %{SOURCE4} %{SOURCE8} %{SOURCE9} %{SOURCE10} %{SOURCE11} %{SOURCE13} %{SOURCE14} dracut/30ignition-microos/
|
|
%ifarch aarch64 %{arm}
|
|
cp %{SOURCE21} dracut/30ignition-microos/ignition-userconfig-timeout.conf
|
|
%else
|
|
cp %{SOURCE20} dracut/30ignition-microos/ignition-userconfig-timeout.conf
|
|
%endif
|
|
cp %{SOURCE5} grub/
|
|
cp %{SOURCE6} systemd_suse/
|
|
cp %{SOURCE15} systemd_suse/ignition-delete-config.service.d/
|
|
cp %{SOURCE7} .
|
|
cp %{SOURCE12} dracut/30ignition/ignition-kargs-helper.sh
|
|
|
|
%build
|
|
sed -i -e 's|go build -ldflags|go build -buildmode=pie -ldflags|g' build
|
|
env VERSION=%{version} GLDFLAGS='-X github.com/coreos/ignition/v2/internal/distro.selinuxRelabel=false -X github.com/coreos/ignition/v2/internal/distro.writeAuthorizedKeysFragment=false ' bash -x ./build
|
|
|
|
%install
|
|
make -o all install DESTDIR=%{buildroot}
|
|
|
|
install -d %{buildroot}%{_sysconfdir}/grub.d
|
|
install -d %{buildroot}%{_unitdir}/ignition-delete-config.service.d
|
|
install -p -m 0755 grub/* %{buildroot}%{_sysconfdir}/grub.d/
|
|
install -p -m 0644 systemd_suse/*.service %{buildroot}%{_prefix}/lib/systemd/system/
|
|
install -p -m 0644 systemd_suse/ignition-delete-config.service.d/* %{buildroot}%{_prefix}/lib/systemd/system/ignition-delete-config.service.d
|
|
install -d %{buildroot}%{_sbindir}/
|
|
mv %{buildroot}/usr/libexec/ignition-rmcfg %{buildroot}/%{_sbindir}/
|
|
|
|
%pre
|
|
%service_add_pre ignition-delete-config.service
|
|
|
|
%post
|
|
%{?regenerate_initrd_post}
|
|
# Trigger creating the firstboot_happened file (in posttrans) on upgrades.
|
|
# This is needed for systems where the first boot happened before
|
|
# firstboot_happened got introduced and can be removed in the future.
|
|
if [ "$1" -ne 1 ]; then
|
|
mkdir -p %{_rundir}/ignition-dracut/
|
|
touch %{_rundir}/ignition-dracut/isupgrade
|
|
fi
|
|
%service_add_post ignition-delete-config.service
|
|
|
|
%preun
|
|
%service_del_preun ignition-delete-config.service
|
|
|
|
%postun
|
|
%service_del_postun_without_restart ignition-delete-config.service
|
|
|
|
%posttrans
|
|
%{?regenerate_initrd_posttrans}
|
|
if [ -f %{_rundir}/ignition-dracut/isupgrade ]; then
|
|
# Done in posttrans so that read-only-root-fs could create the subvol
|
|
mkdir -p /boot/writable
|
|
[ -e /boot/writable/firstboot_happened ] || touch /boot/writable/firstboot_happened
|
|
fi
|
|
|
|
%pre dracut-grub2
|
|
%service_add_pre ignition-firstboot-complete.service
|
|
|
|
%post dracut-grub2
|
|
if [ "$1" = 1 ] ; then
|
|
sed -i 's/^\(GRUB_CMDLINE_LINUX_DEFAULT="\)\(.*\)/\1\\$ignition_firstboot \2/' %{_sysconfdir}/default/grub
|
|
%{?update_bootloader_refresh_post}
|
|
fi
|
|
%service_add_post ignition-firstboot-complete.service
|
|
|
|
%preun dracut-grub2
|
|
%service_del_preun ignition-firstboot-complete.service
|
|
|
|
%postun dracut-grub2
|
|
if [ "$1" = 0 ] ; then
|
|
sed -i -E '/^GRUB_CMDLINE_LINUX_DEFAULT="/s/(\\\$)?ignition[._][^[:space:]"]+ ?//g' %{_sysconfdir}/default/grub
|
|
fi
|
|
%service_del_postun_without_restart ignition-firstboot-complete.service
|
|
|
|
%files
|
|
%license LICENSE
|
|
%doc README.md README.SUSE docs/*.md
|
|
# Paths are hardcoded in the Makefile
|
|
/usr/lib/dracut/modules.d/30ignition
|
|
/usr/lib/dracut/modules.d/30ignition-microos
|
|
/usr/bin/ignition-validate
|
|
/usr/libexec/ignition-apply
|
|
/usr/lib/systemd/system/ignition-delete-config.service
|
|
%{_sbindir}/ignition-rmcfg
|
|
%dir %{_unitdir}/ignition-delete-config.service.d
|
|
%{_unitdir}/ignition-delete-config.service.d/ignition-rmcfg-suse.conf
|
|
|
|
%files dracut-grub2
|
|
%license LICENSE
|
|
%doc README.SUSE
|
|
%{_sysconfdir}/grub.d/02_ignition_firstboot
|
|
%{_prefix}/lib/systemd/system/ignition-firstboot-complete.service
|
|
|
|
%changelog
|