Last active
August 30, 2020 10:04
-
-
Save jsiebens/d623dee59da35f5f28c03b49f057a772 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
export OWNER="openfaas" | |
export REPO="faasd" | |
version="" | |
echo "Finding latest version from GitHub" | |
version=$(curl -sI https://github.com/$OWNER/$REPO/releases/latest | grep -i location | awk -F"/" '{ printf "%s", $NF }' | tr -d '\r') | |
echo "$version" | |
if [ ! $version ]; then | |
echo "Failed while attempting to get latest version" | |
exit 1 | |
fi | |
SUDO=sudo | |
if [ "$(id -u)" -eq 0 ]; then | |
SUDO= | |
fi | |
verify_system() { | |
if ! [ -d /run/systemd ]; then | |
fatal 'Can not find systemd to use as a process supervisor for faasd' | |
fi | |
} | |
has_yum() { | |
[ -n "$(command -v yum)" ] | |
} | |
has_apt_get() { | |
[ -n "$(command -v apt-get)" ] | |
} | |
install_required_packages() { | |
if $(has_apt_get); then | |
$SUDO apt-get update -y | |
$SUDO apt-get install -y curl runc bridge-utils | |
elif $(has_yum); then | |
$SUDO yum check-update -y | |
$SUDO yum install -y curl runc | |
else | |
fatal "Could not find apt-get or yum. Cannot install dependencies on this OS." | |
exit 1 | |
fi | |
} | |
install_cni_plugins() { | |
cni_version=v0.8.5 | |
suffix="" | |
arch=$(uname -m) | |
case $arch in | |
x86_64 | amd64) | |
suffix=amd64 | |
;; | |
arm*) | |
suffix=arm | |
;; | |
*) | |
fatal "Unsupported architecture $arch" | |
;; | |
esac | |
$SUDO mkdir -p /opt/cni/bin | |
curl -sSL https://github.com/containernetworking/plugins/releases/download/${cni_version}/cni-plugins-linux-${suffix}-${cni_version}.tgz | $SUDO tar -xvz -C /opt/cni/bin | |
} | |
install_containerd() { | |
arch=$(uname -m) | |
case $arch in | |
x86_64 | amd64) | |
curl -sLSf https://github.com/containerd/containerd/releases/download/v1.3.7/containerd-1.3.7-linux-amd64.tar.gz | $SUDO tar -xvz --strip-components=1 -C /usr/local/bin/ | |
;; | |
arm*) | |
curl -sSL https://github.com/alexellis/containerd-armhf/releases/download/v1.3.5/containerd-1.3.5-linux-armhf.tar.gz | $SUDO tar -xvz --strip-components=1 -C /usr/local/bin/ | |
;; | |
*) | |
fatal "Unsupported architecture $arch" | |
;; | |
esac | |
$SUDO curl -SLfs https://raw.githubusercontent.com/containerd/containerd/v1.3.5/containerd.service --output /etc/systemd/system/containerd.service | |
$SUDO systemctl enable containerd | |
$SUDO systemctl start containerd | |
sleep 5 | |
} | |
install_faasd() { | |
arch=$(uname -m) | |
case $arch in | |
x86_64 | amd64) | |
suffix="" | |
;; | |
arm*) | |
suffix=-armhf | |
;; | |
*) | |
echo "Unsupported architecture $arch" | |
exit 1 | |
;; | |
esac | |
$SUDO curl -fSLs "https://github.com/openfaas/faasd/releases/download/${version}/faasd${suffix}" --output "/usr/local/bin/faasd" | |
$SUDO chmod a+x "/usr/local/bin/faasd" | |
mkdir -p /tmp/faasd-${version}-installation/hack | |
cd /tmp/faasd-${version}-installation | |
$SUDO curl -fSLs "https://raw.githubusercontent.com/openfaas/faasd/${version}/docker-compose.yaml" --output "docker-compose.yaml" | |
$SUDO curl -fSLs "https://raw.githubusercontent.com/openfaas/faasd/${version}/prometheus.yml" --output "prometheus.yml" | |
$SUDO curl -fSLs "https://raw.githubusercontent.com/openfaas/faasd/${version}/resolv.conf" --output "resolv.conf" | |
$SUDO curl -fSLs "https://raw.githubusercontent.com/openfaas/faasd/${version}/hack/faasd-provider.service" --output "hack/faasd-provider.service" | |
$SUDO curl -fSLs "https://raw.githubusercontent.com/openfaas/faasd/${version}/hack/faasd.service" --output "hack/faasd.service" | |
$SUDO /usr/local/bin/faasd install | |
sleep 5 | |
} | |
verify_system | |
install_required_packages | |
/sbin/sysctl -w net.ipv4.conf.all.forwarding=1 | |
echo "net.ipv4.conf.all.forwarding=1" | $SUDO tee -a /etc/sysctl.conf | |
install_cni_plugins | |
install_containerd | |
install_faasd |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment