The Inside Playbook. Жаңы Ansible Engine 2.9. тармактык өзгөчөлүктөрү

The Inside Playbook. Жаңы Ansible Engine 2.9. тармактык өзгөчөлүктөрү

Red Hat Ansible Engine 2.9 келе жаткан релиз кызыктуу жакшыртууларды алып келет, алардын айрымдары ушул макалада талкууланат. Адаттагыдай эле, биз коомчулуктун колдоосу менен Ansible Network жакшыртууларын ачык иштеп жатабыз. Бизге кошулуңуз - карап көрүңүз GitHub боюнча чыгаруу тактасы жана өнүктүрүү планын изилдөө Red Hat Ansible Engine 2.9 чыгаруу үчүн вики бетинде Ansible Network.

Жакында биз жарыялагандай, Red Hat Ansible автоматташтыруу платформасы азыр 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 ролу буйруктарды талдоо, буйруктарды башкаруу жана тармактык түзүлүштөр үчүн маалыматтарды чогултууга жардам берүүчү куралдардын биринчи топтомун камсыз кылды.

Тармак кыймылдаткычын кантип колдонууну билсеңиз, бул 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: Ресурс конфигурациясы жок кылынат/демейки абалга келтирилет.

The Inside Playbook. Жаңы Ansible Engine 2.9. тармактык өзгөчөлүктөрү

3) Ресурстук модулдар азыр туруктуу кайтаруу маанилерин камтыйт. Тармактык ресурс модулу тармак түзмөгүнө керектүү өзгөртүүлөрдү киргизгенде (же сунуш кылганда), ал ошол эле ачкыч-маани жуптарын оюн китебине кайтарат.

  • before: тапшырманын алдында структураланган маалыматтар түрүндө түзүлүштөгү конфигурация;
  • after: эгерде аппарат өзгөрсө (же сыноо режими колдонулса өзгөрүшү мүмкүн), натыйжада конфигурация структураланган маалымат катары кайтарылат;
  • commands: Каалаган конфигурация буйруктары аппаратты керектүү абалга алып келүү үчүн иштейт.

The Inside Playbook. Жаңы Ansible Engine 2.9. тармактык өзгөчөлүктөрү

The Inside Playbook. Жаңы Ansible Engine 2.9. тармактык өзгөчөлүктөрү

Мунун баары эмнени билдирет? Бул эмне үчүн маанилүү?

Бул пост көптөгөн татаал концепцияларды камтыйт, бирок акыры сиз ишкананын кардарлары чындыгында чогултуу, маалыматтарды нормалдаштыруу жана автоматташтыруу платформасы үчүн цикл конфигурациясын сурап жатканын жакшыраак түшүнөсүз деп үмүттөнөбүз. Бирок эмне үчүн аларга бул жакшыртуулар керек? Көптөгөн уюмдар азыр IT чөйрөлөрүн ийкемдүү жана атаандаштыкка жөндөмдүү кылуу үчүн санариптик трансформацияны көздөп жатышат. Жаманбы же жакшыбы, көптөгөн тармак инженерлери жеке кызыкчылыктан улам же жетекчиликтин буйругу менен тармакты иштеп чыгуучуларга айланат.

Уюмдар жеке тармак шаблондорун автоматташтыруу силос маселесин чечпей турганын жана белгилүү бир деңгээлде эффективдүүлүктү гана жогорулата тургандыгын түшүнүп жатышат. Red Hat Ansible Automation Platform тармак түзмөгүндөгү негизги маалыматтарды программалык түрдө башкаруу үчүн катаал жана ченемдик ресурс маалымат моделдерин камсыз кылат. Башкача айтканда, колдонуучулар акырындык менен жеке конфигурациялоо ыкмаларынан баш тартып, конкреттүү сатуучунун ишке ашыруусуна эмес, технологияларга басым жасоо менен заманбап методдордун пайдасына баш тартышууда (мисалы, IP даректер, VLANлар, LLDP ж.б.).

Бул ишенимдүү жана далилденген командалык модулдардын жана конфигурациянын күндөрү саналганын билдиреби? Эч кандай учурда. Күтүлгөн тармак ресурсу модулдары бардык учурларда же ар бир сатуучу үчүн колдонулбайт, ошондуктан командалык жана конфигурациялоо модулдары тармак инженерлерине белгилүү бир ишке ашыруу үчүн дагы эле керек болот. Ресурстук модулдардын максаты - чоң Jinja шаблондорун жөнөкөйлөтүү жана структураланбаган түзмөк конфигурацияларын структураланган JSON форматына нормалдаштыруу. Ресурстук модулдар менен, учурдагы тармактар ​​үчүн алардын конфигурациясын чындыктын окууга оңой булагы болгон структураланган ачкыч-маани жуптарына айландыруу оңой болот. Структураланган ачкыч-маани жуптарын колдонуу менен, сиз ар бир түзмөктө иштеп жаткан конфигурациядан көз карандысыз структураланган маалыматтар менен иштөөгө өтүп, тармактарды код катары инфраструктуралык мамиленин алдыңкы планына чыгара аласыз.

Ansible Engine 2.9да кандай ресурстук модулдар келет?

Ansible 2.9да эмне болорун майда-чүйдөсүнө чейин айтып берерден мурун, келгиле, иштин бардык чөйрөсүн кантип бөлгөнүбүздү эстеп көрөлү.

Биз 7 категорияны аныктап, ар бирине белгилүү тармак ресурстарын дайындадык:

The Inside Playbook. Жаңы Ansible Engine 2.9. тармактык өзгөчөлүктөрү

Эскертүү: Кара шрифт менен жазылган ресурстар Ansible 2.9да пландаштырылган жана ишке ашырылган.
Ишкана кардарларынын жана коомчулуктун пикирлеринин негизинде, адегенде тармактык топологиянын протоколдоруна, виртуалдаштырууга жана интерфейстерге тиешелүү модулдарды чечүү логикалык болду.
Төмөнкү ресурс модулдары Ansible Network командасы тарабынан иштелип чыккан жана Red Hat тарабынан колдоого алынган платформаларга туура келет:

The Inside Playbook. Жаңы 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 долбоорунун структурасын өзгөртүү боюнча ой жүгүртүү

Source: www.habr.com

Комментарий кошуу