Ішкі ойын кітабы. Жаңа Ansible Engine 2.9 жүйесіндегі желі функциялары

Ішкі ойын кітабы. Жаңа Ansible Engine 2.9 жүйесіндегі желі функциялары

Red Hat Ansible Engine 2.9-ның алдағы шығарылымы қызықты жақсартулар әкеледі, олардың кейбіреулері осы мақалада талқыланады. Әдеттегідей, біз қауымдастықтың қолдауымен Ansible Network жақсартуларын ашық түрде дамытып келеміз. Бізге қосылыңыз - қараңыз GitHub сайтындағы шығарылым тақтасы және даму жоспарын зерттейді Red Hat Ansible Engine 2.9 шығарылымы үшін вики бетінде Ansible Network.

Жақында хабарлағанымыздай, Red Hat Автоматтандыру платформасы енді Ansible Tower, Ansible Engine және барлық Ansible Network мазмұнын қамтиды. Қазіргі уақытта ең танымал желілік платформалар Ansible модульдері арқылы жүзеге асырылады. Мысалы:

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

Ansible Automation жазылымы арқылы Red Hat толығымен қолдайтын платформалардың толық тізімі үшін, осында жарияланған.

Біз не үйрендік

Соңғы төрт жылда біз желіні автоматтандыру платформасын әзірлеу туралы көп нәрсені білдік. Біз де соны білдік қалай платформа артефактілері Ansible ойын кітаптарында және соңғы пайдаланушылардың рөлдерінде пайдаланылады. Міне, біз мынаны білдік:

  • Ұйымдар бір ғана емес, көптеген жеткізушілердің құрылғыларын автоматтандырады.
  • Автоматтандыру тек техникалық құбылыс емес, сонымен қатар мәдени құбылыс.
  • Масштаб бойынша желілерді автоматтандыру автоматтандыруды жобалаудың іргелі архитектуралық принциптеріне байланысты көрінгеннен гөрі қиынырақ.

Бір жыл бұрын біз ұзақ мерзімді өсу жоспарларымызды талқылағанда, біздің корпоративтік клиенттеріміз мыналарды сұрады:

  • Фактілерді жинауды жақсырақ стандарттау және барлық құрылғылардағы автоматтандыру жұмыс үрдісімен сәйкестендіру қажет.
  • Ansible модульдері фактілерді жинағаннан кейін циклдің екінші жартысын өңдеуі үшін құрылғыдағы конфигурацияларды жаңарту да стандартталған және дәйекті болуы керек.
  • Бізге құрылғы конфигурациясын құрылымдық деректерге түрлендіру үшін қатаң және қолдау көрсетілетін әдістер қажет. Осы негізде ақиқат көзі желілік құрылғыдан жылжытылуы мүмкін.

Факті жақсартулар

Ansible көмегімен желілік құрылғылардан фактілерді жинау жиі кездейсоқ болады. Веб-негізделген платформалардың әртүрлі дәрежедегі фактілерді жинау мүмкіндіктері бар, бірақ оларда кілт-мән жұптарындағы деректерді көрсетуді талдау және стандарттау үшін функционалдығы аз немесе мүлдем жоқ. Оқы пошта Кен Челенза нақты деректерді талдау және стандарттау қаншалықты қиын және ауыр болатыны туралы.

Сіз біздің Ansible Network Engine рөлінде жұмыс істеп жатқанымызды байқаған боларсыз. Әрине, кейінірек 24K жүктеп алынғаннан кейін Network Engine рөлі тез арада желіні автоматтандыру сценарийлеріне арналған Ansible Galaxy жүйесіндегі ең танымал Ansible рөлдерінің біріне айналды. Біз Ansible 2.8 жүйесінде не қажет болатынын дайындау үшін осының көп бөлігін Ansible 2.9 нұсқасына көшірмес бұрын, бұл Ansible рөлі пәрмендерді талдауға, пәрмендерді басқаруға және желілік құрылғылар үшін деректерді жинауға көмектесетін құралдардың бірінші жинағын қамтамасыз етті.

Егер сіз Network Engine пайдалануды білсеңіз, бұл Ansible бағдарламасында пайдалану үшін фактілерді жинаудың, талдаудың және стандарттаудың өте тиімді жолы. Бұл рөлдің кемшілігі - әрбір платформа үшін және барлық желі әрекеті үшін талдаушылардың тұтас тобын жасау қажет. Талдауыштарды жасау, тасымалдау және қолдау қаншалықты қиын екенін түсіну үшін мынаны қараңыз 1200-ден астам талдаушы Cisco-дағы жігіттерден.

