The Inside Playbook. Ciri rangkaian dalam Enjin Ansible 2.9 baharu

The Inside Playbook. Ciri rangkaian dalam Enjin Ansible 2.9 baharu

Keluaran Red Hat Ansible Engine 2.9 yang akan datang membawa peningkatan yang menarik, beberapa daripadanya dibincangkan dalam artikel ini. Seperti biasa, kami telah membangunkan pembaikan Rangkaian Ansible secara terbuka, dengan sokongan komuniti. Sertai kami - lihat papan keluaran di GitHub dan mengkaji rancangan pembangunan untuk keluaran Red Hat Ansible Engine 2.9 pada halaman wiki untuk Rangkaian Ansible.

Seperti yang kami umumkan baru-baru ini, Platform Automasi Boleh Tudung Merah kini termasuk Menara Ansible, Enjin Ansible dan semua kandungan Rangkaian Ansible. Pada masa kini, kebanyakan platform rangkaian popular dilaksanakan melalui modul Ansible. Sebagai contoh:

  • Arista EOS
  • Cisco IOS
  • Cisco IOS XR
  • Cisco NX-OS
  • Juniper Junos
  • VyOS

Untuk senarai lengkap platform yang disokong sepenuhnya oleh Red Hat melalui langganan Automasi Ansible, diterbitkan di sini.

Apa yang telah kita pelajari

Sepanjang empat tahun yang lalu, kami telah belajar banyak tentang membangunkan platform automasi rangkaian. Kami juga belajar itu sebagai artifak platform digunakan dalam buku permainan dan peranan Ansible oleh pengguna akhir. Dan inilah yang kami dapati:

  • Organisasi mengautomasikan peranti daripada bukan hanya satu, tetapi banyak vendor.
  • Automasi bukan sahaja fenomena teknikal, tetapi juga budaya.
  • Mengautomasikan rangkaian pada skala adalah lebih sukar daripada yang kelihatan disebabkan oleh prinsip seni bina asas reka bentuk automasi.

Apabila kami membincangkan rancangan pertumbuhan jangka panjang kami lebih setahun yang lalu, pelanggan korporat kami meminta perkara berikut:

  • Pengumpulan fakta perlu diseragamkan dengan lebih baik dan diselaraskan dengan aliran kerja automasi merentas semua peranti.
  • Mengemas kini konfigurasi pada peranti juga perlu diseragamkan dan konsisten supaya modul Ansible mengendalikan separuh kedua kitaran selepas mengumpul fakta.
  • Kami memerlukan kaedah yang ketat dan disokong untuk menukar konfigurasi peranti kepada data berstruktur. Atas dasar ini, sumber kebenaran boleh dialihkan dari peranti rangkaian.

Penambahbaikan fakta

Mengumpul fakta daripada peranti rangkaian menggunakan Ansible selalunya berlaku secara rawak. Platform berasaskan web mempunyai pelbagai peringkat keupayaan pengumpulan fakta, tetapi ia mempunyai sedikit atau tiada fungsi untuk menghurai dan menyeragamkan perwakilan data dalam pasangan nilai kunci. Baca jawatan Ken Celenza tentang betapa sukar dan menyakitkan untuk menganalisis dan menyeragamkan data fakta.

Anda mungkin perasan kami mengusahakan peranan Enjin Rangkaian Ansible. Sememangnya, muat turun 24K kemudian, peranan Enjin Rangkaian telah menjadi salah satu peranan Ansible paling popular dalam Ansible Galaxy untuk senario automasi rangkaian. Sebelum kami mengalihkan banyak perkara ini ke Ansible 2.8 untuk menyediakan perkara yang diperlukan dalam Ansible 2.9, peranan Ansible ini menyediakan set alat pertama untuk membantu menghuraikan arahan, mengurus perintah dan mengumpul data untuk peranti rangkaian.

Jika anda tahu cara menggunakan Enjin Rangkaian, ini ialah cara yang sangat cekap untuk mengumpul, menghuraikan dan menyeragamkan data fakta untuk digunakan dalam Ansible. Kelemahan peranan ini ialah anda perlu mencipta sejumlah besar penghurai untuk setiap platform dan untuk semua aktiviti rangkaian. Untuk memahami betapa sukarnya membuat, menghantar dan menyelenggara parser, sila lihat Lebih daripada 1200 parser daripada lelaki di Cisco.

Ringkasnya, mendapatkan fakta daripada peranti dan menormalkannya menjadi pasangan nilai kunci adalah penting untuk automasi secara berskala, tetapi untuk mencapainya adalah sukar apabila anda mempunyai banyak vendor dan platform rangkaian.

Setiap modul fakta rangkaian dalam Ansible 2.9 kini boleh menganalisis konfigurasi peranti rangkaian dan mengembalikan data berstruktur - tanpa perpustakaan tambahan, peranan Ansible atau penghurai tersuai.

Sejak Ansible 2.9, setiap kali modul rangkaian yang dikemas kini dikeluarkan, modul fakta ditambah baik untuk menyediakan data tentang bahagian konfigurasi ini. Iaitu, pembangunan fakta dan modul kini berlaku pada kadar yang sama, dan mereka akan sentiasa mempunyai struktur data yang sama.

Konfigurasi sumber pada peranti rangkaian boleh diambil dan ditukar kepada data berstruktur dalam dua cara. Dalam kedua-dua cara, anda boleh mengumpul dan mengubah senarai sumber tertentu menggunakan kata kunci baharu gather_network_resources. Nama sumber sepadan dengan nama modul, yang sangat mudah.

Semasa mengumpul fakta:

Menggunakan kata kunci gather_facts anda boleh mendapatkan semula konfigurasi peranti semasa pada permulaan buku main, dan kemudian menggunakannya sepanjang keseluruhan buku main. Tentukan sumber individu untuk diambil daripada peranti.

- hosts: arista
  module_defaults:
    eos_facts:
      gather_subset: min
      gather_network_resources:
      - interfaces
  gather_facts: True

Anda mungkin perasan sesuatu yang baharu dalam contoh ini, iaitu - gather_facts: true kini tersedia untuk pengumpulan fakta asli untuk peranti rangkaian.

Menggunakan modul fakta rangkaian secara langsung:

- name: collect interface configuration facts
  eos_facts:
    gather_subset: min
    gather_network_resources:
    - interfaces

Buku permainan mengembalikan fakta berikut tentang antara muka:

ansible_facts:
   ansible_network_resources:
      interfaces:
      - enabled: true
        name: Ethernet1
        mtu: '1476'
      - enabled: true
        name: Loopback0
      - enabled: true
        name: Loopback1
      - enabled: true
        mtu: '1476'
        name: Tunnel0
      - enabled: true
        name: Ethernet1
      - enabled: true
        name: Tunnel1
      - enabled: true
        name: Ethernet1

Perhatikan cara Ansible mendapatkan semula konfigurasi asli daripada peranti Arista dan mengubahnya menjadi data berstruktur untuk digunakan sebagai pasangan nilai kunci standard untuk tugasan dan operasi hiliran.

Fakta antara muka boleh ditambah pada pembolehubah tersimpan Ansible dan digunakan serta-merta atau kemudian sebagai input kepada modul sumber eos_interfaces tanpa pemprosesan atau penukaran tambahan.

Modul Sumber

Jadi, kami mengekstrak fakta, menormalkan data, memasukkannya ke dalam gambar rajah struktur data dalaman yang piawai dan menerima sumber kebenaran sedia ada. Hooray! Ini bagus, sudah tentu, tetapi kami masih perlu menukar pasangan nilai kunci kembali kepada konfigurasi khusus yang diharapkan oleh platform peranti tertentu. Kami kini memerlukan modul khusus platform untuk memenuhi keperluan pengumpulan fakta dan normalisasi baharu ini.

Apakah modul sumber? Anda boleh menganggap bahagian konfigurasi peranti sebagai sumber yang disediakan oleh peranti itu. Modul sumber rangkaian sengaja dihadkan kepada satu sumber dan boleh disusun seperti blok binaan untuk mengkonfigurasi perkhidmatan rangkaian yang kompleks. Akibatnya, keperluan dan spesifikasi untuk modul sumber dipermudahkan secara semula jadi, kerana modul sumber boleh membaca ΠΈ mengkonfigurasi perkhidmatan rangkaian tertentu pada peranti rangkaian.

Untuk menerangkan perkara yang dilakukan oleh modul sumber, mari lihat contoh buku main yang menunjukkan operasi idempodent menggunakan fakta dan modul sumber rangkaian baharu eos_l3_interface.

