OpenSwitch a Ansible automatizace prakticky (2): připojujeme Ansible

V minulém díle jsme si rozjeli Lead-Spine OpenSwitch topologii s využitím Dockeru a skript nám vygeneroval také hosts file pro Ansible. Dnes se vyzkoušíme napojení na Ansible 2.1.

Příprava Ansible a vašeho VM

První co potřebujeme udělat je nainstalovat Ansible minimálně ve verzi 2.1. Postup najdete zde: http://docs.ansible.com/ansible/intro_installation.html

Dále vyřešíme nastavení SSH klienta v naší VM. Výchozí Linux chování je, že se pro každou IP ukládá veřejný klíč připojeného systému. To má pro nás dvě nevýhody. Jednak se Linux při prvním připojení ptá, zda je to v pořádku (což nás docela zdržuje). Druhá věc je, že pokud prostředí zrušíte a vytvoříte znovu, klíče se změní a je potřeba je ručně vymazat. Pro naše testovací prostředí tedy budeme chtít otázky vypnout a klíče neukládat. Uděláme to tak, že vytvoříme soubor ~/.ssh/config s tímto obsahem:

Host *
    StrictHostKeyChecking no
    UserKnownHostsFile /dev/null

Na mém systému bylo také nutné udělat drobou rekonfiguraci Ansible – vyexportujte tuto proměnnou:

export ANSIBLE_SCP_IF_SSH=y

Vyzkoušíme Ansible

Ansible potřebuje informace a tom, co má spravovat. Jde o tzv. hosts file a ten vám automaticky vytvořil skript create.sh popsaný v minulém díle. Podívejme se do něj:

[leafs]
leaf1 ansible_host=172.18.0.2 ansible_port=22
leaf2 ansible_host=172.18.0.3 ansible_port=22
leaf3 ansible_host=172.18.0.4 ansible_port=22
leaf4 ansible_host=172.18.0.5 ansible_port=22

[spines]
spine1 ansible_host=172.18.0.6 ansible_port=22
spine2 ansible_host=172.18.0.7 ansible_port=22

Systémy jsme sdružili do dvou skupin – leaf switche a spine switche.

Abychom se ujistili, že Ansible je shopen se připojit k prvkům a komunikovat s OpenSwitch, máme připraven Playbook, který konektivitu otestuje. Najdete ho v souboru test-connection.yml. Podívejme se dovnitř:

---
- hosts: all
  remote_user: root
  gather_facts: no
  vars:
    ansible_user: root
  tasks:
    - name: Ping my switches
      ping:
    - name: Collect device information
      ops_facts:
        host: localhost
        transport: rest
        validate_certs: False
        config: No
        username: root
        password:
    - name: Print OpenSwitch version
      debug: var=version

Co se tam děje? Jako hosts jsme použili all, chceme tedy operace provést na všech nodech, které Ansiblu předhodíme. v sekci tasks najdeme tři úlohy.

První nemá nic společného s OpenSwitch a jde pouze o „Andible ping“. Nejedná se o ICMP, ale Ansible se pokusí připojit do cílového zařízení přes SSH, uploadnout tam Python skript a ten spustit – tím tedy ověřit, že Ansible má k dispozici všechno potřebné ke svému běhu.

Druhý úkol už je specifický pro OpenSwitch a je to úloha, která načte informace o zařízeních a tyto jsou pak dostupné pro další úlohy v Playbooku.

Třetí úloha jednoduše vytiskne na obrazovku fakta načtená v kroku dva, konkrétně načtenou informaci o verzi OpenSwitch.

Spusťte teď testovací skript a prohlédněte si výsledek:

$ ansible-playbook -i hosts test-connection.yml

PLAY [all] *********************************************************************

TASK [Ping my switches] ********************************************************
ok: [spine2]
ok: [spine1]
ok: [leaf2]
ok: [leaf1]
ok: [leaf3]
ok: [leaf4]

TASK [Collect device information] **********************************************
ok: [leaf2]
ok: [leaf3]
ok: [spine2]
ok: [spine1]
ok: [leaf1]
ok: [leaf4]

TASK [Print OpenSwitch version] ************************************************
ok: [leaf3] => {
    "version": "0.4.0 (Build: genericx86-64-ops-0.4.0-master-20160601060155-dev)"
}
ok: [spine1] => {
    "version": "0.4.0 (Build: genericx86-64-ops-0.4.0-master-20160601060155-dev)"
}
ok: [spine2] => {
    "version": "0.4.0 (Build: genericx86-64-ops-0.4.0-master-20160601060155-dev)"
}
ok: [leaf2] => {
    "version": "0.4.0 (Build: genericx86-64-ops-0.4.0-master-20160601060155-dev)"
}
ok: [leaf1] => {
    "version": "0.4.0 (Build: genericx86-64-ops-0.4.0-master-20160601060155-dev)"
}
ok: [leaf4] => {
    "version": "0.4.0 (Build: genericx86-64-ops-0.4.0-master-20160601060155-dev)"
}