Бір сөзбен айтқанда, құрылғылардан фактілерді алу және оларды кілт-мән жұптарына қалыпқа келтіру масштабта автоматтандыру үшін өте маңызды, бірақ көптеген жеткізушілер мен желілік платформалар болған кезде оған қол жеткізу қиын.

Ansible 2.9 жүйесіндегі әрбір желілік факті модулі енді желі құрылғысының конфигурациясын талдай алады және құрылымдық деректерді қайтара алады - қосымша кітапханаларсыз, Ansible рөлдерсіз немесе реттелетін талдаушыларсыз.

Ansible 2.9 нұсқасынан бастап жаңартылған желілік модуль шығарылған сайын, конфигурацияның осы бөлімі туралы деректерді қамтамасыз ету үшін факті модулі жақсартылады. Яғни, қазір фактілер мен модульдердің дамуы бірдей қарқынмен жүреді және олар әрқашан ортақ деректер құрылымына ие болады.

Желілік құрылғыдағы ресурстар конфигурациясын екі жолмен алуға және құрылымдық деректерге түрлендіруге болады. Екі жолмен де жаңа кілт сөзді пайдаланып ресурстардың белгілі бір тізімін жинап, түрлендіруге болады gather_network_resources. Ресурс атаулары модуль атауларына сәйкес келеді, бұл өте ыңғайлы.

Фактілерді жинау кезінде:

Кілт сөзді пайдалану gather_facts ағымдағы құрылғы конфигурациясын ойын кітабының басында шығарып алуға болады, содан кейін оны бүкіл ойын кітабында пайдалануға болады. Құрылғыдан шығарылатын жеке ресурстарды көрсетіңіз.

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

Сіз бұл мысалдарда жаңа нәрсені байқаған боларсыз, атап айтқанда - gather_facts: true желілік құрылғылар үшін жергілікті фактілерді жинау үшін қол жетімді.

Желілік факті модулін тікелей пайдалану:

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

Ойын кітабы интерфейс туралы келесі фактілерді қайтарады:

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 бағдарламасы Arista құрылғысынан жергілікті конфигурацияны қалай шығарып алатынын және оны төменгі ағындық тапсырмалар мен операциялар үшін стандартты кілт-мән жұптары ретінде пайдалану үшін құрылымдық деректерге түрлендіретініне назар аударыңыз.

Интерфейс фактілерін Ansible сақталған айнымалы мәндерге қосуға және бірден немесе кейінірек ресурс модуліне кіріс ретінде пайдалануға болады. eos_interfaces қосымша өңдеусіз немесе түрлендірусіз.

Ресурс модульдері

Осылайша, біз фактілерді шығарып, деректерді қалыпқа келтірдік, оларды стандартталған ішкі деректер құрылымы диаграммасына сәйкестендірдік және ақиқаттың дайын көзін алдық. Ура! Бұл, әрине, тамаша, бірақ біз әлі де кілт-мән жұптарын белгілі бір құрылғы платформасы күтетін нақты конфигурацияға қайта түрлендіруіміз керек. Осы жаңа фактілерді жинау және қалыпқа келтіру талаптарын қанағаттандыру үшін бізге енді платформаға арналған модульдер қажет.

Ресурс модулі дегеніміз не? Құрылғының конфигурация бөлімдерін сол құрылғы қамтамасыз ететін ресурстар ретінде қарастыруға болады. Желілік ресурс модульдері әдейі бір ресурспен шектелген және күрделі желі қызметтерін конфигурациялау үшін құрылыс блоктары сияқты жинақтауға болады. Нәтижесінде ресурс модуліне қойылатын талаптар мен сипаттамалар табиғи түрде жеңілдетілген, өйткені ресурс модулі оқи алады. и желі құрылғысында белгілі бір желі қызметін конфигурациялаңыз.

Ресурс модулінің не істейтінін түсіндіру үшін жаңа желілік ресурс фактілері мен модульді пайдаланып идемподенттік әрекетті көрсететін мысал оқу кітабын қарастырайық. 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

Көріп отырғаныңыздай, құрылғыдан жиналған деректер түрлендірусіз тікелей сәйкес ресурс модуліне жіберіледі. Іске қосылған кезде ойын кітабы құрылғыдан мәндерді шығарып, оларды күтілетін мәндермен салыстырады. Бұл мысалда қайтарылған мәндер күтілгендей болады (яғни конфигурацияның ауытқуларын тексереді) және конфигурацияның өзгергенін хабарлайды.

Конфигурацияның ауытқуын анықтаудың тамаша жолы фактілерді Ansible сақталған айнымалы мәндерде сақтау және оларды тексеру режимінде ресурс модулімен мерзімді түрде пайдалану болып табылады. Бұл біреу мәндерді қолмен өзгерткенін көрудің қарапайым әдісі. Көптеген жағдайларда ұйымдар өзгерістер мен конфигурацияға қолмен рұқсат береді, дегенмен көптеген операциялар Ansible Automation арқылы орындалады.

Жаңа ресурс модульдері бұрынғылардан қалай ерекшеленеді?

Желіні автоматтандыру инженері үшін Ansible 3 және алдыңғы нұсқалардағы ресурс модульдері арасында 2.9 негізгі айырмашылық бар.

1) Берілген желі ресурсы үшін (оны конфигурация бөлімі ретінде де қарастыруға болады) модульдер мен фактілер барлық қолдау көрсетілетін желілік операциялық жүйелерде бір уақытта дамып отырады. Егер Ansible бір желілік платформада ресурс конфигурациясын қолдаса, біз оны барлық жерде қолдауымыз керек деп ойлаймыз. Бұл ресурс модульдерін пайдалануды жеңілдетеді, себебі желіні автоматтандыру инженері енді жергілікті және қолдау көрсетілетін модульдері бар барлық желілік операциялық жүйелерде ресурсты (LLDP сияқты) конфигурациялай алады.

2) Ресурс модульдері енді күй мәнін қамтиды.

  • merged: конфигурация берілген конфигурациямен біріктірілген (әдепкі);
  • replaced: Ресурс конфигурациясы берілген конфигурациямен ауыстырылады;
  • overridden: Ресурс конфигурациясы берілген конфигурациямен ауыстырылады; қажет емес ресурс даналары жойылады;
  • deleted: Ресурс конфигурациясы жойылады/әдепкіге қалпына келтіріледі.

Ішкі ойын кітабы. Жаңа Ansible Engine 2.9 жүйесіндегі желі функциялары

3) Ресурс модульдері енді тұрақты қайтару мәндерін қамтиды. Желілік ресурс модулі желілік құрылғыға қажетті өзгертулерді жасағанда (немесе ұсынғанда), ол ойын кітабына бірдей кілт-мән жұптарын қайтарады.

  • before: тапсырма алдында құрылымдық деректер түріндегі құрылғыдағы конфигурация;
  • after: құрылғы өзгерсе (немесе сынақ режимі пайдаланылса өзгеруі мүмкін), нәтижесінде алынған конфигурация құрылымдық деректер ретінде қайтарылады;
  • commands: Құрылғыны қажетті күйге келтіру үшін кез келген конфигурация пәрмендері іске қосылады.

Ішкі ойын кітабы. Жаңа Ansible Engine 2.9 жүйесіндегі желі функциялары

Ішкі ойын кітабы. Жаңа Ansible Engine 2.9 жүйесіндегі желі функциялары

Мұның бәрі нені білдіреді? Неліктен маңызды?

Бұл пост көптеген күрделі ұғымдарды қамтиды, бірақ соңында сіз кәсіпорын клиенттері шын мәнінде жинауды, деректерді қалыпқа келтіруді және автоматтандыру платформасы үшін цикл конфигурациясын сұрайтынын жақсырақ түсінесіз деп үміттенеміз. Бірақ оларға бұл жақсартулар не үшін қажет? Қазір көптеген ұйымдар IT орталарын икемді және бәсекеге қабілетті ету үшін цифрлық трансформацияны жүргізуде. Жақсы немесе жаман, көптеген желілік инженерлер өз мүдделері үшін немесе басшылықтың қалауы бойынша желіні әзірлеушілерге айналады.

