diff --git a/Vagrantfile b/Vagrantfile index 77e5141..25dac2f 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -44,6 +44,6 @@ Vagrant.configure("2") do |config| ENV['ANSIBLE_ROLES_PATH'] = File.dirname(__FILE__) + "/roles" ansible.compatibility_mode = "2.0" ansible.playbook = "dev/" + PLAYBOOK + ".yml" - ansible.raw_arguments = ["--diff", "-vvv"] + ansible.raw_arguments = ["--diff", "-vvvv"] end end diff --git a/scripts/github-vagrant.sh b/scripts/github-vagrant.sh index c13189b..6260126 100755 --- a/scripts/github-vagrant.sh +++ b/scripts/github-vagrant.sh @@ -9,7 +9,7 @@ SSH_AVAILABLE=0 DEBUG_ID="[homelab-ci]" # Run Vagrant Up in the background -PLAYBOOK=dockerbox vagrant up --debug & +PLAYBOOK=dockerbox vagrant up & VAGRANT_UP_PID=$! # Initial delay @@ -18,33 +18,18 @@ sleep $INITIAL_SLEEP # Loop until timeout or breaks while [[ $ELAPSED -lt $TIMEOUT ]]; do + VAGRANT_SSH_CONFIG=$(mktemp) + vagrant ssh-config > "$VAGRANT_SSH_CONFIG" + echo "$DEBUG_ID SSH config at $VAGRANT_SSH_CONFIG" + cat "$VAGRANT_SSH_CONFIG" + echo "$DEBUG_ID Vagrant status" vagrant status - PRIVATE_KEY="$(vagrant ssh-config | grep -vE 'IdentityFile.*\.rsa$' | awk '{print $2}')" - HOST_IP="$(vagrant ssh-config | grep HostName | awk '{print $2}')" - echo "$DEBUG_ID Checking SSH connection availability..." - echo "$DEBUG_ID Private Key: $PRIVATE_KEY" - echo "$DEBUG_ID Host IP: $HOST_IP" - echo "$DEBUG_ID Running nmap to check open ports..." - - # Check if SSH is open - nmap -p 22 "$HOST_IP" | grep "22/tcp open" && SSH_AVAILABLE=1 || SSH_AVAILABLE=0 - if [[ $SSH_AVAILABLE -eq 1 ]]; then - echo "$DEBUG_ID SSH port is open, attempting connection..." - set -x - ssh -vvv -i "$PRIVATE_KEY" \ - -o UserKnownHostsFile=/dev/null \ - -o StrictHostKeyChecking=no \ - -o IdentitiesOnly=yes \ - -o PreferredAuthentications=publickey \ - -o PubkeyAuthentication=yes \ - -o PasswordAuthentication=no \ - -o KbdInteractiveAuthentication=no \ - vagrant@"$HOST_IP" cat /etc/os-release && break || echo "$DEBUG_ID SSH connection failed, retrying..." - set +x - else - echo "$DEBUG_ID SSH port not open, retrying in $SLEEP_DURATION seconds..." - fi + # SSH attempt + set -x + ssh -F "$VAGRANT_SSH_CONFIG" default 'cat /etc/os-release' && set +x; break \ + || echo "$DEBUG_ID SSH connection failed, retrying in $SLEEP_DURATION seconds..." + set +x # Sleep and start again sleep $SLEEP_DURATION