PLAY RECAP *********************************************************************
leaf1                      : ok=3    changed=0    unreachable=0    failed=0
leaf2                      : ok=3    changed=0    unreachable=0    failed=0
leaf3                      : ok=3    changed=0    unreachable=0    failed=0
leaf4                      : ok=3    changed=0    unreachable=0    failed=0
spine1                     : ok=3    changed=0    unreachable=0    failed=0
spine2                     : ok=3    changed=0    unreachable=0    failed=0

Funguje 🙂

Vyzkoušejme si také přepínač limit, kterým můžeme omezit, na jaké nody chceme Playbook aplikovat. Můžete použít například jen jednu skupinu:

$ ansible-playbook -i hosts test-connection.yml --limit spines

PLAY [all] *********************************************************************

TASK [Ping my switches] ********************************************************
ok: [spine1]
ok: [spine2]

TASK [Collect device information] **********************************************
ok: [spine1]
ok: [spine2]

TASK [Print OpenSwitch version] ************************************************
ok: [spine1] => {
    "version": "0.4.0 (Build: genericx86-64-ops-0.4.0-master-20160601060155-dev)"
}
ok: [spine2] => {
    "version": "0.4.0 (Build: genericx86-64-ops-0.4.0-master-20160601060155-dev)"
}

PLAY RECAP *********************************************************************
spine1                     : ok=3    changed=0    unreachable=0    failed=0
spine2                     : ok=3    changed=0    unreachable=0    failed=0

Nebo jen konkrétní node:

$ ansible-playbook -i hosts test-connection.yml --limit spine1

PLAY [all] *********************************************************************

TASK [Ping my switches] ********************************************************
ok: [spine1]

TASK [Collect device information] **********************************************
ok: [spine1]

TASK [Print OpenSwitch version] ************************************************
ok: [spine1] => {
    "version": "0.4.0 (Build: genericx86-64-ops-0.4.0-master-20160601060155-dev)"
}

PLAY RECAP *********************************************************************
spine1                     : ok=3    changed=0    unreachable=0    failed=0

Dnes se nám podařilo napojit Ansible na naší virtuální topologii a spustit náš první Playbook. Příště už se pustíme do samotné konfigurace L3 fabric. Připomínám, že všechno najdete na GitHub zde: https://github.com/HPENetworking/scriptsonly/tree/master/OpenSwitch/leafspine-ops

Similar posts
  • Moderní 10G v datovém centru s novou ... HPE tento týden oznámilo evoluční vývoj portfolia v oblasti data center 1U prvků s 10G/40G/100G technologií, konkrétně novou řadu 5940. Co je nového? Hardwarové vlastnosti Prvky přichází s novou generací 10/40/100 čipů, které umožnily mít nově prvky se 100G uplinky (a to hned šesti) a také přináší podporou nových vlastností jako je směrování VXLAN (předchozí [...]
  • ArubaOS-Switch 16.02: IP SLA i pro Ar... IP SLA Ve světě směrovačů už poměrně dlouho existuje možnost monitorovat dostupnost a kvalitu spojení s využitím L3 protokolů. Můžete například z pobočky v pravidelných intervalech testovat dostupnost brány datového centra nebo klíčového serveru včetně měření doby jeho reakce (round-trip-time). Dá se také namířit dva routery proti sobě tak, že jeden se ptá a druhý [...]
  • OpenSwitch v GNS3 – chcete GUI ... GNS3 verze 1.5 Pokud neznáte GNS3, jde o velmi dobrý síťový simulátor. Narozdíl od jiných řešení, o kterých jsem na netSvět už psal (Docker, shell skript, Mininet), je zaměřený především na síťaře, kteří chtějí pracovat s virtuální sítí a přizpůsobuje se jejich pohodlí. Do CI/CD pipeline se tedy moc nehodí, ale za to má výborné [...]
  • OpenSwitch a Ansible automatizace pra... Posledně jsme si nastavili naší virtuální OpenSwitch leaf-spine topologii a vybudovali jsme BGP L3 fabric. Dnes si ukážeme více z životního cyklu s použitím Ansible – otestování sítě, vrácení odchylek do požadovaného stavu sítě a rolování změn. Jste líní číst? Mrkněte na video: Playbook pro testování sítě Ansible můžete použít i pro testování, že síť [...]
  • OpenSwitch a Ansible automatizace pra... Minule jsme napojili naši virtuální topologii na Ansible a spustili náš první testovací Playbook. Dnes provodeme automatizovanou konfiguraci L3 fabric a otestujeme síť. Příprava konfiguračních podkladů Pro zprovoznění L3 fabric potřebujeme Loopback adresu, IP adresy na jednotlivých spojeních mezi prvky a nastavení BGP (autonomní systémy, peering). V našem Ansible prostředí si vytvoříme jeden YAML soubor, [...]

No Comments Yet

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *