Witam,
Zaczynam bawic sie w programowanie sieci i z tego co zdazylem wyczytac Ansible (w duzym ogolnieniu 'wciska; skrypty) uzywa YAML, Netmiko mozna uzywac Pythona do skryptow. JA kw takim razie uzywac Ansible i Pythona albo zwykle warunki, petle itp w YAML.
Nie bardzo rozumiem gdzie zaczac ale zalozmy ze chce popchac konfiguracje do 20 switchy ktore maja rozne VLAN/ addresacje zeby zmienil Access listy bazujac na interfejsach jakie maja. Probowalem uzyc Ansible ale z tego co widzie YAML nie ma conditionals, czy w takim razie mozna uzyc Pythona w srodku YAML?
Ansible vs Netmiko / YAML vs Python
- peper
- CCIE / Site Admin
- Posty: 5005
- Rejestracja: 13 sie 2004, 12:19
- Lokalizacja: Warsaw, PL
- Kontakt:
Re: Ansible vs Netmiko / YAML vs Python
Bo YAML to nie jest język programowania a język pozwalający na ustrukturyzowaną prezentację różnego rodzaju danych. W Ansible w YAML pisane są playbooki, czyli scenariusze wykonywania działań, są konstrukcje warunkowe w postaci choćby when, które zastępuje if, lecz nie korzytasz z nich w taki typowy sposób znany z C, Javy czy Pythona.
W Ansible moduły pisane są w Pythonie, i to one wykonują odpowiednie operacje, do których dane ty podajesz w playbooku. To tak w uproszczeniu oczywiście.
W Ansible moduły pisane są w Pythonie, i to one wykonują odpowiednie operacje, do których dane ty podajesz w playbooku. To tak w uproszczeniu oczywiście.
Szkoła DevNet: https://szkoladevnet.pl
Facebook: https://www.facebook.com/Piotr.Wojciechowski.CCIE
LinkedIn: https://www.linkedin.com/in/peper
Twitter: https://www.twitter.com/PiotrW_CCIE
"Zapomniałem że od kilku lat wszyscy giną jakby nigdy ich nie miało być
w stu tysiącach jednakowych miast giną jak psy"
Facebook: https://www.facebook.com/Piotr.Wojciechowski.CCIE
LinkedIn: https://www.linkedin.com/in/peper
Twitter: https://www.twitter.com/PiotrW_CCIE
"Zapomniałem że od kilku lat wszyscy giną jakby nigdy ich nie miało być
w stu tysiącach jednakowych miast giną jak psy"
Re: Ansible vs Netmiko / YAML vs Python
Albo może taki przykład pętli (to dla ACI, ale na zwykłego IOS/NXOS będzie podobnie).
Fragment "tworzący" (playbook):
Fragment "ze zmiennymi":
A co do "każdy słicz ma inne interfejsy, i co teraz" - w Ansible masz coś o nazwie gather_facts. Zbiera toto informację z pudełka i zapisuje sobie w ansible_facts (możesz to drzewko później przejrzeć, chociażby przy użyciu tasku debug, i używać w swoich zmiennych).
Fragment "tworzący" (playbook):
Kod: Zaznacz cały
- name: Create those EPgs
aci_epg:
<<: *aci_login
state: "present"
tenant: "{{ tenant }}"
ap: "{{ ap }}"
epg: "{{ item.epg }}"
bd: "{{ item.bd }}"
descr: "EPG Created Using Ansible"
with_items: "{{ epgs }}"
tags: epg
Kod: Zaznacz cały
epgs:
- epg: "GOLD"
bd: "ROUTED"
- epg: "SILVER"
bd: "ROUTED"
- epg: "MIGRATION"
bd: "LEGACY"
A co do "każdy słicz ma inne interfejsy, i co teraz" - w Ansible masz coś o nazwie gather_facts. Zbiera toto informację z pudełka i zapisuje sobie w ansible_facts (możesz to drzewko później przejrzeć, chociażby przy użyciu tasku debug, i używać w swoich zmiennych).