Ansible vs Netmiko / YAML vs Python

Wszystko o automatyzacji w sieciach i DC

Moderatorzy: mikrobi, aron, garfield, gangrena, Seba

Wiadomość
Autor
qligowski
wannabe
wannabe
Posty: 224
Rejestracja: 16 maja 2014, 18:35

Ansible vs Netmiko / YAML vs Python

#1

#1 Post autor: qligowski » 22 mar 2019, 12:11

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?

Awatar użytkownika
peper
CCIE / Site Admin
CCIE / Site Admin
Posty: 4894
Rejestracja: 13 sie 2004, 12:19
Lokalizacja: Warsaw, PL
Kontakt:

Re: Ansible vs Netmiko / YAML vs Python

#2

#2 Post autor: peper » 22 mar 2019, 12:42

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.
Facebook: https://www.facebook.com/Piotr.Wojciechowski.CCIE
LinkedIn: http://www.linkedin.com/in/peper
Twitter: http://www.twitter.com/PiotrW_CCIE
Blog: http://blog.it-playground.eu

"Zapomniałem że od kilku lat wszyscy giną jakby nigdy ich nie miało być
w stu tysiącach jednakowych miast giną jak psy"

Awatar użytkownika
konradrz
CCIE
CCIE
Posty: 353
Rejestracja: 23 sty 2008, 14:21
Lokalizacja: Singapore, SG
Kontakt:

Re: Ansible vs Netmiko / YAML vs Python

#3

#3 Post autor: konradrz » 22 mar 2019, 14:55

Albo może taki przykład pętli (to dla ACI, ale na zwykłego IOS/NXOS będzie podobnie).

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 
Fragment "ze zmiennymi":

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).

ODPOWIEDZ