Ichki o'yin kitobi. Yangi Ansible Engine 2.9.dagi tarmoq xususiyatlari

Ichki o'yin kitobi. Yangi Ansible Engine 2.9.dagi tarmoq xususiyatlari

Red Hat Ansible Engine 2.9 ning yaqinlashib kelayotgan versiyasi hayajonli yaxshilanishlarni olib keladi, ulardan ba'zilari ushbu maqolada yoritilgan. Har doimgidek, biz hamjamiyat ko‘magi bilan Ansible Network yaxshilanishlarini ochiq holda ishlab chiqdik. Bizga qo'shiling - tomosha qiling GitHub-dagi emissiya paneli va rivojlanish rejasini o'rganing Red Hat Ansible Enginening chiqarilishi 2.9 uchun wiki sahifasida Ansible Network.

Yaqinda e'lon qilganimizdek, Red Hat Ansible Automation Platformasi endi Ansible Tower, Ansible Engine va barcha Ansible Network kontentini o'z ichiga oladi. Hozirgi kunda eng mashhur tarmoq platformalari Ansible modullari orqali amalga oshirilmoqda. Masalan:

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

Ansible Automation obunasi orqali Red Hat tomonidan to'liq qo'llab-quvvatlanadigan platformalarning to'liq ro'yxati uchun, bu yerda nashr etilgan.

Biz nimani o'rgandik

So‘nggi to‘rt yil ichida biz tarmoqni avtomatlashtirish platformasini ishlab chiqish haqida ko‘p narsalarni o‘rgandik. Biz ham buni o'rgandik qanday platforma artefaktlari Ansible o'yin kitoblarida va oxirgi foydalanuvchilar tomonidan rollarda qo'llaniladi. Va biz nimani aniqladik:

  • Tashkilotlar faqat bitta emas, balki ko'plab sotuvchilarning qurilmalarini avtomatlashtiradi.
  • Avtomatlashtirish nafaqat texnik hodisa, balki madaniy hodisadir.
  • Tarmoqlarni masshtabda avtomatlashtirish avtomatlashtirish dizaynining asosiy me'moriy tamoyillari tufayli ko'rinadiganidan ko'ra qiyinroq.

Bir yil oldin uzoq muddatli rivojlanish rejalarimizni muhokama qilganimizda, korporativ mijozlarimiz quyidagilarni so'rashdi:

  • Faktlarni to'plashni yaxshiroq standartlashtirish va barcha qurilmalarda avtomatlashtirish ish oqimlari bilan moslashtirish kerak.
  • Qurilmadagi konfiguratsiyalarni yangilash ham standartlashtirilgan va izchil bo'lishi kerak, shunda Ansible modullari faktlarni to'plagandan so'ng tsiklning ikkinchi yarmini boshqaradi.
  • Qurilma konfiguratsiyasini tuzilgan ma'lumotlarga aylantirish uchun bizga qat'iy va qo'llab-quvvatlanadigan usullar kerak. Shu asosda haqiqat manbai tarmoq qurilmasidan ko'chirilishi mumkin.

Faktlarni yaxshilash

Ansible yordamida tarmoq qurilmalaridan faktlarni to'plash ko'pincha tasodifiy sodir bo'ladi. Tarmoq platformalari turli darajadagi faktlarni to'plash qobiliyatiga ega, ammo ularda ma'lumotlarning kalit-qiymatini ko'rsatishni tahlil qilish va standartlashtirish uchun juda kam yoki umuman funksiya mavjud emas. O'qing post Ken Celenza faktik ma'lumotlarni tahlil qilish va standartlashtirish qanchalik qiyin va og'riqli ekanligi haqida.

Ansible Network Engine rolida ishlayotganimizni payqagandirsiz. Tabiiyki, 24K yuklab olingandan so'ng, Network Engine roli tezda tarmoqni avtomatlashtirish stsenariylari uchun Ansible Galaxy-dagi eng mashhur Ansible rollaridan biriga aylandi. Ansible 2.8 da kerak bo'ladigan narsaga tayyorgarlik ko'rish uchun buning katta qismini Ansible 2.9 ga ko'chirishdan oldin, ushbu Ansible roli buyruqlarni tahlil qilish, buyruqlarni boshqarish va tarmoq qurilmalari uchun ma'lumotlarni yig'ishda yordam beradigan birinchi vositalar to'plamini taqdim etdi.

Agar siz Network Engine-dan qanday foydalanishni bilsangiz, bu Ansible-da foydalanish uchun fakt ma'lumotlarini to'plash, tahlil qilish va standartlashtirishning juda samarali usulidir. Ushbu rolning kamchiliklari shundaki, siz har bir platforma va barcha tarmoq faoliyati uchun bir nechta tahlilchilarni yaratishingiz kerak. Tahlil qiluvchilarni yaratish, jo'natish va ularga xizmat ko'rsatish qanchalik qiyinligini tushunish uchun qarang 1200 dan ortiq tahlilchilar Ciscodagi yigitlardan.

Xulosa qilib aytganda, qurilmalardan faktlarni olish va ularni kalit-qiymat juftligiga normallashtirish masshtabda avtomatlashtirish uchun juda muhim, biroq sizda ko'plab sotuvchilar va tarmoq platformalari mavjud bo'lganda bunga erishish qiyin.

Ansible 2.9 dagi har bir tarmoq fakti moduli endi tarmoq qurilmasi konfiguratsiyasini tahlil qilishi va tuzilgan ma'lumotlarni qaytarishi mumkin - qo'shimcha kutubxonalar, Ansible rollari yoki maxsus tahlilchilarsiz.

Ansible 2.9 dan boshlab, har safar yangilangan tarmoq moduli chiqarilganda, fakt moduli konfiguratsiyaning ushbu bo'limi haqida ma'lumot berish uchun yaxshilanadi. Ya'ni, faktlar va modullarning rivojlanishi hozir bir xil sur'atda sodir bo'ladi va ular doimo umumiy ma'lumotlar strukturasiga ega bo'ladi.

Tarmoq qurilmasidagi resurslar konfiguratsiyasi ikki usulda olinishi va tuzilgan ma'lumotlarga aylantirilishi mumkin. Ikkala usulda ham yangi kalit so'z yordamida ma'lum manbalar ro'yxatini to'plashingiz va o'zgartirishingiz mumkin gather_network_resources. Resurs nomlari modul nomlariga mos keladi, bu juda qulay.

Faktlarni yig'ishda:

Kalit so'zdan foydalanish gather_facts o'yin kitobining boshida joriy qurilma konfiguratsiyasini olishingiz va undan keyin butun o'yin kitobida foydalanishingiz mumkin. Qurilmadan olinadigan alohida resurslarni belgilang.

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

Siz ushbu misollarda yangi narsani sezgan bo'lishingiz mumkin, xususan - gather_facts: true endi tarmoq qurilmalari uchun mahalliy faktlarni to'plash uchun mavjud.

To'g'ridan-to'g'ri tarmoq fakt modulidan foydalanish:

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

O'yin kitobi interfeys haqida quyidagi faktlarni qaytaradi:

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

Ansible qanday qilib Arista qurilmasidan mahalliy konfiguratsiyani olishiga va uni quyi oqim vazifalari va operatsiyalari uchun standart kalit-qiymat juftliklari sifatida foydalanish uchun tuzilgan ma'lumotlarga aylantirishiga e'tibor bering.

Interfeys faktlari Ansible saqlangan o'zgaruvchilarga qo'shilishi va darhol yoki keyinroq manba moduliga kirish sifatida ishlatilishi mumkin. eos_interfaces qo'shimcha ishlov berish yoki konvertatsiya qilmasdan.

Resurs modullari

Shunday qilib, biz faktlarni ajratib oldik, ma'lumotlarni normallashtirdik, ularni standartlashtirilgan ichki ma'lumotlar strukturasi diagrammasiga joylashtirdik va haqiqatning tayyor manbasini oldik. Xayr! Bu, albatta, ajoyib, lekin biz hali ham kalit-qiymat juftlarini qandaydir tarzda qurilma platformasi kutgan maxsus konfiguratsiyaga aylantirishimiz kerak. Endi faktlarni yig'ish va normallashtirish bo'yicha ushbu yangi talablarni qondirish uchun bizga platformaga xos modullar kerak.

Resurs moduli nima? Siz qurilmaning konfiguratsiya bo'limlarini ushbu qurilma tomonidan taqdim etilgan resurslar deb o'ylashingiz mumkin. Tarmoq manbalari modullari ataylab bitta resurs bilan cheklangan va murakkab tarmoq xizmatlarini sozlash uchun qurilish bloklari kabi yig'ilishi mumkin. Natijada, resurs moduliga qo'yiladigan talablar va spetsifikatsiyalar tabiiy ravishda soddalashtirilgan, chunki resurs moduli o'qiy oladi. и tarmoq qurilmasida ma'lum bir tarmoq xizmatini sozlash.

Resurs moduli nima qilishini tushuntirish uchun keling, yangi tarmoq manbasi va modul faktlaridan foydalangan holda idempodent operatsiyasini ko'rsatadigan misol o'yin kitobini ko'rib chiqaylik. 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

