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
Seperti yang kami umumkan baru-baru ini,
- 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,
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
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
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.
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.
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:
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:
Modul berikut dibangunkan oleh komuniti Ansible:
exos_lldp_global
- daripada Extreme Networks.nxos_bfd_interfaces
- daripada Cisconxos_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.
Sumber dan permulaan
Sumber: www.habr.com