- name: example of facts being pushed right back to device.
  hosts: arista
  gather_facts: false
  tasks:
  - name: grab arista eos facts
    eos_facts:
      gather_subset: min
      gather_network_resources: l3_interfaces

  - name: ensure that the IP address information is accurate
    eos_l3_interfaces:
      config: "{{ ansible_network_resources['l3_interfaces'] }}"
      register: result

  - name: ensure config did not change
    assert:
      that: not result.changed

Seperti yang anda lihat, data yang dikumpul daripada peranti dipindahkan terus ke modul sumber yang sepadan tanpa penukaran. Apabila dilancarkan, buku main mendapatkan semula nilai daripada peranti dan membandingkannya dengan nilai yang dijangkakan. Dalam contoh ini, nilai yang dikembalikan adalah seperti yang dijangkakan (iaitu, ia menyemak sisihan konfigurasi) dan melaporkan sama ada konfigurasi telah berubah.

Cara yang ideal untuk mengesan hanyut konfigurasi ialah menyimpan fakta dalam pembolehubah tersimpan Ansible dan menggunakannya secara berkala dengan modul sumber dalam mod pemeriksaan. Ini ialah kaedah mudah untuk melihat sama ada seseorang telah menukar nilai secara manual. Dalam kebanyakan kes, organisasi membenarkan perubahan dan konfigurasi secara manual, walaupun banyak operasi dilakukan melalui Automasi Ansible.

Bagaimanakah modul sumber baharu berbeza daripada modul sebelumnya?

Untuk jurutera automasi rangkaian, terdapat 3 perbezaan utama antara modul sumber dalam Ansible 2.9 dan versi sebelumnya.

1) Untuk sumber rangkaian tertentu (yang juga boleh dianggap sebagai bahagian konfigurasi), modul dan fakta akan berkembang merentas semua sistem pengendalian rangkaian yang disokong secara serentak. Kami berpendapat bahawa jika Ansible menyokong konfigurasi sumber pada satu platform rangkaian, kami harus menyokongnya di mana-mana sahaja. Ini memudahkan penggunaan modul sumber kerana jurutera automasi rangkaian kini boleh mengkonfigurasi sumber (seperti LLDP) pada semua sistem pengendalian rangkaian dengan modul asli dan disokong.

2) Modul sumber kini termasuk nilai keadaan.

  • merged: konfigurasi digabungkan dengan konfigurasi yang disediakan (lalai);
  • replaced: Konfigurasi sumber akan digantikan dengan konfigurasi yang disediakan;
  • overridden: Konfigurasi sumber akan digantikan dengan konfigurasi yang disediakan; contoh sumber yang tidak perlu akan dipadamkan;
  • deleted: Konfigurasi sumber akan dipadam/dipulihkan kepada lalai.

The Inside Playbook. Ciri rangkaian dalam Enjin Ansible 2.9 baharu

3) Modul sumber kini termasuk nilai pulangan yang stabil. Apabila modul sumber rangkaian telah membuat (atau mencadangkan) perubahan yang diperlukan pada peranti rangkaian, ia mengembalikan pasangan nilai kunci yang sama ke buku main.

  • before: konfigurasi pada peranti dalam bentuk data berstruktur sebelum tugasan;
  • after: jika peranti telah berubah (atau mungkin berubah jika mod ujian digunakan), konfigurasi yang terhasil akan dikembalikan sebagai data berstruktur;
  • commands: Sebarang arahan konfigurasi dijalankan pada peranti untuk membawanya ke keadaan yang diingini.

The Inside Playbook. Ciri rangkaian dalam Enjin Ansible 2.9 baharu

The Inside Playbook. Ciri rangkaian dalam Enjin Ansible 2.9 baharu

Apakah maksud semua ini? Mengapa ia penting?

Siaran ini merangkumi banyak konsep yang kompleks, tetapi kami berharap pada akhirnya anda akan mempunyai pemahaman yang lebih baik tentang perkara yang diminta oleh pelanggan perusahaan dalam pengumpulan fakta, normalisasi data dan konfigurasi gelung untuk platform automasi. Tetapi mengapa mereka memerlukan penambahbaikan ini? Banyak organisasi kini mengejar transformasi digital untuk menjadikan persekitaran IT mereka lebih tangkas dan berdaya saing. Baik atau buruk, ramai jurutera rangkaian menjadi pembangun rangkaian sama ada atas kepentingan diri sendiri atau atas arahan pihak pengurusan.

