Add Rocky 10 Packer build configuration
This commit is contained in:
Executable
+11
@@ -0,0 +1,11 @@
|
||||
#!/usr/bin/env bash
|
||||
set -x
|
||||
|
||||
dnf clean all || exit 1
|
||||
rm -rf /var/cache/libdnf5/*
|
||||
rm -rf /var/tmp/* /var/tmp/.[!.]*
|
||||
[[ -f /var/log/wtmp ]] && truncate -s 0 /var/log/wtmp
|
||||
|
||||
dd if=/dev/zero of=/EMPTY bs=1M
|
||||
sync || exit 1
|
||||
rm -f /EMPTY || exit 1
|
||||
Executable
+35
@@ -0,0 +1,35 @@
|
||||
#!/usr/bin/env bash
|
||||
set -x
|
||||
|
||||
err() {
|
||||
printf "[ERROR]: %s\n" "$1" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
IMG_NAME="rocky-10-64-vagrant"
|
||||
IMG_DIR="./builds/qemu/$IMG_NAME"
|
||||
[[ ! -f "$IMG_DIR/$IMG_NAME" ]] && err "$IMG_NAME doesn't exist"
|
||||
|
||||
cat >"$IMG_DIR/metadata.json" <<'EOF' || err "failed to write metadata.json"
|
||||
{"provider":"libvirt","format":"qcow2","virtual_size":100}
|
||||
EOF
|
||||
|
||||
cat >"$IMG_DIR/Vagrantfile" <<'EOF' || err "failed to write Vagrantfile"
|
||||
Vagrant.configure("2") do |config|
|
||||
config.vm.synced_folder ".", "/vagrant", type: "nfs", nfs_version: 4
|
||||
end
|
||||
EOF
|
||||
|
||||
mkdir -p ./builds/vagrant || err "failed to mkdir ./builds/vagrant"
|
||||
if [[ ! -f "$IMG_DIR/box.img" ]]; then
|
||||
cp -l "$IMG_DIR/$IMG_NAME" "$IMG_DIR/box.img" ||
|
||||
err "failed to hardlink '$IMG_NAME' to 'box.img' file"
|
||||
fi
|
||||
|
||||
if [[ ! -f "./builds/vagrant/$IMG_NAME.box" ]]; then
|
||||
tar -C "$IMG_DIR" -cvzf "./builds/vagrant/$IMG_NAME.box" \
|
||||
box.img metadata.json Vagrantfile || err "failed to create .box file"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
err "$IMG_NAME.box already exists"
|
||||
Executable
+3
@@ -0,0 +1,3 @@
|
||||
#!/usr/bin/env bash
|
||||
set -x
|
||||
dnf upgrade -y || exit 1
|
||||
Executable
+36
@@ -0,0 +1,36 @@
|
||||
#!/usr/bin/env bash
|
||||
set -x
|
||||
|
||||
err() {
|
||||
printf "[ERROR]: %s\n" "$1" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
dnf install -y \
|
||||
qemu-guest-agent \
|
||||
nfs-utils \
|
||||
openssl \
|
||||
curl \
|
||||
sudo \
|
||||
vim-enhanced || err "failed to install packages"
|
||||
|
||||
useradd -m -s /bin/bash -p "$(openssl passwd -1 vagrant)" vagrant ||
|
||||
err "failed to add vagrant user"
|
||||
printf '%s\n' "vagrant ALL=(ALL) NOPASSWD:ALL" >/etc/sudoers.d/vagrant ||
|
||||
err "failed to write sudoers file"
|
||||
chmod 440 /etc/sudoers.d/vagrant || err "failed to chmod sudoers file"
|
||||
install -d -m 0700 -o vagrant -g vagrant /home/vagrant/.ssh ||
|
||||
err "failed to create vagrant .ssh dir"
|
||||
|
||||
BASE_GH_URL="https://raw.githubusercontent.com/hashicorp/vagrant/refs/heads"
|
||||
curl -fsSL "${BASE_GH_URL}/main/keys/vagrant.pub" \
|
||||
-o /home/vagrant/.ssh/authorized_keys ||
|
||||
err "failed to download initial authorized_keys"
|
||||
chmod 600 /home/vagrant/.ssh/authorized_keys || err "failed to chmod 600 authorized_keys"
|
||||
chown vagrant:vagrant /home/vagrant/.ssh/authorized_keys ||
|
||||
err "failed to chown initial authorized_keys"
|
||||
|
||||
sed -i 's/PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config ||
|
||||
err "failed to disable root login via SSH"
|
||||
passwd -d root || err "failed to delete root password"
|
||||
passwd -l root || err "failed to lock root password"
|
||||
Reference in New Issue
Block a user