Skip to content

Instantly share code, notes, and snippets.

@kriipke
Last active March 7, 2025 03:07
Show Gist options
  • Save kriipke/d60d277dd79cf6ae3d4122282b96210a to your computer and use it in GitHub Desktop.
Save kriipke/d60d277dd79cf6ae3d4122282b96210a to your computer and use it in GitHub Desktop.
post install script to install Kubernetes (k3s) on dietpi on Turing Pi 2, set the path to this file in the AUTO_SETUP_CUSTOM_SCRIPT_EXEC variable in dietpi.txt, see https://help.turingpi.com/hc/en-us/articles/8942873470877-The-plan
AUTO_SETUP_ACCEPT_LICENSE=1
AUTO_SETUP_LOCALE=C.UTF-8
AUTO_SETUP_KEYBOARD_LAYOUT=us
AUTO_SETUP_TIMEZONE=America/New_York
AUTO_SETUP_NET_ETHERNET_ENABLED=1
AUTO_SETUP_NET_WIFI_ENABLED=0
AUTO_SETUP_NET_ETH_FORCE_SPEED=0
AUTO_SETUP_NET_WIFI_COUNTRY_CODE=SK
AUTO_SETUP_NET_USESTATIC=1
AUTO_SETUP_NET_STATIC_IP=192.168.40.200
AUTO_SETUP_NET_STATIC_MASK=255.255.255.0
AUTO_SETUP_NET_STATIC_GATEWAY=192.168.40.1
AUTO_SETUP_NET_STATIC_DNS=1.1.1.1 8.8.8.8
AUTO_SETUP_DHCP_TO_STATIC=0
AUTO_SETUP_NET_HOSTNAME=cube01
AUTO_SETUP_BOOT_WAIT_FOR_NETWORK=1
AUTO_SETUP_SWAPFILE_SIZE=1
AUTO_SETUP_SWAPFILE_LOCATION=/var/swap
AUTO_SETUP_HEADLESS=1
AUTO_UNMASK_LOGIND=0
AUTO_SETUP_CUSTOM_SCRIPT_EXEC=https://gist.githubusercontent.com/kriipke/d60d277dd79cf6ae3d4122282b96210a/raw/239c71d0cc357344d156c9641c5ea590f20bc544/post-install-script-dietpi.sh
AUTO_SETUP_SSH_PUBKEY=ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFdp/F7yYv33wnZQGbJAGmNcFNbm3qOFCOvrprXDlP24 ansible-primary
AUTO_SETUP_BACKUP_RESTORE=0
AUTO_SETUP_SSH_SERVER_INDEX=-2
AUTO_SETUP_LOGGING_INDEX=-1
AUTO_SETUP_RAMLOG_MAXSIZE=50
AUTO_SETUP_WEB_SERVER_INDEX=0
AUTO_SETUP_DESKTOP_INDEX=0
AUTO_SETUP_BROWSER_INDEX=0
AUTO_SETUP_AUTOSTART_TARGET_INDEX=7
AUTO_SETUP_AUTOSTART_LOGIN_USER=root
AUTO_SETUP_GLOBAL_PASSWORD=dietpi
AUTO_SETUP_AUTOMATED=1
SURVEY_OPTED_IN=0
#OpenSSH Client
AUTO_SETUP_INSTALL_SOFTWARE_ID=0
#Samba Client
AUTO_SETUP_INSTALL_SOFTWARE_ID=1
#vim
AUTO_SETUP_INSTALL_SOFTWARE_ID=20
#RPi.GPIO
AUTO_SETUP_INSTALL_SOFTWARE_ID=69
#OpenSSH Server
AUTO_SETUP_INSTALL_SOFTWARE_ID=105
#Python 3 pip
AUTO_SETUP_INSTALL_SOFTWARE_ID=130
CONFIG_CPU_GOVERNOR=schedutil
CONFIG_CPU_ONDEMAND_SAMPLE_RATE=25000
CONFIG_CPU_ONDEMAND_SAMPLE_DOWNFACTOR=40
CONFIG_CPU_USAGE_THROTTLE_UP=50
CONFIG_CPU_MAX_FREQ=Disabled
CONFIG_CPU_MIN_FREQ=Disabled
CONFIG_CPU_DISABLE_TURBO=0
CONFIG_PROXY_ADDRESS=MyProxyServer.com
CONFIG_PROXY_PORT=8080
CONFIG_PROXY_USERNAME=
CONFIG_PROXY_PASSWORD=
CONFIG_G_CHECK_URL_TIMEOUT=10
CONFIG_G_CHECK_URL_ATTEMPTS=5
CONFIG_CHECK_CONNECTION_IP=8.8.8.8
CONFIG_CHECK_CONNECTION_IPV6=2620:fe::fe
CONFIG_CHECK_DNS_DOMAIN=google.com
CONFIG_CHECK_DIETPI_UPDATES=1
CONFIG_CHECK_APT_UPDATES=1
CONFIG_NTP_MODE=2
CONFIG_SERIAL_CONSOLE_ENABLE=1
CONFIG_SOUNDCARD=none
CONFIG_LCDPANEL=none
CONFIG_ENABLE_IPV6=0
CONFIG_APT_RASPBIAN_MIRROR=http://raspbian.raspberrypi.org/raspbian/
CONFIG_APT_DEBIAN_MIRROR=https://deb.debian.org/debian/
CONFIG_NTP_MIRROR=debian.pool.ntp.org
#------------------------------------------------------------------------------------------------------
##### DietPi-Software settings #####
#------------------------------------------------------------------------------------------------------
SOFTWARE_DISABLE_SSH_PASSWORD_LOGINS=0
#------------------------------------------------------------------------------------------------------
##### Dev settings #####
#------------------------------------------------------------------------------------------------------
DEV_GITBRANCH=master
DEV_GITOWNER=MichaIng
#------------------------------------------------------------------------------------------------------
##### Settings, automatically added by dietpi-update #####
#------------------------------------------------------------------------------------------------------
#!/bin/bash
set -x
case $HOSTNAME in
cube01 | cube02 | cube03 | cube04) echo -n "Hostname configured correctly. Proceeding." ;;
*) echo -n "Hostnames not configured correctly. Exiting."; exit 1; ;;
esac
# play #1 - all hosts
CONTROL_NODE_IP=192.168.40.200
K3S_JOIN_TOKEN=myrandompassword
apt update -y
apt upgrade -y
cat > /etc/hosts <<EOF
127.0.0.1 localhost
192.168.40.200 cube01 cube01.local
192.168.40.201 cube02 cube02.local
192.168.40.202 cube03 cube03.local
192.168.40.203 cube04 cube04.local
EOF
apt -y install iptables
if [[ "$HOSTNAME" = "cube01" ]]; then
# play #2 - cube01
curl -sfL https://get.k3s.io | sh -s - \
--write-kubeconfig-mode 644 \
--disable servicelb \
--token $K3S_JOIN_TOKEN \
--node-ip $CONTROL_NODE_IP \
--disable-cloud-controller \
--disable local-storage
else
# play #3 - cube02, cube03, cube04
curl -sfL https://get.k3s.io | K3S_URL=https://${CONTROL_NODE_IP}:6443 K3S_TOKEN=$K3S_JOIN_TOKEN sh -
fi
# play #4 - cube01
#
# Perform manually once all nodes are up
#
# if [[ "$HOSTNAME" -eq "cube01" ]]; then
# kubectl label nodes cube01 kubernetes.io/role=worker
# kubectl label nodes cube02 kubernetes.io/role=worker
# kubectl label nodes cube03 kubernetes.io/role=worker
# kubectl label nodes cube04 kubernetes.io/role=worker
# kubectl label nodes cube01 node-type=worker
# kubectl label nodes cube02 node-type=worker
# kubectl label nodes cube03 node-type=worker
# kubectl label nodes cube04 node-type=worker
# fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment