testing
This commit is contained in:
		
							
								
								
									
										60
									
								
								scripts/github-vagrant.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										60
									
								
								scripts/github-vagrant.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,60 @@ | |||||||
|  | #!/bin/bash | ||||||
|  |  | ||||||
|  | # Defaults | ||||||
|  | TIMEOUT=600 | ||||||
|  | ELAPSED=0 | ||||||
|  | INITIAL_SLEEP=60 | ||||||
|  | SLEEP_DURATION=30 | ||||||
|  | SSH_AVAILABLE=0 | ||||||
|  | DEBUG_ID="[homelab-ci]" | ||||||
|  |  | ||||||
|  | # Run Vagrant Up in the background | ||||||
|  | PLAYBOOK=dockerbox vagrant up --debug & | ||||||
|  | VAGRANT_UP_PID=$! | ||||||
|  |  | ||||||
|  | # Initial delay | ||||||
|  | echo "$DEBUG_ID Waiting for VM to start..." | ||||||
|  | sleep $INITIAL_SLEEP | ||||||
|  |  | ||||||
|  | # Loop until timeout or breaks | ||||||
|  | while [[ $ELAPSED -lt $TIMEOUT ]]; do | ||||||
|  | 	vagrant ssh-config | ||||||
|  | 	PRIVATE_KEY="$(vagrant ssh-config | grep -E '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 | ||||||
|  |  | ||||||
|  | 	# Sleep and start again | ||||||
|  | 	sleep $SLEEP_DURATION | ||||||
|  | 	((ELAPSED+=SLEEP_DURATION)) | ||||||
|  | done | ||||||
|  |  | ||||||
|  | # Success? | ||||||
|  | if [[ $SSH_AVAILABLE -ne 1 ]]; then | ||||||
|  | 	echo "$DEBUG_ID Timeout reached without successful SSH connection." | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | # Ensure the Vagrant up process completes | ||||||
|  | wait $VAGRANT_UP_PID | ||||||
		Reference in New Issue
	
	Block a user