juniper.junos

Status dokumentacji

Zbiór Ansible Juniper dla Junos

O zbiorze

Juniper Networks wspiera Ansible do zarządzania urządzeniami działającymi na systemie operacyjnym Junos (Junos OS oraz Junos Evolved). Ten zbiór jest dostępny na stronie Ansible Galaxy pod zbiorem juniper.device.

Zbiór juniper.device zawiera zestaw modułów Ansible, które wykonują konkretne zadania operacyjne i konfiguracyjne na urządzeniach działających na Junos OS. Zadania te obejmują: instalację i aktualizację Junos OS, przygotowanie nowych urządzeń Junos w sieci, wczytywanie zmian konfiguracyjnych, pobieranie informacji oraz resetowanie, restartowanie lub wyłączanie zarządzanych urządzeń. Prosimy o zapoznanie się z sekcją INSTALACJA w celu uzyskania instrukcji dotyczących instalacji tego zbioru.

Dwa zestawy modułów Ansible dla urządzeń Junos

Od wersji Ansible >= 2.1, Ansible zawiera także moduły rdzeniowe dla Junos. Moduły Junos zawarte w rdzeniu Ansible mają nazwy zaczynające się od prefiksu junos_. Moduły Junos zawarte w zbiorze juniper.device mają nazwy zaczynające się od typów modułów. Te dwa zestawy modułów Junos mogą współistnieć na tym samym maszynie kontrolnej Ansible, a playbook Ansible może wywoływać moduł z jednego (lub obu) zestawów. Juniper Networks zaleca korzystanie z modułów w zbiorze juniper.device podczas pisania nowych playbooków zarządzających urządzeniami Junos.

Przegląd modułów

Zbiór juniper.device zawiera następujące moduły:

  • command — Wykonaj jedno lub więcej poleceń CLI na urządzeniu Junos.
  • config — Manipuluj konfiguracją urządzenia Junos.
  • facts — Pobierz fakty z urządzenia Junos.
  • file_copy - Skopiuj pliki z i do urządzenia Junos.
  • jsnapy — Wykonaj testy JSNAPy na urządzeniu Junos.
  • ping — Wykonaj polecenie ping z urządzenia Junos.
  • pmtud — Wykonaj odkrywanie maksymalnej jednostki transmisyjnej (MTU) z urządzenia Junos do celu.
  • rpc — Wykonaj jedno lub więcej RPC NETCONF na urządzeniu Junos.
  • software — Zainstaluj oprogramowanie na urządzeniu Junos.
  • srx_cluster — Dodaj lub usuń konfigurację klastra SRX.
  • system — Rozpocznij działania operacyjne na systemie Junos.
  • table — Pobierz dane z urządzenia Junos za pomocą tabeli/widoku PyEZ.

Wymagana wersja PyEZ

Zbiór ansible juniper.device wymaga instalacji junos-eznc w wersji 2.6.0 lub wyższej.

Przegląd wtyczek

Oprócz wymienionych modułów, dostępna jest wtyczka zwrotna jsnapy dla modułu jsnapy.

Wtyczka zwrotna jsnapy pomaga w wyświetlaniu na ekranie dodatkowych informacji dotyczących nieudanych testów jsnapy. Dla każdego nieudanego testu, log zostanie wydrukowany po RECAP z playbooka, jak pokazano w tym przykładzie:

RECAP GRY *********************************************************************
qfx10002-01                : ok=3    zmienione=0    nietypowe=0    nieudane=1
qfx10002-02                : ok=3    zmienione=0    nietypowe=0    nieudane=1
qfx5100-01                 : ok=1    zmienione=0    nietypowe=0    nieudane=1

Wyniki JSNAPy dla: qfx10002-01 ***********************************************
Wartość 'peer-state' nie 'is-equal' na '//bgp-information/bgp-peer' z {"peer-as": "65200", "peer-state": "Active", "peer-address": "100.0.0.21"}
Wartość 'peer-state' nie 'is-equal' na '//bgp-information/bgp-peer' z {"peer-as": "60021", "peer-state": "Idle", "peer-address": "192.168.0.1"}
Wartość 'oper-status' nie 'is-equal' na '//interface-information/physical-interface[normalize-space(admin-status)='up' and logical-interface/address-family/address-family-name ]' z {"oper-status": "down", "name": "et-0/0/18"}

