|
# This kickstart file was rendered from the Foreman provisioning template "Kickstart default".
|
|
# for snapshot-ipv4-dhcp-rhel9 running RHEL 9 x86_64
|
|
# Organization: Organization 1
|
|
# Location: Location 1
|
|
|
|
|
|
url --url http://mirror.example.com/rhel/9/os/x86_64
|
|
|
|
|
|
lang en_US.UTF-8
|
|
selinux --enforcing
|
|
keyboard us
|
|
|
|
network --device=00-f0-54-1a-7e-e0 --hostname snapshot-ipv4-dhcp-rhel9 --noipv6 --mtu=1142 --bootproto dhcp --nameserver=192.168.42.2,192.168.42.3
|
|
|
|
rootpw --iscrypted $1$rtd8Ub7R$5Ohzuy8WXlkaK9cA2T1wb0
|
|
firewall --service=ssh
|
|
authselect --useshadow --passalgo=sha256 --kickstart
|
|
timezone --utc UTC
|
|
|
|
services --disabled gpm,sendmail,cups,pcmcia,isdn,rawdevices,hpoj,bluetooth,openibd,avahi-daemon,avahi-dnsconfd,hidd,hplip,pcscd
|
|
|
|
|
|
|
|
bootloader --location=mbr --append="nofb quiet splash=quiet"
|
|
|
|
zerombr
|
|
clearpart --all --initlabel
|
|
part /boot --fstype ext3 --size=100 --asprimary
|
|
part / --fstype ext3 --size=1024 --grow
|
|
part swap --recommended
|
|
rhsm --organization="Org" --activation-key="key" --connect-to-insights
|
|
syspurpose --role 'Red Hat Enterprise Linux Server' --usage 'Development/Test' --sla 'Self-Support' --addon 'first addon' --addon 'second addon' --addon 'third addon'
|
|
|
|
skipx
|
|
text
|
|
reboot
|
|
|
|
%packages
|
|
|
|
yum
|
|
chrony
|
|
-ntp
|
|
dracut-fips
|
|
-prelink
|
|
|
|
%end
|
|
|
|
|
|
%post --nochroot
|
|
exec < /dev/tty3 > /dev/tty3
|
|
chvt 3
|
|
(
|
|
|
|
|
|
|
|
chvt 1
|
|
) 2>&1 | tee /mnt/sysimage/root/install.postnochroot.log
|
|
%end
|
|
|
|
|
|
%post
|
|
exec < /dev/tty3 > /dev/tty3
|
|
chvt 3
|
|
(
|
|
logger "Starting anaconda snapshot-ipv4-dhcp-rhel9 postinstall"
|
|
|
|
echo "Updating system time"
|
|
systemctl enable --now chronyd
|
|
/usr/bin/chronyc -a makestep
|
|
/usr/sbin/hwclock --systohc
|
|
|
|
|
|
|
|
|
|
|
|
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
|
|
|
|
|
|
|
|
# update all the base packages from the updates repository
|
|
if [ -f /usr/bin/dnf ]; then
|
|
dnf -y update
|
|
else
|
|
yum -t -y update
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
echo "blacklist amodule" >> /etc/modprobe.d/blacklist.conf
|
|
|
|
|
|
|
|
|
|
if [ -f /usr/bin/dnf ]; then
|
|
dnf -y install puppet
|
|
else
|
|
yum -t -y install puppet
|
|
fi
|
|
|
|
cat > /etc/puppet/puppet.conf << EOF
|
|
[main]
|
|
vardir = /var/lib/puppet
|
|
logdir = /var/log/puppet
|
|
rundir = /var/run/puppet
|
|
ssldir = \$vardir/ssl
|
|
|
|
[agent]
|
|
pluginsync = true
|
|
report = true
|
|
certname = snapshot-ipv4-dhcp-rhel9
|
|
|
|
EOF
|
|
|
|
|
|
puppet_unit=puppet
|
|
/usr/bin/systemctl list-unit-files | grep -q puppetagent && puppet_unit=puppetagent
|
|
/usr/bin/systemctl enable ${puppet_unit}
|
|
|
|
# export a custom fact called 'is_installer' to allow detection of the installer environment in Puppet modules
|
|
export FACTER_is_installer=true
|
|
# passing a non-existent tag like "no_such_tag" to the puppet agent only initializes the node
|
|
# You can select specific tag(s) with the "run-puppet-in-installer-tags" parameter
|
|
# or set a full puppet run by setting "run-puppet-in-installer" = true
|
|
echo "Performing initial puppet run for --tags no_such_tag"
|
|
/usr/bin/puppet agent --config /etc/puppet/puppet.conf --onetime --tags no_such_tag --no-daemonize
|
|
|
|
|
|
|
|
|
|
cat << EOF-2929810d > /etc/systemd/system/ansible-callback.service
|
|
[Unit]
|
|
Description=Provisioning callback to Ansible Tower
|
|
Wants=network-online.target
|
|
After=network-online.target
|
|
|
|
[Service]
|
|
Type=oneshot
|
|
ExecStart=/usr/bin/curl -k -s --data "host_config_key=" https:///api/v2/job_templates//callback/
|
|
ExecStartPost=/usr/bin/systemctl disable ansible-callback
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
EOF-2929810d
|
|
# Runs during first boot, removes itself
|
|
systemctl enable ansible-callback
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
touch /tmp/foreman_built
|
|
|
|
chvt 1
|
|
) 2>&1 | tee /root/install.post.log
|
|
%end
|
|
|
|
# copy %pre log files into chroot
|
|
%post --nochroot
|
|
cp -vf /tmp/*.pre.*.log /mnt/sysimage/root/
|
|
%end
|
|
|
|
|
|
%post --erroronfail --log=/root/install-callhome.post.log
|
|
|
|
|
|
if test -f /tmp/foreman_built; then
|
|
echo "calling home: build is done!"
|
|
if [ -x /usr/bin/curl ]; then
|
|
/usr/bin/curl -o /dev/null --noproxy \* -H 'Content-Type: text/plain' --data @/root/install.post.log --silent 'http://foreman.example.com/unattended/built'
|
|
elif [ -x /usr/bin/wget ]; then
|
|
/usr/bin/wget -q -O /dev/null --no-proxy --method POST --header 'Content-Type: text/plain' --body-file=/root/install.post.log 'http://foreman.example.com/unattended/built'
|
|
else
|
|
wget -q -O /dev/null --header 'Content-Type: text/plain' 'http://foreman.example.com/unattended/built'
|
|
fi
|
|
else
|
|
echo "calling home: build failed!"
|
|
if [ -x /usr/bin/curl ]; then
|
|
/usr/bin/curl -o /dev/null --noproxy \* -H 'Content-Type: text/plain' --data @/root/install.post.log --silent 'http://foreman.example.com/unattended/failed'
|
|
elif [ -x /usr/bin/wget ]; then
|
|
/usr/bin/wget -q -O /dev/null --no-proxy --method POST --header 'Content-Type: text/plain' --body-file=/root/install.post.log 'http://foreman.example.com/unattended/failed'
|
|
else
|
|
wget -q -O /dev/null --header 'Content-Type: text/plain' 'http://foreman.example.com/unattended/failed'
|
|
fi
|
|
fi
|
|
|
|
sync
|
|
%end
|