blob: 91bdde255dec162d823818095dbd03685447f6e0 [file] [log] [blame]
#!/usr/bin/env bash
# Copyright 2017-present Open Networking Foundation
#
# Licensed 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.
# vagrant-ssh-install.sh
# Checks to see if vagrant SSH key configuration is installed.
set -e -u -o pipefail
VAGRANT_SSH_CONFIG="$1"
SSH_INCLUDE="Include ${VAGRANT_SSH_CONFIG}"
SSH_WILDCARD="$2"
USER_SSH_DIR="${HOME}/.ssh"
USER_SSH_CONFIG="$USER_SSH_DIR/config"
# check if we have a new enough version of SSH to deal with "Include" directive
# per: https://www.openssh.com/txt/release-7.3
if `ssh -V 2>&1 | perl -ne '/OpenSSH_([\d\.]{3})/ && \$1 >= 7.3 ? exit 0 : exit 1'`
then
# ssh is >= 7.3, supports "Include"
if [ -e $USER_SSH_CONFIG ]
then
if grep -F "$SSH_WILDCARD" $USER_SSH_CONFIG
then
echo "SSH configured to import Vagrant SSH config, done!"
else
echo "SSH not configured to import Vagrant SSH config."
echo "Please add this line to the *TOP* your $USER_SSH_CONFIG file:"
echo ""
echo "$SSH_WILDCARD"
echo ""
echo "Then reattempt the build."
exit 1
fi
else
echo "User SSH config file doesn't exist at $USER_SSH_CONFIG"
echo "Creating a minimal $USER_SSH_CONFIG file that imports $SSH_WILDCARD"
mkdir -p "$USER_SSH_DIR"
echo "$SSH_WILDCARD" > $USER_SSH_CONFIG
echo "Done!"
fi
else
# ssh is < 7.3, doesn't support "Include"
if [ -e $USER_SSH_CONFIG ]
then
echo "User SSH config file exists at $USER_SSH_CONFIG"
echo "SSH is an older than 7.3, unable to Include ssh config file with Vagrant config."
if cmp -s "$VAGRANT_SSH_CONFIG" "$USER_SSH_CONFIG"
then
echo "Contents of $VAGRANT_SSH_CONFIG and $USER_SSH_CONFIG are identical. Done!"
else
echo "Add the contents of $VAGRANT_SSH_CONFIG to $USER_SSH_CONFIG manually,"
echo "replacing any previous similar entries, then reattempt the build."
exit 1
fi
else
echo "User SSH config file doesn't exist at $USER_SSH_CONFIG"
echo "SSH is an older than 7.3, unable to Include Vagrant config,"
echo "so copying $VAGRANT_SSH_CONFIG to $USER_SSH_CONFIG"
mkdir -p "$USER_SSH_DIR"
cp $VAGRANT_SSH_CONFIG $USER_SSH_CONFIG
echo "Done!"
fi
fi