Wyniki JSNAPy dla: qfx10002-02 ***********************************************
Wartość 'peer-state' nie 'is-equal' na '//bgp-information/bgp-peer' z {"peer-as": "65200", "peer-state": "Active", "peer-address": "100.0.0.21"}

Wtyczki zwrotne nie są aktywowane domyślnie. Muszą być ręcznie dodane do pliku konfiguracyjnego Ansible w sekcji [defaults] za pomocą zmiennej callback_whitelist. Konkretnie, te linie powinny być dodane do pliku konfiguracyjnego Ansible, aby umożliwić wtyczkę zwrotną jsnapy:

[defaults]
callback_whitelist = jsnapy

DOKUMENTACJA

Oficjalna dokumentacja Juniper (szczegółowe informacje, w tym przykłady)

Dokumentacja Ansible w stylu dokumentacji

INSTALACJA

Musisz mieć zainstalowane na swoim systemie WYMAGANIA. Sprawdź plik requirements.txt w celu uzyskania zależności.

UWAGI

MacOS Mojave i nowsze

W systemie MacOS Mojave i nowszych (>=10.14) klucze SSH stworzone za pomocą systemowego ssh-keygen są tworzone w nowszym formacie klucza 'OPENSSH', nawet przy wskazaniu -t rsa podczas tworzenia. To bezpośrednio wpływa na użycie kluczy SSH, szczególnie przy użyciu ssh_private_key_file. Aby tworzyć/konwertować/sprawdzać klucze, wykonaj następujące kroki:

  • Utwórz nowy klucz RSA: ssh-keygen -m PEM -t rsa -b 4096
  • Sprawdź istniejące klucze: head -n1 ~/.ssh/some_private_key Klucze RSA będą miały -----BEGIN RSA PRIVATE KEY-----, a klucze OPENSSH będą miały -----BEGIN OPENSSH PRIVATE KEY-----
  • Przekonwertuj klucz OPENSSH na klucz RSA: ssh-keygen -p -m PEM -f ~/.ssh/some_key

Zbiór Ansible Galaxy

Możesz użyć polecenia ansible-galaxy install, aby zainstalować najnowszą wersję zbioru juniper.device.

sudo ansible-galaxy collection install juniper.device

Możesz także użyć polecenia ansible-galaxy install, aby zainstalować najnowszą wersję rozwojową zbioru junos bezpośrednio z GitHub.

sudo ansible-galaxy collection install git+https://github.com/Juniper/ansible-junos-stdlib.git#/ansible_collections/juniper/device

Aby uzyskać więcej informacji odwiedź - https://docs.ansible.com/ansible/latest/user_guide/collections_using.html#specifying-the-location-to-search-for-collections

Klonowanie Gita

W celach testowych możesz git clone ten repozytor i uruchomić skrypt env-setup w katalogu repo:

user@ansible-junos-stdlib> source env-setup

To ustawi zmienną $ANSIBLE_LIBRARY na lokalizację repozytorium oraz zainstalowaną ścieżkę biblioteki Ansible. Na przykład:

$ echo $ANSIBLE_LIBRARY /home/jeremy/Ansible/ansible-junos-stdlib/library:/usr/share/ansible

Docker

Aby uruchomić to jako kontener Docker, który zawiera JSNAPy i PyEZ, wystarczy pobrać go z Docker hub i uruchomić. Poniższe polecenie pobierze najnowszy obraz i uruchomi go w interaktywnej powłoce ash.

docker run -it --rm juniper/pyez-ansible

Chociaż prawdopodobnie zechcesz powiązać zamontowany katalog hosta (może to być katalog zawierający twoje playbooki i powiązane pliki). Poniższe polecenie zamontuje bieżący katalog i uruchomi powłokę ash.

docker run -it --rm -v $PWD:/project juniper/pyez-ansible

Możesz także używać kontenera jako wykonawczego do uruchamiania swoich playbooków. Załóżmy, że mamy typową strukturę playbooka, jak pokazano poniżej:

przykład
|playbook.yml
|hosts
|-vars
|-templates
|-scripts

Możemy przejść do katalogu example i uruchomić playbook za pomocą następującego polecenia:

cd example/ docker run -it --rm -v $PWD:/playbooks juniper/pyez-ansible ansible-playbook -i hosts playbook.yml

Możesz przekazać dowolny prawidłowy ciąg poleceń po nazwie kontenera, a zostanie on przekazany do Bash do wykonania.

Mogłeś zauważyć, że podstawowe polecenie jest niemal zawsze takie samo. Możemy również użyć aliasu, aby zaoszczędzić trochę czas.

