CORD-1811 Add Vagrant ssh-config to ~/.ssh/config
Change-Id: Ie3630f2990af30528b4f966d8b6d98fc040d94ae
diff --git a/Makefile b/Makefile
index fe2775e..a977e98 100644
--- a/Makefile
+++ b/Makefile
@@ -58,7 +58,6 @@
VAGRANT_VMS ?= $(HEADNODE)
VAGRANT_SWITCHES ?= leaf1
VAGRANT_CWD ?= $(SCENARIOS_D)/$(SCENARIO)/
-VAGRANT_SSH_CONF ?= $(GENCONFIG_D)/vagrant.ssh_config
# Virsh config
VIRSH_CORDDEV_DOMAIN ?= cord_corddev
@@ -197,8 +196,8 @@
touch $@
$(M)/vagrant-ssh-install: | $(M)/vagrant-up
- $(VAGRANT) ssh-config $(VAGRANT_VMS) > $(VAGRANT_SSH_CONF) $(LOGCMD)
- $(BUILD)/scripts/vagrant-ssh-install.sh "$(VAGRANT_SSH_CONF)" "Include $(abspath $(GENCONFIG_D))/*.ssh_config" $(LOGCMD)
+ $(VAGRANT) ssh-config $(VAGRANT_VMS) > /tmp/vagrant_ssh_config
+ $(ANSIBLE_PB) $(BUILD)/ansible/vagrant-ssh-install.yml $(LOGCMD)
touch $@
$(M)/config-ssh-key: | $(M)/vagrant-up
diff --git a/ansible/roles/vagrant-ssh-install/tasks/main.yml b/ansible/roles/vagrant-ssh-install/tasks/main.yml
new file mode 100644
index 0000000..b1da8c7
--- /dev/null
+++ b/ansible/roles/vagrant-ssh-install/tasks/main.yml
@@ -0,0 +1,35 @@
+---
+
+# 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.
+
+- name: Ensure .ssh directory exists
+ file:
+ path: "{{ ansible_env.HOME }}/.ssh"
+ state: directory
+ mode: 0700
+
+- name: Ensure SSH config file exists
+ file:
+ path: "{{ ansible_env.HOME }}/.ssh/config"
+ state: touch
+ mode: 0600
+
+# Assumes /tmp/vagrant_ssh_config has already been created...
+- name: Add SSH config block to config file
+ blockinfile:
+ path: "{{ ansible_env.HOME }}/.ssh/config"
+ state: present
+ block: "{{ lookup('file', '/tmp/vagrant_ssh_config' ) }}"
+ marker: "# {mark} CORD VAGRANT SSH"
diff --git a/ansible/vagrant-ssh-install.yml b/ansible/vagrant-ssh-install.yml
new file mode 100644
index 0000000..81166c5
--- /dev/null
+++ b/ansible/vagrant-ssh-install.yml
@@ -0,0 +1,21 @@
+---
+
+# 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.
+
+- hosts: localhost
+ serial: 1
+ connection: local
+ roles:
+ - vagrant-ssh-install
diff --git a/scripts/vagrant-ssh-install.sh b/scripts/vagrant-ssh-install.sh
deleted file mode 100755
index 91bdde2..0000000
--- a/scripts/vagrant-ssh-install.sh
+++ /dev/null
@@ -1,79 +0,0 @@
-#!/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
-