Úvod

V dnešním článku si jen krátce ukážeme spojení DevOps principů s generickou správou sítě.

Cílem je poskytnout celkem dvě služby koncovým klientům:

  1. Automatizované aktualizování strojů v síti.
  2. Automatizované zálohování strojů pomocí textových výpisů s možností verzování souborů v čase.

Pro oba dané procesy jsme použili standardizovanou sadu nástrojů v ekosystému Azure Devops spolu s orchestračním nástrojem Ansiblem. Pojďme se na ni podívat detalněji.

Automatizované zálohování

Začínáme nasazování Jednoduchého exekutoru pro ansiblovské role - Ansible semaphore. V krátkosti - jedná se o náhradu za AWX. Je to jednoduché klikátko, snadné na instalaci a celkem rychlé pro práci. Vhodné svým GUI pro techniky, kteří na jedno kliknutí něco spustí a magie se stane. přesně to potřebujeme. Alternativou by mohli být Azure Devops pipelines pro docílení toho stejného a možná se to do budoucna i takto zkonvertí.

Instalaci volíme z historických důvodů manuální. Má mnoho drobností k řešení, ale máme rádi pocit pochopení co je pod kapotou. Pro slabé nátury je dostupná instalace pomocí snap a je také možnost službu běžet v kontejneru. Z interních důvodů jsme kontejner nezvolili, buď byl původně volba na prvním místě k nasazení.

Po nasazení Semaphore je potřeba napsat soustavu několika rolí, které umožní orchestrace záloh:

  1. Linuxových strojů
  2. MikroTiků.

Proces zálohování Linuxových strojů je opravdu triviální, nemá smysl se jím zabývat do detailu. Mnohem zajímavější totiž jsou Tiky. Proces jejich zálohování zde vyobrazen zde:

U MikroTiků se na chvíli zastavíme. Spolu s Ansiblem dobře funguje toto napojení, které umí s Tiky interagovat přes SSH.
Zde se totiž nejvíce trápíme nad tím, jak stáhnout textový export Tiku na Ansible controller.
Samotný Fetch modul nefunguje a jak je popsáno zde na tomto fóru je potřeba použít modul netcommon, mít nainstalovaný modul paramiko a scp.

    - name: "test"
      ansible.netcommon.net_get:
        src: "test1.rsc.backup"
        dest: "./test1.rsc.backup"

Po trošce bolístek se pak trápíme chvíli, jak zajistit verzování souborů v čase v gitu, ale nakonec je hotovo a celé řešení spouštíme v Semaphore. Zde je výsledek snažení:

Vše funguje na první dobrou. Mají-li Tiky RoS7+ a není-li jejich hardware slabý, šlape řešení jako hodinky.

Automatické aktualizace

Pro aktualizace a upgrade Linuxových strojů jsou playbooky opravdu snadné, například:

---
- name: Debian | Update the system
  ansible.builtin.apt:
    update_cache: true
  become: true

- name: Debian | Upgrade the system
  ansible.builtin.apt:
    upgrade: true
    update_cache: true
    autoclean: true
  become: true

Mnohem větší výzva jsou aktualizace Windowsů.
V případě MikroTiků stačí jednoduše:

- name: RouterOS | Check version
  routeros_command:
    commands:
      - /system package update check-for-updates

- name: RouterOS | Check if an update is needed
  routeros_command:
    commands:
      - "[:put ([/system package update check-for-updates])]"

- name: RouterOS | Run upgrade if new version is available
  routeros_command:
    commands:
        - /system package update install

Vše ukládáme opět do Semaphore a výsledek snažení je pak popsán na tomto obrázku jednoduše.

A je to, ani to nebolelo, a řešení bude sloužit dlouhá léta.