2
0
mirror of https://github.com/xcat2/confluent.git synced 2026-09-10 19:46:26 +00:00
Commit Graph

6880 Commits

Author SHA1 Message Date
Jarrod Johnson 55b1786a68 Add functions to support broader network scanning
Refactor functions to let netutil depend on neighutil.

Add a suite of functions to take a mac and try to figure out some viable ip for the mac.

Provide a ping6 mainly to support a ping to ff02::1, and follow up with unicast UDP discard packets to trigger neighbor table population.

Try to use the neighbor table to figure out an ip and scope for a mac, preferring LLA.

If this fails, go for a try of converting the mac to lla arithmetically, then try all the nics to see which one seems to work.
2026-09-09 15:13:37 -04:00
Jarrod Johnson ba99818334 Add a ping6 function
This allows ping6 without forking a child.

Particularly useful for getting all link local addresses on a segment.
2026-09-09 11:28:42 -04:00
Jarrod Johnson 131a1b7350 Rename switch util to switchutil instead of netutil
netutil was a confusing name, since two modules had the same name.

Fix it by moving switch related stuff to 'switchutil'.
2026-09-09 10:33:41 -04:00
Jarrod Johnson f3f1e692ea Merge pull request #300 from Obihoernchen/fix/imgutil-chkstat
Actually run chkstat on the SUSE image
2026-09-09 08:32:29 -04:00
Jarrod Johnson 4f7228a8d4 Merge pull request #299 from Obihoernchen/fix/localectl-unset
Keep the defaults when localectl reports nothing set
2026-09-09 08:31:43 -04:00
Jarrod Johnson e5b3b8ce65 Merge pull request #298 from Obihoernchen/fix/suse15-setupssh-chmod
Fix the chmod typo in the SUSE 15 ssh setup
2026-09-09 08:31:02 -04:00
Jarrod Johnson ca6682c3cd Merge pull request #297 from Obihoernchen/sles16-support
Sles16 support
2026-09-09 08:30:38 -04:00
Jarrod Johnson b4b86ae909 Have auth protocol be selectable
Also, add AES256 to privacy choices.
2026-09-08 16:31:40 -04:00
Markus Hilger 399ce08680 Stop loading InfiniBand modules the SUSE 16 media lacks
This reverts commit be6c7a3794.

They do not exist in Leap/SLE 16 installer initrd.
The diskless hook keeps its copies. imgutil's installkernel instmods
all four, so they are in that image and the calls do work there.
2026-09-08 16:03:13 +02:00
Jarrod Johnson d12fc1bc8b Merge pull request #296 from Obihoernchen/fix/suse-packaging
Fix SUSE package dependencies and shebangs
2026-09-08 08:41:46 -04:00
Jarrod Johnson cc689fc9ad Merge pull request #295 from Obihoernchen/fix/pam-service
Link the confluent pam service to wherever sshd's config lives
2026-09-08 08:40:22 -04:00
Markus Hilger 583e2fa321 Import the signing key SLE 16 media ships
Building a SUSE 16 image from SLE media failed every package with
"key ID fec28eaf09d9ea69: NOKEY". Leap publishes that key as
gpg-pubkey-*.asc, which the existing glob picks up; SLE publishes the
same key only as repodata/repomd.xml.key, so nothing was imported.

15 media carries both spellings, so this changes nothing there.
2026-09-07 13:30:11 +02:00
Markus Hilger c66d7bcb7e Give the SUSE 16 initramfs libkmod
udev's kmod builtin dlopens libkmod, and dracut installs it from an
inst_libdir_file line in a module-setup.sh rather than by following
NEEDED. Which module carries that line moved: the dracut on SLE 16
media declares it only in 00systemd, which the diskless module set
never loads, so the image came up with no libkmod, udev autoloaded
nothing, and the guest reached the network scan with only loopback.
Leap's newer dracut also declares it in 95udev-rules, which base
depends on, which is why Leap was unaffected.
2026-09-07 13:30:11 +02:00
Markus Hilger d069328dd2 Put the sshd helpers in the SUSE 16 diskless initramfs
OpenSSH 10 splits each connection into sshd-session and that into
sshd-auth, so the initramfs sshd on 2222 could not serve a single
session. el10 added sshd-session for the same reason.
2026-09-07 07:07:03 +02:00
Markus Hilger d7a25a9933 Use dhcpcd for SUSE 16 diskless
SLES 16 ships no ISC dhclient and nothing provides dhcp-client, so the
image could not be built from SLES media at all. Leap carries dhcpcd
too, so one client covers both. el10 made the same move when RHEL
dropped dhclient.
2026-09-07 07:07:03 +02:00
Markus Hilger edf98e3177 Lock root on SUSE 16 when no password is set
The deploycfg carries the literal 'null', which went into the profile as
a password hash, so the installed root account reported a usable
password instead of a locked one. 15 substitutes '!' for this; the sed
delimiter has to move off '!' to carry it.
2026-09-07 06:14:54 +02:00
Markus Hilger 2e0323e333 Run the SUSE 16 firstboot service only once
15 got this from AutoYaST init-scripts. 16 enables its own unit, so it
has to disable it the way el8 and the diskless profiles do.
2026-09-07 06:14:54 +02:00
Markus Hilger 20563d3c3a Apply installedargs on SUSE 16
Every other profile feeds it to the bootloader; agama takes it as
bootloader.extraKernelParams.
2026-09-07 06:14:54 +02:00
Markus Hilger f742626226 Stop the SUSE 16 install when agama rejects the config
The default Etc/UTC is not in the tzdata list agama validates against,
so the load failed and the install fell through to agama defaults and
still reported completion. Normalize it and halt if the load fails.
2026-09-07 06:14:54 +02:00
Markus Hilger f3ea32bcd3 Say autoinstall where the SUSE 16 pre script means it
The comment came from 15, which rewrote an autoyast profile.
2026-09-07 06:14:54 +02:00
Markus Hilger 571076b211 Always netboot the SUSE 16 installer
The attached-media branch could never be taken: the label pattern built
from os-release is opensuse-leap-16.0 or sles-16.0, while the media is
labelled Install-Leap-16.0-x86_64 and Install-SUSE-SLE-16-x86_64. Had it
matched, it would have written an inst.repo to the dracut cmdline that
agama does not read, and skipped inst.script entirely.
2026-09-07 06:14:54 +02:00
Markus Hilger 6cd3805058 Drop the EL vendor names from the SUSE 16 hook
Neither Oracle nor Red Hat can be the first word of a SUSE PRETTY_NAME.
2026-09-07 06:14:54 +02:00
Markus Hilger a0cd0ac5f2 Verify the deploy server when registering a SUSE 16 node
The -k made the --capath on the same line pointless. el8 makes the
identical call without it.
2026-09-07 06:14:54 +02:00
Markus Hilger be6c7a3794 Load the InfiniBand modules for SUSE 16 installs
They stayed commented out when the hook was forked from el8, so an
IPoIB-only node had no path to the deploy server. The diskless hook
loads them already.
2026-09-07 06:14:54 +02:00
Markus Hilger 9e8fc106a1 Drop the anaconda leftovers from the SUSE 16 hook
agama takes inst.install_url and inst.script, set just above.
2026-09-07 06:14:54 +02:00
Markus Hilger 737c761be2 Set up hostbased ssh on installed SUSE 16 systems
prechroot.sh had setupssh.sh commented out and copied only the keys
inline, so nodes came up without shosts.equiv, without the CA in
ssh_known_hosts and without a setuid ssh-keysign.
2026-09-07 06:14:54 +02:00
Markus Hilger ace72d428a Ship the syncfiles template for SUSE 16
post.sh runs syncfileclient, but there was no template to edit.
2026-09-07 06:14:54 +02:00
Markus Hilger 6a77e91bf9 Give SUSE 16 the customization hooks SUSE 15 has
firstboot.custom and the empty pre.d, post.d, firstboot.d and ansible
directories were left out, so the documented drop-in points did not exist.
2026-09-07 06:14:54 +02:00
Markus Hilger fd9bdc00c3 Ship the post.custom stub for SUSE 16
post.sh already runs it, so every install logged a 404 for it.
2026-09-07 06:14:54 +02:00
Markus Hilger dfa80306b5 Install timezone data in SUSE 16 images
Without it onboot.sh cannot apply deployment.timezone.
2026-09-07 06:14:54 +02:00
Markus Hilger 9089d3700b Find ssh-keysign where SUSE 16 puts it
The permissions.local rule named /usr/lib/ssh, so keysign kept mode 0755
and hostbased auth failed with 'could not open any host key'.
2026-09-07 06:14:54 +02:00
Markus Hilger 5ac3880764 Actually run chkstat on the SUSE image
A trailing comma made args.cmd a tuple holding the argv list, so
fancy_chroot called startswith on a list and the child died before exec.
permissions.local was written but never applied, leaving ssh-keysign
0755 and hostbased auth inoperative on SUSE diskless images.
2026-09-07 05:54:16 +02:00
Markus Hilger 46920e8436 Keep the defaults when localectl reports nothing set
Newer systemd prints '(unset)' where it used to print 'n/a', so an
unset console keymap was handed to the installer verbatim. An unset
System Locale has no '=' either, and the whole line was being taken
as the locale.
2026-09-07 05:18:43 +02:00
Markus Hilger 2634c582e7 Fix the chmod typo in the SUSE 15 ssh setup
'chmd' left the mode of the installed root authorized_keys to whatever cp
gave it, and put a command not found in every install log.
2026-09-07 02:40:43 +02:00
Markus Hilger 939a46d8d1 Fix SUSE 16 diskless boot 2026-09-05 02:12:18 +02:00
Markus Hilger 9dd5802698 Fill in the spots the SUSE 16 work missed
- the aarch64 osdeploy spec builds the stateful suse16 addons but its
  diskless loop was never extended, so the aarch64 rpm shipped suse16
  without suse16-diskless and a packed image got a dangling addons.cpio.
- imgutil's builddeb keeps its own copy of the directory list that
  confluent_imgutil.spec.tmpl has, and it had learned about neither suse16
  nor el10.
