#!/usr/bin/env bash # Define a function to read from the terminal read_from_terminal() { # Check if a tty is available if [[ -t 0 ]]; then # Use 'read -p' if standard input is an interactive terminal read -p "$1" user_input else printf "\n" > /dev/tty # If not interactive (e.g. piped), read from /dev/tty # The '< /dev/tty' redirects input for 'read' to the terminal device read -p "$1" user_input < /dev/tty fi echo "$user_input" } server_url=$(read_from_terminal "Server URL (public DNS name or IP address for the k3s server): ") workdir=$(mktemp -d /tmp/encode-k3s-yaml.XXXXXX) cd $workdir echo "Working directory: $workdir" pwd cp /etc/rancher/k3s/k3s.yaml ./ # update server url sed -i "s/127.0.0.1/$server_url/g" k3s.yaml # append tls-server-name: kubernetes after 'server:' line sed -i "/server:/a\ \ \ \ tls-server-name: kubernetes" k3s.yaml # base64 encode the yaml file base64 -w 0 -i k3s.yaml > k3s.yaml.b64 echo "Base64 encoded k3s.yaml for use as K3S_YAML for deployment scripts:" cat k3s.yaml.b64 # cleanup rm -rf $workdir