Skip to content

Latest commit

 

History

History
203 lines (147 loc) · 5.65 KB

File metadata and controls

203 lines (147 loc) · 5.65 KB

Ansible Tower CLI 3.3.10 - Supporto Gateway

🎯 Riepilogo Modifiche

Questa versione di ansible-tower-cli è stata modificata per supportare i gateway (hop nodes) introdotti in Ansible Tower 3.6+ e compatibili con Ansible 2.6+.

✅ Cosa è stato fatto

Approccio Scelto

Invece di creare un nuovo file gateway.py, abbiamo esteso la risorsa instance.py esistente.

Perché questa scelta?

  • I gateway NON sono una risorsa API separata, ma un tipo di instance (hop node)
  • Mantiene la compatibilità backward con versioni precedenti di Tower
  • Meno codice duplicato e più facile da mantenere
  • Riflette l'architettura reale di Ansible Tower

File Modificati

1. tower_cli/resources/instance.py

Aggiunti nuovi campi:

  • node_type - execution, hop (gateway), o hybrid
  • node_state - stato del nodo nella mesh
  • listener_port - porta receptor per gateway
  • cpu, memory, last_seen - monitoraggio avanzato

Aggiunti nuovi comandi:

  • tower-cli instance health --instance <id>
  • tower-cli instance jobs --instance <id>

2. tower_cli/constants.py

  • Versione aggiornata a 3.3.10

🚀 Come Usare

Installazione

cd /myData/git/pythonVENV/ansible-tower-cli-3.3.9
pip install --upgrade .

Comandi Principali

Elencare tutte le istanze (inclusi gateway)

tower-cli instance list

Filtrare solo i gateway

tower-cli instance list --node-type hop

Visualizzare dettagli di un gateway

tower-cli instance get --hostname gateway-01

Verificare la salute di un gateway

tower-cli instance health --instance gateway-01

Elencare job su un'istanza

tower-cli instance jobs --instance gateway-01

Configurare un nodo come gateway

tower-cli instance modify --hostname node-01 --node-type hop

📊 Tipi di Nodo

  • execution: Nodi che eseguono i job Ansible
  • hop (gateway): Nodi che instradano il traffico ma non eseguono job
  • hybrid: Nodi che fanno entrambe le cose

🔄 Compatibilità

Funziona con:

  • ✅ Ansible Tower 3.6+
  • ✅ AWX 9.0+
  • ✅ Ansible 2.6+

Compatibilità Backward:

  • ✅ Tower < 3.6: i nuovi campi vengono ignorati
  • ✅ Comandi esistenti funzionano normalmente
  • ✅ Nessun breaking change

📖 Documentazione Completa

Consulta i file di documentazione per maggiori dettagli:

  • GATEWAY_SUPPORT.md - Guida completa con esempi e troubleshooting
  • CHANGELOG_3.3.10.md - Dettaglio tecnico delle modifiche

🧪 Testing

Per testare le modifiche:

# Configura connessione
tower-cli config host https://your-tower
tower-cli config username admin
tower-cli config password your-password

# Test base
tower-cli instance list

# Test nuove funzionalità (richiede Tower 3.6+)
tower-cli instance health --instance 1
tower-cli instance jobs --instance 1

📝 Note Importanti

  1. Nessun file gateway.py: Abbiamo valutato e scelto di NON creare un file separato
  2. Estensione di instance.py: Approccio più pulito e architetturalmente corretto
  3. Backward compatible: Funziona anche con versioni vecchie di Tower
  4. Fallback automatici: Se gli endpoint non esistono, usa alternative

🔧 Struttura Modifiche

tower_cli/
├── resources/
│   └── instance.py          [MODIFICATO] Aggiunto supporto gateway
├── constants.py             [MODIFICATO] Versione 3.3.10
├── GATEWAY_SUPPORT.md       [NUOVO] Documentazione completa
├── CHANGELOG_3.3.10.md      [NUOVO] Log modifiche tecniche
└── README_IT.md             [NUOVO] Questo file

🎓 Esempio Completo

# 1. Installazione
cd /myData/git/pythonVENV/ansible-tower-cli-3.3.9
pip install --upgrade .

# 2. Configurazione
tower-cli config host https://tower.example.com
tower-cli config username admin
tower-cli config password mypassword

# 3. Verifica versione
tower-cli --version
# Output: Tower CLI 3.3.10

# 4. Lista tutte le istanze
tower-cli instance list

# 5. Lista solo gateway
tower-cli instance list --node-type hop

# 6. Dettagli gateway specifico
tower-cli instance get --hostname gateway-dmz

# 7. Salute del gateway
tower-cli instance health --instance gateway-dmz --format json

# 8. Job in esecuzione
tower-cli instance jobs --instance gateway-dmz

❓ Domande Frequenti

Q: Perché non avete creato gateway.py?

A: Perché i gateway non sono una risorsa API separata in Tower. Sono un tipo di instance con node_type=hop. Estendere instance.py è l'approccio corretto.

Q: Funziona con Tower 3.5?

A: Sì! I nuovi campi vengono semplicemente ignorati. Tutto il resto funziona normalmente.

Q: Come faccio a sapere se il mio Tower supporta gateway?

A: Prova tower-cli instance list. Se vedi il campo node_type, il tuo Tower supporta mesh topology.

Q: Posso creare un gateway via CLI?

A: No, i gateway devono essere installati e configurati a livello di sistema. Puoi solo modificare le proprietà di istanze esistenti.

🐛 Troubleshooting

Errore: "Field 'node_type' not found"

→ Il tuo Tower non supporta mesh topology. Campi ignorati, tutto il resto funziona.

Errore: "The requested object could not be found" su health

→ Normale su Tower < 3.6. Viene usato il fallback automatico.

I gateway non appaiono

→ Usa --all-pages: tower-cli instance list --all-pages

📞 Supporto

Per problemi o domande:

  1. Consulta GATEWAY_SUPPORT.md per documentazione dettagliata
  2. Controlla CHANGELOG_3.3.10.md per dettagli tecnici
  3. Verifica la versione di Tower (richiede 3.6+ per tutte le funzionalità)

Versione: 3.3.10 Compatibilità: Ansible Tower 3.6+ / AWX 9.0+ / Ansible 2.6+ Data: 2026-01-21