blob: 978d5e82411564c6324e9895e7f61c818a1cad5d [file] [log] [blame]
#!/bin/bash
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
SERVER="$1"
# if not provided try to retrieve the public it
if test -z "$SERVER"
then SERVER="$(curl https://ipecho.net/plain)"
fi
if test -z "$SERVER"
then SERVER="$(curl ifconfig.me)"
fi
export SERVER
# install microk8s
apt-get update
apt-get install -y snapd curl grep sudo
snap install microk8s --classic
microk8s stop
cp /var/snap/microk8s/current/certs/csr.conf.template /tmp/in
# script to try to give accettable values for ip and dns name
python3 <<EOF >/var/snap/microk8s/current/certs/csr.conf.template
import os, socket, re
ip_address = r"^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$"
server = os.environ.get("SERVER")
if re.match(ip_address, server):
host_ip = server
host_name = f"{server}.nip.io"
else:
host_name = server
host_ip = socket.gethostbyname(server)
with open("/tmp/in", 'r') as f: lines = f.readlines()
ip = -1
dns= -1
for i in range(len(lines)-1, 0, -1):
if ip == -1 and lines[i].startswith("IP."): ip = i
if dns == -1 and lines[i].startswith("DNS."): dns = i
for i in range(0, len(lines)):
print(lines[i],end="")
if i == ip:
n = int(lines[ip].split(".")[1].split(" ")[0])+1
print(f"IP.{n} =", host_ip)
if i == dns:
n = int(lines[dns].split(".")[1].split(" ")[0])+1
print(f"DNS.{n} =", host_name )
EOF
microk8s start
while microk8s kubectl get nodes | grep NotReady
do echo Waiting for Ready ; sleep 5
done
microk8s enable hostpath-storage dns ingress cert-manager