|
| 1 | +#!/usr/bin/env bash |
| 2 | + |
| 3 | +# Installs azure-vnet CNI plugins on a Linux node. |
| 4 | + |
| 5 | +# Arguments. |
| 6 | +PLUGIN_VERSION=$1 |
| 7 | +CNI_VERSION=$2 |
| 8 | +CNI_BIN_DIR=/opt/cni/bin |
| 9 | +CNI_NETCONF_DIR=/etc/cni/net.d |
| 10 | + |
| 11 | +function usage |
| 12 | +{ |
| 13 | + printf "Installs azure-vnet CNI plugins.\n" |
| 14 | + printf "Usage: install-cni-plugin version [cniVersion]\n" |
| 15 | +} |
| 16 | + |
| 17 | +if [ "$PLUGIN_VERSION" = "" ]; then |
| 18 | + usage |
| 19 | + exit 1 |
| 20 | +fi |
| 21 | + |
| 22 | +if [ "$CNI_VERSION" = "" ]; then |
| 23 | + CNI_VERSION=v0.4.0 |
| 24 | +fi |
| 25 | + |
| 26 | +# Create CNI directories. |
| 27 | +printf "Creating CNI directories.\n" |
| 28 | +mkdir -p $CNI_BIN_DIR |
| 29 | +mkdir -p $CNI_NETCONF_DIR |
| 30 | + |
| 31 | +# Install ebtables. |
| 32 | +if [ ! -e /sbin/ebtables ] |
| 33 | +then |
| 34 | + printf "Installing ebtables package..." |
| 35 | + apt-get update |
| 36 | + apt-get install -y ebtables |
| 37 | + printf "done.\n" |
| 38 | +else |
| 39 | + echo "Package ebtables is already installed." |
| 40 | +fi |
| 41 | +/sbin/ebtables --list > /dev/null |
| 42 | + |
| 43 | +# Install azure-vnet CNI plugins. |
| 44 | +printf "Installing azure-vnet CNI plugin for multitenancy version $PLUGIN_VERSION to $CNI_BIN_DIR..." |
| 45 | +/usr/bin/curl -sSL https://github.com/Azure/azure-container-networking/releases/download/$PLUGIN_VERSION/azure-vnet-cni-multitenancy-linux-amd64-$PLUGIN_VERSION.tgz > $CNI_BIN_DIR/azure-vnet.tgz |
| 46 | +tar -xzf $CNI_BIN_DIR/azure-vnet.tgz -C $CNI_BIN_DIR |
| 47 | +printf "done.\n" |
| 48 | + |
| 49 | +# Install azure-vnet CNI network configuration file. |
| 50 | +printf "Installing azure-vnet CNI network configuration file to $CNI_NETCONF_DIR..." |
| 51 | +mv $CNI_BIN_DIR/*.conflist $CNI_NETCONF_DIR |
| 52 | +printf "done.\n" |
| 53 | + |
| 54 | +# Install loopback plugin. |
| 55 | +printf "Installing loopback CNI plugin version $CNI_VERSION to $CNI_BIN_DIR..." |
| 56 | +/usr/bin/curl -sSL https://github.com/containernetworking/cni/releases/download/$CNI_VERSION/cni-amd64-$CNI_VERSION.tgz > $CNI_BIN_DIR/cni.tgz |
| 57 | +tar -xzf $CNI_BIN_DIR/cni.tgz -C $CNI_BIN_DIR ./loopback |
| 58 | +printf "done.\n" |
| 59 | + |
| 60 | +# Cleanup. |
| 61 | +rm $CNI_BIN_DIR/*.tgz |
| 62 | +chown root:root $CNI_BIN_DIR/* |
| 63 | + |
| 64 | +printf "azure-vnet CNI plugin is successfully installed.\n" |
0 commit comments