Kickstart network install with local repository fails

When doing a text based automated kickstart install from a local repository the installation fails with:

missing groups or modules: @core, @server-product-environment, @system-tools

Local repositories are on an http server and were created with the following commands:

reposync --repo baseos --download-path=/var/www/html/rocky8 --downloadcomps --download-metadata
reposync --repo appstream --download-path=/var/www/html/rocky8 --downloadcomps --download-metadata
createrepo /var/www/html/rocky8/baseos
createrepo /var/www/html/rocky8/appstream

Both repositories have a comps.xml file.

Kickstart file follows with user creation removed:

#version=RHEL8
# Use text install
text

repo --name="AppStream" --baseurl=http://192.168.1.72/rocky8/appstream

%packages
@^server-product-environment
@system-tools

%end

# Keyboard layouts
keyboard --xlayouts='us'
# System language
lang en_US.UTF-8

# Network information
network  --bootproto=static --device=ens160 --gateway=192.168.1.1 --ip=192.168.1.73 --nameserver=8.8.8.8,8.8.4.4 --netmask=255.255.255.0 --noipv6 --activate
network  --hostname=rocky02

# Use network installation media
url --url="http://192.168.1.72/rocky8/baseos"

# Run the Setup Agent on first boot
firstboot --enable

ignoredisk --only-use=nvme0n1
# Partition clearing information
clearpart --none --initlabel
# Disk partitioning information
part /boot/efi --fstype="efi" --ondisk=nvme0n1 --size=600 --fsoptions="umask=0077,shortname=winnt"
part pv.111 --fstype="lvmpv" --ondisk=nvme0n1 --grow --size=4096
part /boot --fstype="xfs" --ondisk=nvme0n1 --size=1024
volgroup vg_root --pesize=4096 pv.111
logvol swap --fstype="swap" --size=4096 --name=lv_swap --vgname=vg_root
logvol / --fstype="xfs" --grow --size=4096 --name=lv_root --vgname=vg_root

# System timezone
timezone America/Denver --isUtc

%addon com_redhat_kdump --disable --reserve-mb='auto'

%end

%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end

When doing a reposync, do not run createrepo after. You break comps, modules, and a host of other things doing so. A reposync is sufficient for a local repository.

If it helps, GitHub - sweharris/centos8-local: How I build CentOS 8 VMs locally describes how I mirror the BaseOS and AppStream trees, and the kickstart file I use with them. Originally for CentOS8 but updated for Rocky.

Absolutely correct. I figured that out while my post was waiting for approval from the anti-spam bot.