Prepare, configure, and manage Firecracker microVMs in seconds!
virtualization linux microvm firecracker

Merge pull request #2 from tsirysndr/fix/ssh

fix(ssh): wait for ssh to be available

authored by tsiry-sandratraina.com and committed by

GitHub 5ba2e1d6 fc2c030c

+24 -12
+24 -12
crates/firecracker-vm/src/guest.rs
··· 6 6 7 7 pub fn configure_guest_network(key_name: &str) -> Result<()> { 8 8 println!("[+] Configuring network in guest..."); 9 - run_command( 10 - "ssh", 11 - &[ 12 - "-i", 13 - key_name, 14 - "-o", 15 - "StrictHostKeyChecking=no", 16 - &format!("root@{}", GUEST_IP), 17 - &format!("echo 'nameserver {}' > /etc/resolv.conf", BRIDGE_IP), 18 - ], 19 - false, 20 - )?; 9 + const MAX_RETRIES: u32 = 20; 10 + let mut retries = 0; 11 + loop { 12 + if run_command( 13 + "ssh", 14 + &[ 15 + "-i", 16 + key_name, 17 + "-o", 18 + "StrictHostKeyChecking=no", 19 + &format!("root@{}", GUEST_IP), 20 + &format!("echo 'nameserver {}' > /etc/resolv.conf", BRIDGE_IP), 21 + ], 22 + false, 23 + ) 24 + .is_ok() 25 + || retries >= MAX_RETRIES 26 + { 27 + break; 28 + } 29 + println!("[-] Waiting for ssh to be available..."); 30 + std::thread::sleep(std::time::Duration::from_millis(100)); 31 + retries += 1; 32 + } 21 33 Ok(()) 22 34 }