Last active
June 21, 2017 12:34
-
-
Save snelis/a536a95b858f3b4ece40f3ac53ff1ebe to your computer and use it in GitHub Desktop.
This file contains 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 | |
set -e | |
: ${IP?Missing desired ip to configure} | |
: ${HOSTNAME?Missing desired hostname to configure} | |
: ${ROLE?Missing desired role to configure (master,node)} | |
: ${NVIDIA?Missing nvidia flag (true,false)} | |
: ${INGRESS?Missing ingress flag (true,false)} | |
# Common functions to use in different files | |
cat > ~/functions.sh << \EOT | |
#!/usr/bin/env bash | |
set -e | |
function install_aur() { | |
for pkg in $@; | |
do | |
mkdir -p ~/packages/$pkg | |
cd ~/packages/$pkg | |
if [ ! -d ".git" ]; then | |
git clone https://aur.archlinux.org/$pkg.git . | |
fi | |
makepkg -sric --noconfirm | |
done; | |
} | |
function change_ip() { | |
CURRENT_IP=`cat /etc/netctl/main_network | grep 'Address=' | cut -d "'" -f2 | cut -d/ -f1` | |
sudo sed -i -e "s/$CURRENT_IP/$1/g" /etc/netctl/main_network | |
} | |
EOT | |
# Write the script to do the nvidia install | |
cat > ~/install_nvidia.sh << \EOT | |
#!/usr/bin/env bash | |
source ~/functions.sh | |
sudo pacman -Syu --noconfirm nvidia cuda | |
install_aur nvidia-docker | |
sudo systemctl enable nvidia-docker --now | |
# Trigger the volume with the drivers | |
nvidia-docker run --rm weriotoss/alpine | |
EOT | |
# Source | |
source ~/functions.sh | |
# Make the IP static | |
change_ip $IP | |
sudo hostnamectl set-hostname $HOSTNAME | |
# Make the IP static | |
sudo netctl restart main_network | |
sudo systemctl restart sshd | |
# install base tools | |
sudo pacman -Syu --noconfirm sudo base-devel htop git docker | |
# install docker | |
sudo usermod -a -G docker $USER | |
newgrp docker | |
#Install go 1.7 | |
mkdir -p ~/packages/go | |
cd ~/packages/go | |
curl -L https://archive.archlinux.org/packages/g/go/go-2%3A1.7.5-1-x86_64.pkg.tar.xz -O | |
sudo pacman -U go-2%3A1.7.5-1-x86_64.pkg.tar.xz | |
# install kubernetes | |
install_aur kubernetes cni | |
sudo mkdir -p /etc/systemd/system/kubelet.service.d/ | |
sudo bash -c "cat > /etc/systemd/system/kubelet.service.d/10-kubeadm.conf" << \EOT | |
[Service] | |
Environment="KUBELET_KUBECONFIG_ARGS=--kubeconfig=/etc/kubernetes/kubelet.conf --require-kubeconfig=true" | |
Environment="KUBELET_SYSTEM_PODS_ARGS=--pod-manifest-path=/etc/kubernetes/manifests --allow-privileged=true" | |
Environment="KUBELET_NETWORK_ARGS=--network-plugin=cni --cni-conf-dir=/etc/cni/net.d --cni-bin-dir=/opt/cni/bin" | |
Environment="KUBELET_DNS_ARGS=--cluster-dns=10.96.0.10 --cluster-domain=cluster.we-riot.local" | |
Environment="KUBELET_AUTHZ_ARGS=--authorization-mode=Webhook --client-ca-file=/etc/kubernetes/pki/ca.crt" | |
Environment="KUBELET_CGROUP_ARGS=--cgroup-driver=cgroupfs" | |
Environment="KUBELET_EXTRA_ARGS=--feature-gates=Accelerators=true" | |
ExecStart= | |
ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_SYSTEM_PODS_ARGS $KUBELET_NETWORK_ARGS $KUBELET_DNS_ARGS $KUBELET_AUTHZ_ARGS $KUBELET_CGROUP_ARGS $KUBELET_EXTRA_ARGS | |
EOT | |
sudo systemctl enable docker | |
sudo systemctl enable kubelet | |
sudo kubeadm reset | |
if [ $NVIDIA ]; then | |
sh ~/install_nvidia.sh | |
fi | |
if [ $ROLE = "master" ]; then | |
(sleep 5; sudo systemctl start kubelet) & | |
sudo kubeadm init | |
mkdir -p $HOME/.kube | |
sudo cp /etc/kubernetes/admin.conf $HOME/.kube/config | |
sudo chown $(id -u):$(id -g) $HOME/.kube/config | |
fi | |
if [ $ROLE = "node" ]; then | |
sudo kubeadm join --token=2cb382.c5bae9b829dbc8d8 192.168.70.3:6443 | |
sudo systemctl start kubelet | |
fi | |
if [ $INGRESS ]; then | |
sed -E \ | |
's/(KUBELET_EXTRA_ARGS=.*)\"/\1 --register-with-taints=dedicated=ingress:NoSchedule\"/g' \ | |
/etc/systemd/system/kubelet.service.d/10-kubeadm.conf | |
fi |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment