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
Yaqinda e'lon qilganimizdek,
- 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,
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
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
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.
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.
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:
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:
Quyidagi modullar Ansible hamjamiyati tomonidan ishlab chiqilgan:
exos_lldp_global
- Ekstremal tarmoqlardan.nxos_bfd_interfaces
- Cisco'dannxos_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.
Resurslar va boshlash
Manba: www.habr.com