Ұйымдар жеке желілік шаблондарды автоматтандыру силос мәселесін шешпейтінін және белгілі бір дәрежеде тиімділікті арттыратынын түсінеді. Red Hat Ansible Automation Platform желілік құрылғыдағы негізгі деректерді бағдарламалық түрде басқару үшін қатаң және нормативтік ресурс деректер үлгілерін ұсынады. Яғни, пайдаланушылар конфигурациялаудың жеке әдістерінен бірте-бірте бас тартып, нақты жеткізушінің жүзеге асыруына емес, технологияларға (мысалы, IP мекенжайлары, VLAN, LLDP және т.

Бұл сенімді және дәлелденген командалық модульдер мен конфигурация күндері нөмірленгенін білдіре ме? Ешбір жағдайда. Күтілетін желілік ресурс модульдері барлық жағдайларда немесе әрбір жеткізуші үшін қолданыла бермейді, сондықтан командалық және конфигурация модульдері әлі де белгілі бір іске асыру үшін желі инженерлеріне қажет болады. Ресурс модульдерінің мақсаты - үлкен Jinja үлгілерін жеңілдету және құрылымдалмаған құрылғы конфигурацияларын құрылымдық JSON пішіміне қалыпқа келтіру. Ресурс модульдері арқылы бар желілерге конфигурациясын оңай оқылатын ақиқат көзін көрсететін құрылымдық кілт-мән жұптарына түрлендіру оңайырақ болады. Құрылымдық кілт-мән жұптарын пайдалану арқылы әрбір құрылғыдағы іске қосылған конфигурациялардан тәуелсіз құрылымдық деректермен жұмыс істеуге көшуге және желілерді код ретіндегі инфрақұрылым тәсілінің алдыңғы қатарына шығаруға болады.

Ansible Engine 2.9 жүйесінде қандай ресурс модульдері келеді?

Ansible 2.9-да не болатынын егжей-тегжейлі айтпас бұрын, бүкіл жұмыс көлемін қалай бөлгенімізді еске түсірейік.

Біз 7 санатты анықтадық және әрқайсысына арнайы желі ресурстарын тағайындадық:

Ішкі ойын кітабы. Жаңа Ansible Engine 2.9 жүйесіндегі желі функциялары

Ескерту: Қара шрифтпен жазылған ресурстар Ansible 2.9-да жоспарланған және енгізілген.
Кәсіпорын тұтынушылары мен қауымдастықтың пікірлеріне сүйене отырып, алдымен желілік топология протоколдарына, виртуализацияға және интерфейстерге қатысты модульдерді шешу қисынды болды.
Келесі ресурс модульдерін Ansible Network тобы әзірлеген және Red Hat қолдайтын платформаларға сәйкес келеді:

Ішкі ойын кітабы. Жаңа Ansible Engine 2.9 жүйесіндегі желі функциялары

Келесі модульдерді Ansible қауымдастығы әзірлеген:

  • exos_lldp_global - экстремалды желілерден.
  • nxos_bfd_interfaces - Cisco компаниясынан
  • nxos_telemetry - Cisco компаниясынан

Көріп отырғаныңыздай, ресурстық модульдер тұжырымдамасы платформаға бағытталған стратегиямызға сәйкес келеді. Яғни, біз Ansible-дің өзінде желілік модульдерді әзірлеуде стандарттауды қолдау үшін, сондай-ақ Ansible рөлдері мен ойын кітаптары деңгейінде пайдаланушылардың жұмысын жеңілдету үшін қажетті мүмкіндіктер мен функцияларды қосамыз. Ресурс модульдерінің дамуын кеңейту үшін Ansible командасы Module Builder құралын шығарды.

Ansible 2.10 және одан кейінгі нұсқаларға арналған жоспарлар

Ansible 2.9 шығарылғаннан кейін біз Ansible 2.10 үшін ресурс модульдерінің келесі жиынтығымен жұмыс істейміз, олар желі топологиясы мен саясатын одан әрі конфигурациялау үшін пайдаланылуы мүмкін, мысалы: ACL, OSPF және BGP. Даму жоспарын әлі де түзетуге болады, сондықтан пікірлеріңіз болса, хабарлаңыз Ansible Network қауымдастығы.

Ресурстар және бастау

Ansible Automation Platform туралы пресс-релиз
Ansible Automation Platform Blog
Ansible-де мазмұнды жеткізудің болашағы
Ansible жобасының құрылымын өзгерту туралы ойлар

Ақпарат көзі: www.habr.com

пікір қалдыру