SHA256
1
0
forked from pool/warewulf4
warewulf4/warewulf4.spec
Christian Goll 9061c1b569 Accepting request 970166 from home:mslacken:pr
- update to v4.3.0rc2 with following major changes:
  * Provision interface is not tied to 'eth0' any more. The provision interface
    must be named 'default' now. The file `nodes.yaml' must be changed accordingly.
  * Creating of '/etc/exports' can now be disabled, so that wwctl configure -a
    wont overwrite a existing '/etc/exports'.
  * All configurations files for the host (/etc/exports, /etc/dhcpd.conf,
    /etc/hosts) are now populated from the
    (OVERLAYDIR/host/etc/{exports|dhcpd|hosts}.ww . Also other configuration
    files like prometheus.yml.ww or slurm.conf.ww which depend on the cluster
    nodes can be placed. Also the new templated functions {{ abort }}, 
    {{ IncludeBlock }} abd {{ no_backup }} are allowed now.
  * nodes and profiles can now have multiple system and runtime overlays, as a
    comma separated list.
  * The overlays of the profile and the nodes are combined.
  * Simple ipv6 support is now enabled. In warewulf.conf the option
    ipaddr6/Ipv6net must be set to enable ipv6. If enabled on of these options
    is set a node will get a derived ipv6 in the scheme ipv6net:ipaddr4. This
    address can also be overwritten for every node
  * Multiple files can now created from a single template.ww file with the {{ file FILENAME }}
    command in the template. The command is expanded to the magic template command
    {{ /* file FILENAME */}} which is picked up by wwctl and everything which comes after this
    magic comment will be written to the file FILENAME. This mechanism is leveraged in the
    configuration files for the network, see ifcfg.xml.ww and ifcgf.ww.
  * Networks can now have arbitrary keys value pairs in the profiles and on the node, so that
    things like bridges and mtu sizes can be set
  * The yaml format for nodes has now sub-keys for ipmi and kernel, old nodes.conf files have to
    to be changed accordingly
  * uids and gids of a container now get synced at import time, so that at least users with the
    same name have the same uid. This is not necessarily needed for warewulf, but services like
    munge.

OBS-URL: https://build.opensuse.org/request/show/970166
OBS-URL: https://build.opensuse.org/package/show/network:cluster/warewulf4?expand=0&rev=6
2022-04-14 13:46:48 +00:00

211 lines
7.2 KiB
RPMSpec

#
# spec file for package warewulf4
#
# Copyright (c) 2022 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/
#
ExclusiveArch: x86_64 aarch64
Name: warewulf4
Version: 4.3.0rc2
Release: 0
Summary: A suite of tools for clustering
License: BSD-3-Clause
Group: Productivity/Clustering/Computing
URL: https://warewulf.org
Source0: https://github.com/hpcng/warewulf/archive/v%{version}.tar.gz#/warewulf4-v%{version}.tar.gz
Source1: vendor.tar.gz
Source3: warewulf4-rpmlintrc
#Patch1: overlay-host.patch
# no firewalld in sle12
%if 0%{?sle_version} >= 150000 || 0%{?suse_version} > 1500
BuildRequires: firewalld
%endif
BuildRequires: dracut
BuildRequires: go >= 1.15
BuildRequires: golang-packaging
BuildRequires: libgpgme-devel
BuildRequires: make
BuildRequires: munge
BuildRequires: sysuser-tools
BuildRequires: tftp
BuildRoot: %{_tmppath}/%{name}-%{version}-build
Requires: %{name}-ipxe
Requires: %{name}-overlay
Requires: dhcp-server
Requires: ipmitool
Requires: nfs-kernel-server
%{go_nostrip}
%description
Warewulf v4 combines ultra scalability, flexibility, and simplicity with being
light weight, non-intrusive, and a great tool for scientists and seasoned
system administrators alike. Warewulf empowers you to scalably and easily
manage thousands of compute resources.
%package overlay
# Smells like a circular dependcy, but needed in this case as the
# files belong to the warewulf user
Requires(pre): %{name}
Summary: Default overlay for warewulf
Group: Productivity/Clustering/Computing
%description overlay
Includes the default overlays so that they can be updated seprately.
%package ipxe
Requires: tftp
Summary: Binaries of iPXE for ww4 installation
BuildArch: noarch
%description ipxe
For the boot of the nodes iPXE binaries are needed. As these package includes these files for
x86, i386 and ARM.
%package slurm
Summary: Configuration template for slurm
Requires: %{name} = %{version}
Requires: slurm
%description slurm
This package install the necessary configuration files in order to run a slurm
cluster on the configured warewulf nodes.
%prep
%setup -q -n warewulf-%{version}
# extract the vendor stuff
tar xzf %{S:1}
%autopatch -p1
%build
%global tftpdir /srv/tftpboot
make %{?_smp_mflags} genconfig \
PREFIX=%{_prefix} \
BINDIR=%{_bindir} \
SYSCONFDIR=%{_sysconfdir} \
DATADIR=%{_datadir} \
LOCALSTATEDIR=%{_sharedstatedir} \
SHAREDSTATEDIR=%{_sharedstatedir} \
MANDIR=%{_mandir} \
INFODIR=%{_infodir} \
DOCDIR=%{_docdir} \
SRVDIR=%{_sharedstatedir} \
TFTPDIR=%{tftpdir} \
SYSTEMDDIR=%{_unitdir} \
BASHCOMPDIR=%{_datadir}/bash-completion/completions/ \
FIREWALLDDIR=/usr/lib/firewalld/services \
WWCLIENTDIR=/warewulf
%install
# we have a broken symlink for wwclient
export NO_BRP_STALE_LINK_ERROR=yes
%{makeinstall}
# cleanup
mkdir -p %{buildroot}%{_sbindir}/
ln -s %{_sbindir}/service %{buildroot}%{_sbindir}/rcwarewulfd
mkdir -p %{buildroot}%{_datadir}/bash-completion/completions
mv -v %{buildroot}%{_sysconfdir}/bash_completion.d/warewulf %{buildroot}%{_datadir}/bash-completion/completions/wwctl
#cp %{S:2} %{buildroot}%{_sysconfdir}/warewulf/warewulf.conf
#rm -rf %{buildroot}%{_datadir}/warewulf/ipxe
rm -f %{buildroot}/usr/share/doc/packages/warewulf/LICENSE.md
# create systemuser
echo "u warewulf -" > system-user-%{name}.conf
echo "g warewulf -" >> system-user-%{name}.conf
%sysusers_generate_pre system-user-%{name}.conf %{name} system-user-%{name}.conf
install -D -m 644 system-user-%{name}.conf %{buildroot}%{_sysusersdir}/system-user-%{name}.conf
# get the slurm package readay
mkdir -p %{buildroot}%{_localstatedir}/lib/warewulf/overlays/host/etc/slurm
mv %{buildroot}%{_sysconfdir}/warewulf/examples/slurm.conf.ww %{buildroot}%{_localstatedir}/lib/warewulf/overlays/host/etc/slurm
mkdir -p %{buildroot}%{_localstatedir}/lib/warewulf/overlays/generic/etc/munge
cat > %{buildroot}%{_localstatedir}/lib/warewulf/overlays/generic/etc/munge/munge.key.ww <<EOF
{{ Include "/etc/munge/munge.key" -}}
EOF
chmod 600 %{buildroot}%{_localstatedir}/lib/warewulf/overlays/generic/etc/munge/munge.key.ww
mkdir -p %{buildroot}%{_localstatedir}/lib/warewulf/overlays/generic/etc/slurm
cat > %{buildroot}%{_localstatedir}/lib/warewulf/overlays/generic/etc/slurm/slurm.conf.ww <<EOF
{{ Include "/etc/slurm/slurm.conf" }}
EOF
%pre -f %{name}.pre
%service_add_pre warewulfd.service
%post
%service_add_post warewulfd.service
%preun
%service_del_preun warewulfd.service
%postun
%service_del_postun warewulfd.service
%files
%defattr(-,root,root)
%doc README.md
%license LICENSE.md
%attr(0755, root, warewulf) %dir %{_sysconfdir}/warewulf
%attr(0755, root, warewulf) %dir %{_sysconfdir}/warewulf/examples
%attr(0755, root, warewulf) %dir %{_sysconfdir}/warewulf/ipxe
%{_datadir}/bash-completion/completions/wwctl
%{_mandir}/man1/wwctl*1.gz
%config(noreplace) %{_sysconfdir}/warewulf/nodes.conf
%config(noreplace) %{_sysconfdir}/warewulf/warewulf.conf
#%config(noreplace) %{_sysconfdir}/warewulf/wwapic.conf
#%config(noreplace) %{_sysconfdir}/warewulf/wwapid.conf
#%config(noreplace) %{_sysconfdir}/warewulf/wwapird.conf
%config(noreplace) %{_sysconfdir}/warewulf/ipxe/*.ipxe
%{_sysconfdir}/warewulf/examples
%{_prefix}/lib/firewalld/services/warewulf.xml
%{_localstatedir}/lib/warewulf
%exclude %{_localstatedir}/lib/warewulf/overlays
%{_bindir}/wwctl
#%{_bindir}/wwapic
#%{_bindir}/wwapid
#%{_bindir}/wwapird
%{_sbindir}/rcwarewulfd
%{_unitdir}/warewulfd.service
%{_sysusersdir}/system-user-%{name}.conf
%files overlay
# The configuration files in this location are for the compute
# nodes, so when modified we do not replace them as sensible
# admin will read the changelog
%config(noreplace) %{_localstatedir}/lib/warewulf/overlays
%exclude %{_localstatedir}/lib/warewulf/overlays/host/etc/slurm
%exclude %{_localstatedir}/lib/warewulf/overlays/generic/etc/slurm
%exclude %{_localstatedir}/lib/warewulf/overlays/generic/etc/munge
%files ipxe
/srv/tftpboot/warewulf
%{_datadir}/warewulf
%files slurm
%dir %{_localstatedir}/lib/warewulf/overlays/host/etc/slurm
%{_localstatedir}/lib/warewulf/overlays/host/etc/slurm/slurm.conf.ww
%dir %{_localstatedir}/lib/warewulf/overlays/generic/etc/slurm
%{_localstatedir}/lib/warewulf/overlays/generic/etc/slurm/slurm.conf.ww
%dir %{_localstatedir}/lib/warewulf/overlays/generic/etc/munge
%{_localstatedir}/lib/warewulf/overlays/generic/etc/munge/munge.key.ww
%dir %attr(0700,munge,munge) %{_localstatedir}/lib/warewulf/overlays/generic/etc/munge
%attr(0600,munge,munge) %config(noreplace) %{_localstatedir}/lib/warewulf/overlays/generic/etc/munge/munge.key.ww
%changelog