Troubleshooting Compound Naming¶
This guide helps ye resolve common issues with hostname:session_name compound naming.
💡 Simplicity First: Most issues stem from simple causes (typos, wrong VM, missing session). Check the basics before diving into complex diagnostics.
Common Issues¶
Ambiguous Session Name¶
Symptom:
azlin connect main
Error: Ambiguous session name 'main'
Found on multiple VMs:
- myvm:main (20.12.34.56)
- prodvm:main (20.45.67.89)
Cause: Multiple VMs have sessions with the same name.
Solutions:
-
Use compound format (recommended):
-
Rename sessions for uniqueness:
-
Use VM-specific default sessions:
Session Not Found¶
Symptom:
azlin connect myvm:dev
Error: Session 'myvm:dev' not found
Available sessions on myvm: myvm:main, myvm:staging
Causes:
-
Typo in session name
-
Session not created yet
-
Wrong VM hostname
VM Not Found¶
Symptom:
Causes:
-
Typo in hostname
-
VM in different resource group
-
VM is stopped
Invalid Compound Format¶
Symptom:
Cause: Multiple colons in identifier.
Solution:
# Session names cannot contain colons
# Use hyphens or underscores instead
azlin ssh myvm --tmux-session dev-test # ✅
azlin ssh myvm --tmux-session dev_test # ✅
azlin ssh myvm --tmux-session dev:test # ❌
Connection Fails After List Shows Session¶
Symptom:
Causes:
-
VM recently stopped
-
Network connectivity issue
-
SSH key issue
Diagnostic Commands¶
List All Sessions¶
# See all hostname:session combinations
azlin list
# Wide format (no truncation)
azlin list --wide
# Include stopped VMs
azlin list --all
Verify Session Configuration¶
# Check config file
cat ~/.azlin/config.toml | grep -A 20 "\[sessions\]"
# Output shows mappings:
# [sessions]
# "myvm:main" = "20.12.34.56"
# "myvm:dev" = "20.12.34.56"
Test Connection¶
# Try direct SSH (bypass azlin)
ssh azureuser@$(azlin ip myvm)
# If works: Issue is with session resolution
# If fails: Network/SSH key issue
Understanding Resolution Order¶
azlin resolves identifiers in this order:
- Exact compound match:
hostname:session - Unique session name:
session(if only one VM has it) - Hostname with default session:
hostname(uses "azlin" session)
Example:
# Setup:
# myvm has sessions: main, dev
# prodvm has sessions: main, api
# These work:
azlin connect myvm:main # Exact match
azlin connect dev # Unique session
azlin connect prodvm:api # Exact match
# This fails (ambiguous):
azlin connect main # Both myvm and prodvm have "main"
Error Message Reference¶
"Ambiguous session name"¶
Meaning: Session name exists on multiple VMs.
Fix: Use compound format to specify which VM.
Example:
"Session not found"¶
Meaning: No session with that name exists.
Fixes:
- Check spelling:
azlin list - Create session:
azlin ssh vm --tmux-session name - Verify VM:
azlin list --all
"Invalid compound name format"¶
Meaning: Identifier has wrong format (e.g., multiple colons).
Fix: Use exactly one colon: hostname:session
Valid: - myvm:dev ✅ - prod-vm:api ✅
Invalid: - myvm:dev:test ❌ - myvm::dev ❌
"VM not found"¶
Meaning: Hostname doesn't match any VM.
Fixes:
- Verify hostname:
azlin list - Check resource group:
--resource-group - Start stopped VM:
azlin start hostname
Best Practices for Avoiding Issues¶
1. Use Consistent Naming¶
# Good: Descriptive, no colons
azlin ssh vm --tmux-session feature-auth
azlin ssh vm --tmux-session feature-api
# Bad: Generic, confusing
azlin ssh vm --tmux-session dev
azlin ssh vm --tmux-session test
2. Document Team Conventions¶
# Example convention:
# Format: {env}-{component}
# - dev-api, staging-api, prod-api
# - dev-web, staging-web, prod-web
3. Verify Before Scripting¶
# Always test manually first
azlin connect myvm:main
# Then script it
#!/bin/bash
azlin exec myvm:main "deploy.sh"
4. Use --verbose for Debugging¶
# See resolution details
azlin --verbose connect myvm:main
# Output shows:
# Resolving identifier: myvm:main
# Detected compound format
# hostname=myvm, session=main
# Found VM: myvm (20.12.34.56)
# Found session: main
# Connecting...
Advanced Troubleshooting¶
Session Cache Issues¶
If azlin list shows stale sessions:
Hostname Resolution¶
If hostnames not resolving:
# Check Azure VM names
az vm list --output table
# Verify config matches Azure
cat ~/.azlin/config.toml | grep -A 10 "\[vms\]"
Network Debugging¶
# Test Azure connectivity
az account show
# Test SSH directly
ssh -v azureuser@$(azlin ip myvm)
# Check bastion availability
azlin bastion list
Getting Help¶
If issues persist:
-
Check version:
-
Collect diagnostics:
-
Ask for help:
- GitHub Issues: https://github.com/rysweet/azlin/issues
- Discussions: https://github.com/rysweet/azlin/discussions
See Also¶
- Compound Naming Guide - Basic usage
- CLI Reference - Command details
- Session Management - Advanced usage
- General Troubleshooting - Other common issues