Organisasi menyedari bahawa mengautomasikan templat rangkaian individu tidak menyelesaikan masalah silo dan hanya meningkatkan kecekapan pada tahap tertentu. Platform Automasi Red Hat Ansible menyediakan model data sumber yang ketat dan normatif untuk mengurus data asas secara pemrograman pada peranti rangkaian. Iaitu, pengguna secara beransur-ansur meninggalkan kaedah konfigurasi individu dan memihak kepada kaedah yang lebih moden dengan penekanan pada teknologi (contohnya, alamat IP, VLAN, LLDP, dll.), dan bukannya pada pelaksanaan vendor tertentu.

Adakah ini bermakna bahawa hari-hari modul perintah dan konfigurasi yang boleh dipercayai dan terbukti adalah bernombor? Walau apa pun. Modul sumber rangkaian yang dijangka tidak akan digunakan dalam semua kes atau untuk setiap vendor, jadi modul arahan dan konfigurasi masih diperlukan oleh jurutera rangkaian untuk pelaksanaan tertentu. Tujuan modul sumber adalah untuk memudahkan templat Jinja yang besar dan menormalkan konfigurasi peranti tidak berstruktur ke dalam format JSON berstruktur. Dengan modul sumber, rangkaian sedia ada akan menjadi lebih mudah untuk mengubah konfigurasi mereka menjadi pasangan nilai kunci berstruktur yang mewakili sumber kebenaran yang mudah dibaca. Dengan menggunakan pasangan nilai kunci berstruktur, anda boleh beralih daripada menjalankan konfigurasi pada setiap peranti kepada bekerja dengan data berstruktur bebas dan membawa rangkaian ke hadapan dalam pendekatan infrastruktur sebagai kod.

Apakah modul sumber yang akan datang dalam Ansible Engine 2.9?

Sebelum kami memberitahu anda secara terperinci apa yang akan berlaku dalam Ansible 2.9, mari ingat bagaimana kami membahagikan keseluruhan skop kerja.

Kami mengenal pasti 7 kategori dan memperuntukkan sumber rangkaian khusus untuk setiap satu:

The Inside Playbook. Ciri rangkaian dalam Enjin Ansible 2.9 baharu

Nota: Sumber dalam huruf tebal telah dirancang dan dilaksanakan dalam Ansible 2.9.
Berdasarkan maklum balas daripada pelanggan perusahaan dan komuniti, adalah logik untuk menangani modul yang berkaitan dengan protokol topologi rangkaian, virtualisasi dan antara muka terlebih dahulu.
Modul sumber berikut telah dibangunkan oleh pasukan Ansible Network dan sepadan dengan platform yang disokong oleh Red Hat:

The Inside Playbook. Ciri rangkaian dalam Enjin Ansible 2.9 baharu

Modul berikut dibangunkan oleh komuniti Ansible:

  • exos_lldp_global - daripada Extreme Networks.
  • nxos_bfd_interfaces - daripada Cisco
  • nxos_telemetry - daripada Cisco

Seperti yang anda lihat, konsep modul sumber sesuai dengan strategi berpusatkan platform kami. Iaitu, kami memasukkan keupayaan dan fungsi yang diperlukan dalam Ansible itu sendiri untuk menyokong penyeragaman dalam pembangunan modul rangkaian, dan juga untuk memudahkan kerja pengguna di peringkat peranan dan buku permainan Ansible. Untuk mengembangkan pembangunan modul sumber, pasukan Ansible mengeluarkan alat Pembina Modul.

Rancangan untuk Ansible 2.10 dan seterusnya

Setelah Ansible 2.9 dikeluarkan, kami akan mengusahakan set modul sumber seterusnya untuk Ansible 2.10, yang boleh digunakan untuk mengkonfigurasi lagi topologi dan dasar rangkaian, mis. ACL, OSPF dan BGP. Pelan pembangunan masih boleh dilaraskan, jadi jika anda mempunyai ulasan, sila laporkan kepada Komuniti Rangkaian Ansible.

Sumber dan permulaan

Siaran akhbar tentang Platform Automasi Ansible
Blog Platform Automasi Ansible
Masa depan penyampaian kandungan dalam Ansible
Refleksi untuk mengubah struktur projek Ansible

Sumber: www.habr.com

Tambah komen