Ko'rib turganingizdek, qurilmadan to'plangan ma'lumotlar konvertatsiya qilinmasdan to'g'ridan-to'g'ri mos keladigan resurs moduliga uzatiladi. Ishga tushganda, o'yin kitobi qurilmadan qiymatlarni oladi va ularni kutilganlar bilan taqqoslaydi. Ushbu misolda qaytarilgan qiymatlar kutilganidek (ya'ni, u konfiguratsiya og'ishlarini tekshiradi) va konfiguratsiya o'zgarganligi haqida xabar beradi.

Konfiguratsiya o'zgarishini aniqlashning ideal usuli bu faktlarni Ansible saqlangan o'zgaruvchilarda saqlash va ularni vaqti-vaqti bilan tekshirish rejimida resurs moduli bilan ishlatishdir. Bu kimdir qiymatlarni qo'lda o'zgartirganligini ko'rishning oddiy usuli. Aksariyat hollarda tashkilotlar o'zgartirish va konfiguratsiyaga qo'lda ruxsat beradi, garchi ko'p operatsiyalar Ansible Automation orqali amalga oshiriladi.

Yangi resurs modullari oldingilaridan qanday farq qiladi?

Tarmoqni avtomatlashtirish muhandisi uchun Ansible 3 va oldingi versiyalardagi resurs modullari o'rtasida 2.9 ta asosiy farq mavjud.

1) Berilgan tarmoq resursi uchun (uni konfiguratsiya bo'limi sifatida ham ko'rish mumkin) modullar va faktlar barcha qo'llab-quvvatlanadigan tarmoq operatsion tizimlarida bir vaqtning o'zida rivojlanadi. Bizning fikrimizcha, agar Ansible bitta tarmoq platformasida resurs konfiguratsiyasini qo'llab-quvvatlasa, biz uni hamma joyda qo'llab-quvvatlashimiz kerak. Bu resurs modullaridan foydalanishni soddalashtiradi, chunki tarmoqni avtomatlashtirish muhandisi endi mahalliy va qo'llab-quvvatlanadigan modullar bilan barcha tarmoq operatsion tizimlarida resursni (masalan, LLDP) sozlashi mumkin.

2) Resurs modullari endi davlat qiymatini o'z ichiga oladi.

  • merged: konfiguratsiya taqdim etilgan konfiguratsiya bilan birlashtirilgan (standart);
  • replaced: Resurs konfiguratsiyasi taqdim etilgan konfiguratsiya bilan almashtiriladi;
  • overridden: Resurs konfiguratsiyasi taqdim etilgan konfiguratsiya bilan almashtiriladi; keraksiz manba nusxalari o'chiriladi;
  • deleted: Resurs konfiguratsiyasi o'chiriladi/sukut bo'yicha tiklanadi.

Ichki o'yin kitobi. Yangi Ansible Engine 2.9.dagi tarmoq xususiyatlari

3) Resurs modullari endi barqaror qaytish qiymatlarini o'z ichiga oladi. Tarmoq resursi moduli tarmoq qurilmasiga kerakli o'zgarishlarni amalga oshirgan (yoki taklif qilgan) bo'lsa, u o'yin kitobiga bir xil kalit-qiymat juftlarini qaytaradi.

  • before: vazifa oldidan tuzilgan ma'lumotlar ko'rinishida qurilmada konfiguratsiya;
  • after: agar qurilma o'zgargan bo'lsa (yoki sinov rejimidan foydalanilganda o'zgarishi mumkin), natijada olingan konfiguratsiya tuzilgan ma'lumotlar sifatida qaytariladi;
  • commands: Qurilmani kerakli holatga keltirish uchun har qanday konfiguratsiya buyruqlari ishlaydi.

Ichki o'yin kitobi. Yangi Ansible Engine 2.9.dagi tarmoq xususiyatlari

Ichki o'yin kitobi. Yangi Ansible Engine 2.9.dagi tarmoq xususiyatlari

Bularning barchasi nimani anglatadi? Nima uchun bu muhim?

Ushbu post juda ko'p murakkab tushunchalarni qamrab oladi, ammo umid qilamizki, oxir-oqibat siz korporativ mijozlar aslida to'plash, ma'lumotlarni normallashtirish va avtomatlashtirish platformasi uchun halqa konfiguratsiyasini so'ragan narsalarni yaxshiroq tushunasiz. Lekin nima uchun ularga bu yaxshilanishlar kerak? Hozirda ko‘plab tashkilotlar IT muhitlarini yanada chaqqon va raqobatbardosh qilish uchun raqamli transformatsiyani amalga oshirmoqda. Yaxshi yoki yomon bo'lsin, ko'plab tarmoq muhandislari o'z manfaatlarini ko'zlab yoki rahbariyatning buyrug'i bilan tarmoq ishlab chiqaruvchisi bo'lishadi.

Tashkilotlar shaxsiy tarmoq shablonlarini avtomatlashtirish siloslar muammosini hal qilmasligini va faqat ma'lum darajada samaradorlikni oshirishini tushunishadi. Red Hat Ansible Automation Platform tarmoq qurilmasidagi asosiy ma'lumotlarni dasturiy jihatdan boshqarish uchun qat'iy va me'yoriy resurs ma'lumotlari modellarini taqdim etadi. Ya'ni, foydalanuvchilar asta-sekin individual konfiguratsiya usullaridan voz kechib, ma'lum bir sotuvchini amalga oshirishga emas, balki texnologiyalarga (masalan, IP-manzillar, VLAN-lar, LLDP va boshqalar) e'tibor qaratgan zamonaviyroq usullar foydasiga bormoqda.

Bu ishonchli va tasdiqlangan buyruq modullari va konfiguratsiya kunlari raqamlanganligini anglatadimi? Hech qanday holatda. Kutilgan tarmoq manba modullari barcha holatlarda yoki har bir sotuvchi uchun qo'llanilmaydi, shuning uchun buyruq va konfiguratsiya modullari tarmoq muhandislariga ma'lum ilovalar uchun kerak bo'ladi. Resurs modullarining maqsadi katta Jinja shablonlarini soddalashtirish va tuzilmagan qurilma konfiguratsiyasini tuzilgan JSON formatida normallashtirishdir. Resurs modullari yordamida mavjud tarmoqlar uchun o'z konfiguratsiyasini oson o'qiladigan haqiqat manbasini ifodalovchi tuzilgan kalit-qiymat juftliklariga aylantirish osonroq bo'ladi. Strukturaviy kalit-qiymat juftliklaridan foydalanish orqali siz har bir qurilmada ishlaydigan konfiguratsiyalardan mustaqil tuzilgan ma'lumotlar bilan ishlashga o'tishingiz va tarmoqlarni kod sifatida infratuzilma yondashuvining birinchi qatoriga olib chiqishingiz mumkin.

Ansible Engine 2.9 da qanday resurs modullari keladi?

Ansible 2.9 da nima sodir bo'lishini batafsil aytib berishdan oldin, keling, butun ish hajmini qanday taqsimlaganimizni eslaylik.

Biz 7 toifani aniqladik va har biriga maxsus tarmoq resurslarini tayinladik:

Ichki o'yin kitobi. Yangi Ansible Engine 2.9.dagi tarmoq xususiyatlari

Eslatma: Qalin harflardagi manbalar Ansible 2.9 da rejalashtirilgan va amalga oshirilgan.
Korxona mijozlari va hamjamiyatning fikr-mulohazalariga asoslanib, birinchi navbatda tarmoq topologiyasi protokollari, virtualizatsiya va interfeyslar bilan bog'liq modullarni hal qilish mantiqiy edi.
Quyidagi resurs modullari Ansible Network jamoasi tomonidan ishlab chiqilgan va Red Hat tomonidan qo'llab-quvvatlanadigan platformalarga mos keladi:

Ichki o'yin kitobi. Yangi Ansible Engine 2.9.dagi tarmoq xususiyatlari

Quyidagi modullar Ansible hamjamiyati tomonidan ishlab chiqilgan:

  • exos_lldp_global - Ekstremal tarmoqlardan.
  • nxos_bfd_interfaces - Cisco'dan
  • nxos_telemetry - Cisco'dan

Ko'rib turganingizdek, resurs modullari tushunchasi platformaga asoslangan strategiyamizga mos keladi. Ya'ni, biz tarmoq modullarini ishlab chiqishda standartlashtirishni qo'llab-quvvatlash, shuningdek, Ansible rollari va o'yin kitoblari darajasida foydalanuvchilarning ishini soddalashtirish uchun kerakli imkoniyatlar va funktsiyalarni Ansible-ga kiritamiz. Resurs modullarini ishlab chiqishni kengaytirish uchun Ansible jamoasi Module Builder vositasini chiqardi.

Ansible 2.10 va undan keyingi versiyalar uchun rejalar

Ansible 2.9 chiqarilgandan so'ng biz Ansible 2.10 uchun keyingi resurs modullari to'plami ustida ishlaymiz, ular tarmoq topologiyasi va siyosatini qo'shimcha sozlash uchun ishlatilishi mumkin, masalan. ACL, OSPF va BGP. Rivojlanish rejasi hali ham o'zgartirilishi mumkin, shuning uchun sharhlaringiz bo'lsa, iltimos, bu haqda xabar bering Ansible Network hamjamiyati.

Resurslar va boshlash

Ansible Automation Platform haqida press-reliz
Ansible avtomatlashtirish platformasi blogi
Ansible-da kontent yetkazib berish kelajagi
Ansible loyihasi strukturasini o'zgartirish bo'yicha mulohazalar

Manba: www.habr.com

a Izoh qo'shish