Skip to content

Instantly share code, notes, and snippets.

@danpawlik
Last active July 5, 2023 11:03
Show Gist options
  • Save danpawlik/844ff5cbb32fbd0e2e0fa167c0138851 to your computer and use it in GitHub Desktop.
Save danpawlik/844ff5cbb32fbd0e2e0fa167c0138851 to your computer and use it in GitHub Desktop.
#!/bin/bash
set -x
### NOTE: Remember to run as a root ;)
## https://github.com/crc-org/snc/blob/master/createdisk.sh#L9
## https://github.com/crc-org/snc/blob/master/createdisk-library.sh#L387
## https://github.com/crc-org/snc/blob/master/createdisk-library.sh#L83
## requires packages: libzstd zstd
crc bundle generate
crc start -b /home/centos/crc_libvirt_4.12.13_amd64_1688372982.crcbundle
tar xvaf /home/centos/crc_libvirt_4.12.13_amd64_1688372982.crcbundle
cd crc_libvirt_4.12.13_amd64_1688372982
sudo guestmount -m /dev/sda4 -a crc.qcow2 --rw /mnt
GUEST_ETC_DIR="$(sudo find /mnt/ostree/deploy/rhcos/deploy -maxdepth 1 -type d | tail -n1)/etc"
GUEST_LOCAL_DIR=/mnt/ostree/deploy/rhcos/var/usrlocal
GUEST_HOME_DIR=/mnt/ostree/deploy/rhcos/var/home/core
cat << EOF > $GUEST_ETC_DIR/systemd/system/crc-pre.service
[Unit]
Description=Configure required service configuration files
DefaultDependencies=no
ConditionPathExists=/usr/local/bin/configure-pre-crc.sh
Before=kubelet.service crc-dnsmasq.service
After=NetworkManager.service network-online.target
Wants=network-online.target
[Service]
ExecStart=bash /usr/local/bin/configure-pre-crc.sh
Type=oneshot
TimeoutSec=60
RemainAfterExit=yes
[Install]
WantedBy=kubelet.service
EOF
cat << 'EOF' > $GUEST_LOCAL_DIR/bin/configure-pre-crc.sh
#!/bin/bash
HOST_IP=$(ip route get 1.2.3.4 | awk '{print $7}' | head -n1)
cat << EOL | sudo tee /var/srv/dnsmasq.conf
user=root
port= 53
bind-interfaces
expand-hosts
log-queries
local=/crc.testing/
domain=crc.testing
address=/apps-crc.testing/$HOST_IP
address=/api.crc.testing/$HOST_IP
address=/api-int.crc.testing/$HOST_IP
address=/crc-74q6p-master-0.crc.testing/192.168.126.11
EOL
cat << EOL | sudo tee /etc/resolv.conf
nameserver $HOST_IP
nameserver 38.102.83.3
nameserver 38.102.83.2
EOL
# stop overwriting /etc/resolv.conf after reboot
cat << EOL | sudo tee /etc/NetworkManager/conf.d/00-custom-crc.conf
[main]
dns=none
EOL
sudo systemctl reload NetworkManager
EOF
# set execute for others
sudo chmod +x $GUEST_LOCAL_DIR/bin/configure-pre-crc.sh
# enable service
cd $GUEST_ETC_DIR/systemd/system/default.target.wants
ln -s ../crc-pre.service .
cd -
cat << 'EOF' >> $GUEST_HOME_DIR/.ssh/authorized_keys
# https://github.com/rdo-infra/review.rdoproject.org-config/blob/master/playbooks/tripleo-rdo-base/pre.yaml
# zuul - important
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC7ToRkLRS8QHhlMYvqUl2GF5nGI1DkOAbHJv7b9ru608ISb7+hkUpposBclCGnjR3Bvtbsj3kcJOErZrczR2WfJ52JwjaWTSXU8vh20l3aVtHtPRdlLGCHfM92Ll85eA6FrtZB4UaVkabqFiA1GmTUUg4q9W9wxngwMWdI5ZcifZ+0uXjDLFazVtNGyTNVyWi0b2ECFBCGFV2Bg6FI9Y+QWosNYvhs+jRzPMdtat2fwbq+2p5kU8SkWFZYAva2Anrbv5T5cGhT0K7cO5dEAWSUdVOSTvnv5JAoygdrTtDJOP4cKqtL6+dPdW3nZbjqg0fCUe1feWpknu3L2GHaOzidhsG+RUDQob0NXFmyej4JmLF95x3XVVgJPzMEAVBqI83ev8GcPv1Lb75jkqsolV9TzKP2sB26MV1aCRluZzibOpjQvzKzvA0sjR+5PG9iJ1KwcSg6MfukEE7WuZ0hEhfmt/nH3ZOQv6mi3cKRYXRfK2jJ7lVMutaD02hZxN7ppd8= zuul-build-sshkey
# zuul zs.sf.io
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDgOp/WpwK0HBfgJoYDXo+yZbLqkNrbkbtk3p6MxJumQlXxXhKWY0uJXbrecjhJG6Ydv/6SzKQeoVWSPJUkZ0xD1l7KCPN+iNJyRQGwiyIi/Vd7JNt0pn+dblmPA5GzAwEMcT+49OlK0I1p1JwpSa0CFgNH8zSZOqCaH8yUiKtbc0UtCdQehSIcHvz573E2IbeDMG1omijf6fAT67tEAzEbsasCN/bSmXDraAQ+XIPPsFoifCQaSOL3SsyjG0awNfTotiBW68DqzR29KYwMQntM1ACVWPMda2rVTUFmV51ono/Ux2vRiV8zMCQAzZdy9gkF+3bDnK7VeY2rccp7EaVj root@managesf
# zuul sfhosted
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDU84vH1QOZ8G4v3big/1Eh7ErtQyAXCC2YyqBtaCoDZFmfQHFqOeBdHaR3heRZYo9MCl9wiAtqXWYGmOMndbYooB09LCzA0DXtBRJtLeRYPk3jlfYI6hd1VhMipnzVlAPfmNfFBCujROdUT2gaO/cOGREWrsfTDYjYpHt7ltDZ+XwdB3vFqW/K9mgJz27VTnGSn/4J6LDai36FkXQEs05gcKbFMC5HOHNrxqpl4obLASB5K/XV18Ret43mIbHtFaLhjBRFl97kBkohQK/IGG+WVccjA/5Y84AOUk53WIHz07B6qgybl8wd3nAj9dXl5fPMyunF5Eb9ev1IBWR2idtj root@sf.hosted
# dpawlik
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOKLl0NYKwoZ/JY5KeZU8VwRAggeOxqQJeoqp3dsAaY9 dpawlik@x1
# cedric
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHUnwjB20UKmsSed9X73eGNV5AOEFccQ3NYrRW776pEk cjeanner
# pablo
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDK7XsKtjKF1/T7q26T3oPyTyCTz9yOhp/5Ptpx/yGFSosIViVy+om5U+D56NJFRhsZ6chTpLpt/EsghwuzGshv3tGzmbLopcPc5Ux76oebzzZryg/2TOHbo4gEmNMK7hhXLv08K52pegtPYmBQ5V7PkchMQ1AjUwdzRMc8RLxcxXXMG4G1Pp/PLykuHmwHYil1rFyYWB62wgIRmzgXzkHy9tmnKB2lwgCM25UmFEC/8mDxA3xsOtT9YuhYIU4N5jAeDyzscDedEAeMghKyIFVx3vLbgThNiH7LC9fzGYQACCvYaUJ3T27IuzAd/uGltphBDK2mkH1eKAE26MQ1GE7Xpy49y8+Od+imbLx4ORn6zrVu0+QrOnhtZvuxAVZIJ3HGZ4sSmQtdpjOlyqgFoyic4hjkQfuUt7JvJtYjE00TzlMomflAvR4KFZHucoMzABgUHZSV8E0otlnq11rn9FtDt7ajIDRNVg2Uf1K7/3koPzg1XeC3oFcolhRHyQYDfi69VzPJW5Vl2F1pQh5vCIKOCYQ+nYXbNx0iEAgL7l7kpythUohKoh4/9jSdtlyhAYX96lHfP1MShX1KgcWAEePdU4kaMNrsIMb3/WsMVDfH+2XJNy8bPxr+U+jOS9/KtgN6ACDWiqtxpozTsEEVMAu7vCZyr5EvztscIUIh6TcMCw== pabrodri@pabrodri-remote
# chandan
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGE+Kh8TW2fGc2U54HbeRkRrGGf46YbxAcxRB4XqLO/4 raukadah
# ysandeep
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD9hHZMu0S/A/BhYMyc3X/qixn/1aoPUWIbWOF01JLkCeB5Vz7EFdW8ohqr5fqe11mXRhNKpeP7NQcTZ8JjdgE5XfA8+elhjmIlJJGEuUe278KmVLie4R7H+Mdu1FcVQ7RpJRginyqLOa5U9/T0oh+oNuHjEqMVAAfrpMGo2e0SBrFs92+sowK+u1SCoF1QI34mg4aHfFY15dDFoSu6z4CUtfSI/bH+pJKPw/xB7I/Ev1RMu5bouhsqtaXCldoBagQKI1d8ZslPZ043IC+0XBG75ZA7bfWs9pW0ReYG9a3J63DEPMSsp3Tnlu36xVYY+/GtpZROgqZxyU3UnfrmFEwL sandyada
# afazekas
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCnB+y028w0+dMjKfRWiAnQ5Q+ej6Gc7BtHpITFndhx8Gywh0L5B5EFWHBB2fdmw7boDmqhGKTTMgaxTtUhQAFuHsfhSrlQIbmUiIgrGkFUx4Pbhr2Xf1NFqM1nXNXT7asuzwFAnBsznR3zo+uj5NWzbj8Ualr1bUJ22iq4eegBm3k18iKKEl0JelDxmcZKihyg6+2Va84cd8P6BbBPs9SUdPXVZNxcFtyDgsMOQGFsh7Ca9RMdf4tz+ONj+s3ZFpcy8xapEWrwHlXad/by3PMta0sOxYiWJTOp93yrMvgdx+jj4jsBxhvw1Yjpzyfr9Y8GU9MB9R7vdjd6D/OWSA+Iwapf4LqFNBCyo45m1rMK1ha7p7fVT5CGUbxIKcBfW3L7iJ/BAZNJAIUQUmnmF2k1m8/odZB+gHStinHOURryHpKEgy1Wbuww1pKXJTSRXBjssX+dOuUYeiWxMuHx/2VCJRmf2pPH5+IRwxVwFINXlYMkLTwYDDGVTO110U4ekq8= afazekas
EOF
echo "Checking if all content is applied"
echo -e "\n\nCRC pre service"
cat $GUEST_ETC_DIR/systemd/system/crc-pre.service
echo -e "\n\nConfigure script"
cat $GUEST_LOCAL_DIR/bin/configure-pre-crc.sh
echo -e "\n\n Authorized keys"
cat $GUEST_HOME_DIR/.ssh/authorized_keys
echo -e "\n\nChecking symlink"
ls -la $GUEST_ETC_DIR/systemd/system/default.target.wants/ | grep crc
echo -e "\n\nChecking mode on script"
ls -la $GUEST_LOCAL_DIR/bin/configure-pre-crc.sh
sync
sudo guestunmount /mnt
# NOTE: CRC does not have ignition inside ;/
#if ! command -v butane; then
# sudo yum install -y butane
#fi
#
## https://docs.fedoraproject.org/en-US/fedora-coreos/provisioning-openstack/
## https://docs.fedoraproject.org/en-US/fedora-coreos/tutorial-containers/#_writing_the_butane_config_and_converting_to_ignition
#openstack image create dpawlik-crc-extracted \
# --container-format bare \
# --disk-format qcow2 \
# --progress \
# --file crc.qcow2
#
#openstack server create dpawlik-crc-extracted \
# --flavor ci.m1.xlarge \
# --nic net-id=7abff1a9-a103-46d0-979a-1f1e599f4f41 \
# --key-name bridgesf \
# --user-data ignition.ign \
# --image dpawlik-crc-extracted
# After a while in CRC instance
# oc login api.crc.testing:6443 -u kubeadmin -p "123456789" --insecure-skip-tls-verify=true
# while true; do if oc login api.crc.testing:6443 -u kubeadmin -p "<pass>" --insecure-skip-tls-verify=true; then date; uptime; else sleep 60; fi; done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment