Witam, od dwoch tygodni bawie sie w Ansible i trafilem na sciane. Chce stworzyc prosty playbook ktory ustawia hostname z predefiniowanej (jest takie slowo ? ) zmiennej. Czyli mam zalozmy 100 switchy w hosts file (same IP) i chce zeby mialy ta sama nazwe poza koncowka - np. 660-SW-1, 660-SW-2 etc az do konca petli (czyli az ustawi wszystkie).
KTos wie jak to ugryzc ? PRobowalem ale bez skutku.
---
- hosts: test
gather_facts: no
connection: local
ansible_host to zmienna ktora trzyma twój IP, funkcja split rozdzieli Ci adres ip na 4 częsci majac '.' jako rozdzielacz ( ) a [3] oznacza pole indeksowane od 0 ( czyli x.x.x.X )
Zdobywanie certów jest jak zbieranie pokemonów: Wszystkie są fajne ale każdy chce mieć Pikachu
Dzieki wszystkim, w koncu udalo sie to ugryzc wylaczajac gather_facts: false i zmieniajac ansible_hostname na inventory_hostname.
Oto dzialajacy skrypt:
qligowski pisze: ↑05 kwie 2019, 13:33
Dzieki wszystkim, w koncu udalo sie to ugryzc wylaczajac gather_facts: false i zmieniajac ansible_hostname na inventory_hostname.
W przypadku urządzeń sieciowych generalnie gather_facts przeszkadza a nie pomaga. Pamiętaj, że z punktu widzenie tego jak Ansible działa jest pewna zasadnicza różnica dt. sposobu wykonania modułu. W przypadku "tradycyjnych" modułów odnoszących sie do operacji związanych z systemem operacyjnym uruchamiasz playbook lokalnie lecz to co się dzieje w tle to połączenie SSH do hosta z inventory, ewentualne podniesienie uprawnień i wykonanie operacji bezpośrednio na hoście opisanym w inventory. Czyli tam musisz mieć odpowiednie narzędzia zainstalowane wymagane przez moduły Ansible. Moduły dla urządzeń sieciowych działają nieco inaczej, gdyż hostem wykonywania modułu jest w większości przypadków localhost, lub ewentuanie inny serwer z dostępem do urządzenia sieciowego, i łączy się on za pomocą SSH, REST API etc. do urządzenia sieciowego aby wykonać operacje. Dlatego inventory jako takie jest traktowane trochę inaczej w tym przypadku.
Warto jeszcze dopisac ze hostname_inventory jest zmienna ustawiona w hosts file a ansible_hostname jest ta ktora jest wykrywana przez Ansible bezposrednio na urzadzeniu (dlatego gather facts musi byc true)