alias pb-ansible="docker run -it --rm -v $PWD:/project juniper/pyez-ansible ansible-playbook" pb-ansible -i hosts playbook.yml

Rozszerzanie kontenera o dodatkowe pakiety

Możliwe jest zainstalowanie dodatkowych pakietów systemowych (Alpine), pakietów Pythona (za pomocą pip) oraz zbiorów Ansible podczas inicjacji kontenera. Można to zrobić, przekazując zmienne środowiskowe lub montując pliki.

Pakiety OS

Zmienna środowiskowa: $APK Montaż powiązany: /extras/apk.txt Format pliku: lista prawidłowych pakietów Alpine, jeden na linii Przykłady:

Jako zmienna środowiskowa, gdzie plik zawierający listę pakietów znajduje się w bieżącym katalogu.

docker run -it --rm -v $PWD:/project -e APK="apk.txt" juniper/pyez-ansible

Jako montaż powiązany.

docker run -it --rm -v $PWD/apk.txt:/extras/apk.txt juniper/pyez-ansible

Pakiety Pythona

Zmienna środowiskowa: $REQ Montaż powiązany: /extras/requirements.txt Format pliku: plik wymagań dla pip

Przykłady:

docker run -it --rm -v $PWD:/project -e REQ="requirements.txt" juniper/pyez-ansible

Jako montaż powiązany.

docker run -it --rm -v $PWD/requirements.txt:/extras/requirements.txt juniper/pyez-ansible

Pakiety Ansible

Zmienna środowiskowa: $ROLES Montaż powiązany: /extras/requirements.yml Format pliku: plik wymagań Ansible

UWAGA: To działa zarówno dla zbiorów, jak i ról.

Przykłady:

docker run -it --rm -v $PWD:/project -e REQ="requirements.yml" juniper/pyez-ansible

Jako montaż powiązany.

docker run -it --rm -v $PWD/requirements.txt:/extras/requirements.yml juniper/pyez-ansible

Przykładowy playbook

Ten przykład opisuje, jak użyć Ansible do zainstalowania lub zaktualizowania obrazu oprogramowania na urządzeniu działającym na Junos OS.

---
- name: Zainstaluj Junos OS
  hosts: dc1
  connection: local
  gather_facts: false
  vars:
    wait_time: 3600
    pkg_dir: /var/tmp/junos-install
    os_version: 14.1R1.10
    os_package: jinstall-14.1R1.10-domestic-signed.tgz
    log_dir: /var/log/ansible

  tasks:
    - name: Sprawdzanie łączności NETCONF
      ansible.builtin.wait_for:
        host: "{{ inventory_hostname }}"
        port: 830
        timeout: 5
    - name: Zainstaluj pakiet Junos OS
      juniper.device.software:
        reboot: true
        version: "{{ os_version }}"
        package: "{{ pkg_dir }}/{{ os_package }}"
        logfile: "{{ log_dir }}/software.log"
      register: sw
      notify:
        - Wait_reboot

  handlers:
    - name: Wait_reboot
      ansible.builtin.wait_for:
        host: "{{ inventory_hostname }}"
        port: 830
        timeout: "{{ wait_time }}"
      when: not sw.check_mode

WYMAGANIA

Te moduły wymagają zainstalowania następujących na maszynie kontrolnej Ansible:

LICENCJA

Apache 2.0

WSPIERANIE

Wsparcie dla tego zbioru juniper.device jest zapewniane przez społeczność oraz Juniper Networks. Jeśli masz problem z modułem w zbiorze juniper.device, możesz:

Wsparcie dla modułów Junos zawartych w rdzeniu Ansible zapewnia Ansible. Jeśli masz problem z modułem rdzeniowym Ansible, powinieneś otworzyć problem na GitHubie projektu Ansible.

WSPÓŁTWÓRCY

Juniper Networks aktywnie przyczynia się do utrzymania tego repozytorium. Skontaktuj się z [email protected] w razie pytań.

Współtwórcy: Stephen Steiner, Dinesh Babu, Chidanand Pujar

Byli współtwórcy:

Stacy W Smith, Jeremy Schulman, Rick Sherman, Damien Garros, David Gethings, Nitin Kumar, Rahul Kumar

O projekcie

Network build automation of Junos devices.

Zainstaluj
ansible-galaxy install juniper.junos
Licencja
apache-2.0
Pobrania
3.5M
Właściciel