- gather_bootloader gained a /usr/share/efi fallback for shim on both
  architectures but only for x86_64 on grub, so an aarch64 root found a
  shim and then died copying grub.

Finally, rewriting repos.d file by file rather than copying the tree meant
a subdirectory or a file that is not valid UTF-8 aborted the build before
any package was installed, which also regressed SUSE 15. Pass anything
that is not a plain text repo definition through untouched and restore the
modes on the ones that are rewritten.
2026-09-05 02:12:18 +02:00
Markus Hilger 5645fb5cfd Build SUSE 16 images with imgutil
SuseHandler refused anything but 15.x. What 16 needed beyond widening it:

- its repo urls are written in terms of ${releasever}, which zypper
  resolves from the target root's os-release, a file that does not exist
  yet when the first packages go in
- its repos name a zypper service backed by a package-provided directory
  the target root does not have, so zypper discarded every one of them
  as an orphan
- there is no mkinitrd to work out which kernel to build for, and bare
  dracut would build for the build host's running kernel
- the efi payloads moved out of /usr/lib64/efi, arping out of /usr/sbin,
  nsswitch.conf and protocols under /usr/etc, and the presets enable
  sshd already
- the module list predated virtio, so an image built for a KVM guest had
  no network at all, and dm-crypt could not allocate a transform for the
  encrypted image without the aes-xts modules
- urlmount still links libpthread, an empty stub since glibc 2.34 that
  nothing else in the initramfs pulls in
2026-09-05 02:11:53 +02:00
Markus Hilger 398211a6ed Support diskless boot on SUSE 16
Ported from suse15-diskless, with the differences 16 forces:

- dracut symlinks /lib/dracut/hooks to /var/lib/dracut/hooks, so a hook
  shipped at the old path replaces the symlink with a directory
- there is no netconfig or /etc/sysconfig/network to hand the running
  address to, so the initramfs writes a NetworkManager keyfile instead.
  Without it NetworkManager claims the interface on its own terms and the
  tethered root filesystem goes away with the old address, and confignet
  never gets the chance to refine anything
- the discovery loop retries without a delay, so a link that takes a
  moment to come up can exhaust all 30 tries before the first packet can
  go anywhere. Keep asking, as the el9 hook already does
2026-09-05 02:11:53 +02:00
Markus Hilger b5e24333ce Add the missing suse16 profile.yaml
Without it osdeploy import cannot generate a profile at all:
generate_stock_profiles opens profile.yaml unguarded, and initprofile.sh
seds the label into it. The label substitution also still looked for
'sle 15'.
2026-09-05 02:11:53 +02:00
Markus Hilger ea435d00a2 Fix SUSE package dependencies and shebangs 2026-09-05 01:05:15 +02:00
Markus Hilger 811e5fe03d Link the confluent pam service to wherever sshd's config lives
Linux-PAM reads vendor defaults from /usr/lib/pam.d and distributions are
migrating there package by package: systemd and polkit already ship into
it on both EL and Debian, and on SUSE 16 openssh has followed. There the
old code left a dangling /etc/pam.d/confluent and every pam authentication
against it failed.

The deb postinst carries the same logic, so fix it in step. ln -sf rather
than ln -s because -e is false for a dangling link, so the old code retried
the symlink and failed with 'File exists' instead of repairing it.
2026-09-05 01:03:42 +02:00
Jarrod Johnson 42ca73eb21 Merge pull request #293 from Obihoernchen/fix/drop-sysvinit
Drop the sysvinit script
2026-09-04 13:13:17 -04:00
Jarrod Johnson 6a63d95df6 Merge pull request #294 from Obihoernchen/fix/loop-debug-default
Leave asyncio debug mode off by default
2026-09-04 13:12:38 -04:00
Markus Hilger 2f00b2ff05 Leave asyncio debug mode off by default
set_debug(True) put per-callback overhead and slow callback logging into
every run.
Use PYTHONASYNCIODEBUG=1 or -X dev instead.
2026-09-04 19:04:42 +02:00
Jarrod Johnson 0d88d1ae28 Replace asyncio Locks with re-entrant behavior
If connect_to_leader calls itself, let it use it's own lock.
2026-09-04 12:43:18 -04:00
Markus Hilger 106905be38 Drop the sysvinit script 2026-09-04 18:01:35 +02:00
Jarrod Johnson 5025c904e8 Ensure keepalive are sent while following
keepalives would be postponed by incoming keepalives.

Fix this by tracking keepalive on transmit only, not on receive.
2026-09-04 12:01:01 -04:00
Jarrod Johnson 8fcb5aec9a Avoid exiting on tail failure
tail can fail in certain scenarios.  Switch to wait if that should occur.
2026-09-04 08:39:05 -04:00
Jarrod Johnson 2f49ab602d Fix incorrect attribute on asyncio task 2026-09-03 13:42:43 -04:00
Jarrod Johnson 5df20a92ac Merge pull request #292 from Obihoernchen/fix/sdr-init-caching
Do not cache an SDR that failed to build
2026-09-03 08:57:03 -04:00