From c5d88338684a9d189a41150c17d7106fc37e5294 Mon Sep 17 00:00:00 2001 From: Kris Lamoureux Date: Thu, 2 May 2024 01:04:03 -0400 Subject: [PATCH] testing --- .github/workflows/vagrant.yml | 56 ++++++++++++++++++++++++++++++----- Vagrantfile | 3 +- 2 files changed, 50 insertions(+), 9 deletions(-) diff --git a/.github/workflows/vagrant.yml b/.github/workflows/vagrant.yml index bebdcec..d9c5b38 100644 --- a/.github/workflows/vagrant.yml +++ b/.github/workflows/vagrant.yml @@ -8,7 +8,7 @@ on: jobs: homelab-ci: - runs-on: macos-latest + runs-on: macos-13 steps: - uses: actions/checkout@v3 @@ -21,19 +21,59 @@ jobs: restore-keys: | ${{ runner.os }}-vagrant- + - name: Install VirtualBox + run: brew install --cask virtualbox + + - name: Install Vagrant + run: brew install --cask vagrant + - name: Install Ansible - run: brew install ansible@7 + run: brew install ansible - name: Software Versions run: | - printf "VirtualBox " - vboxmanage --version + printf "VirtualBox "; vboxmanage --version vagrant --version - export PATH="/usr/local/opt/ansible@7/bin:$PATH" ansible --version + - name: Install nmap + run: brew install nmap + - name: Vagrant Up with Dockerbox Playbook + env: + SSH_AUTH_SOCK: '' run: | - export PATH="/usr/local/opt/ansible@7/bin:$PATH" - PLAYBOOK=dockerbox vagrant up - vagrant ssh -c "docker ps" + ssh-add -D && echo "[homelab-ci] SSH Agent disabled" + PLAYBOOK=dockerbox vagrant up --debug & + VAGRANT_UP_PID=$! + echo "[homelab-ci] Waiting for VM to start..." + sleep 60 + TIMEOUT=600 + ELAPSED=0 + SLEEP_DURATION=30 + SSH_AVAILABLE=0 + while [[ $ELAPSED -lt $TIMEOUT ]]; do + ls -al + PRIVATE_KEY="$(find .vagrant -name "private_key" 2>/dev/null | sort)" + HOST_IP="$(vagrant ssh-config | grep HostName | awk '{print $2}')" + echo "[homelab-ci] Checking SSH connection availability..." + echo "[homelab-ci] Private Key: $PRIVATE_KEY" + echo "[homelab-ci] Host IP: $HOST_IP" + echo "[homelab-ci] Running nmap to check open ports..." + nmap -p 22 "$HOST_IP" | grep "22/tcp open" && SSH_AVAILABLE=1 || SSH_AVAILABLE=0 + if [[ $SSH_AVAILABLE -eq 1 ]]; then + echo "[homelab-ci] SSH port is open, attempting connection..." + ssh -vvv -i "$PRIVATE_KEY" \ + -o UserKnownHostsFile=/dev/null \ + -o StrictHostKeyChecking=no \ + -v vagrant@"$HOST_IP" && break || echo "[homelab-ci] SSH connection failed, retrying..." + else + echo "[homelab-ci] SSH port not open, retrying in $SLEEP_DURATION seconds..." + fi + sleep $SLEEP_DURATION + ((ELAPSED+=SLEEP_DURATION)) + done + if [[ $SSH_AVAILABLE -ne 1 ]]; then + echo "[homelab-ci] Timeout reached without successful SSH connection." + fi + wait $VAGRANT_UP_PID # Ensure the Vagrant up process completes diff --git a/Vagrantfile b/Vagrantfile index 4da8435..77e5141 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -36,6 +36,7 @@ Vagrant.configure("2") do |config| config.vm.provider :virtualbox do |vbox| vbox.cpus = VAGRANT_CPUS vbox.memory = VAGRANT_MEM + vbox.gui = true end # Provision with Ansible @@ -43,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"] + ansible.raw_arguments = ["--diff", "-vvv"] end end