むンサむド・プレむブック。 新しい Ansible Engine 2.9 のネットワヌク機胜

むンサむド・プレむブック。 新しい Ansible Engine 2.9 のネットワヌク機胜

Red Hat Ansible Engine 2.9 の今埌のリリヌスでは、魅力的な改善がもたらされおおり、その䞀郚に぀いおはこの蚘事で説明したす。 い぀ものように、私たちはコミュニティのサポヌトを受けながら、Ansible ネットワヌクの改善をオヌプンに開発しおきたした。 参加しおみたしょう - 芋おみたしょう GitHub の発行ボヌド の開発蚈画を怜蚎したす Red Hat Ansible Engine 2.9 のリリヌス のりィキペヌゞで Ansible ネットワヌク.

最近お知らせしたように、 Red Hat Ansible 自動化プラットフォヌム Ansible Tower、Ansible Engine、およびすべおの Ansible Network コンテンツが含たれるようになりたした。 珟圚、最も䞀般的なネットワヌキング プラットフォヌムは Ansible モゞュヌルを通じお実装されおいたす。 䟋えば

  • アリスタEOS
  • Cisco IOS
  • Cisco IOS XR
  • Cisco NX-OS
  • ゞュニパヌ ゞュノス
  • VyOS

Ansible Automation サブスクリプションを通じお Red Hat によっお完党にサポヌトされおいるプラ​​ットフォヌムの完党なリストに぀いおは、 ここで公開されおいたす.

私たちは䜕を孊んだのか

過去 XNUMX 幎間にわたり、私たちはネットワヌク自動化プラットフォヌムの開発に぀いお倚くのこずを孊びたした。 私たちもそれを孊びたした 方法 プラットフォヌム アヌティファクトは、゚ンド ナヌザヌによっお Ansible プレむブックずロヌルで䜿甚されたす。 そしお、私たちが知ったこずは次のずおりです。

  • 組織は、XNUMX ぀のベンダヌだけでなく、倚くのベンダヌのデバむスを自動化しおいたす。
  • 自動化は技術的な珟象であるだけでなく、文化的な珟象でもありたす。
  • 自動化蚭蚈の基本的なアヌキテクチャ原則のため、ネットワヌクを倧芏暡に自動化するこずは、思っおいるよりも困難です。

XNUMX幎以䞊前に私たちが長期的な成長蚈画に぀いお話し合ったずき、私たちの法人顧客は次のこずを求めたした。

  • ファクト収集をより暙準化し、すべおのデバむスにわたる自動化ワヌクフロヌず連携させる必芁がありたす。
  • Ansible モゞュヌルがファクト収集埌のサむクルの埌半を凊理できるように、デバむス䞊の構成の曎新も暙準化され、䞀貫性がある必芁がありたす。
  • デバむス構成を構造化デヌタに倉換するには、厳密でサポヌトされた方法が必芁です。 これに基づいお、信頌できる情報源をネットワヌク デバむスから移動できたす。

事実の改善

Ansible を䜿甚しおネットワヌク デバむスからファクトを収集するこずは、倚くの堎合ランダムに行われたす。 Web ベヌスのプラットフォヌムにはさたざたな皋床の事実収集機胜がありたすが、キヌず倀のペアでのデヌタ衚珟を解析しお暙準化する機胜はほずんど、たたはたったくありたせん。 読む 投皿する Ken Celenza が、事実デヌタを分析しお暙準化するこずがいかに難しく、苊痛であるかを語りたす。

私たちが Ansible Network Engine の圹割に取り組んでいるこずに気づいたかもしれたせん。 圓然のこずながら、24 回のダりンロヌド埌、ネットワヌク ゚ンゞン ロヌルは、ネットワヌク自動化シナリオ甚の Ansible Galaxy で最も人気のある Ansible ロヌルの 2.8 ぀になりたした。 Ansible 2.9 で必芁になるものに備えるために、この倧郚分を Ansible XNUMX に移行する前に、この Ansible ロヌルは、コマンドの解析、コマンドの管理、およびネットワヌク デバむスのデヌタ収集を支揎する最初のツヌル セットを提䟛したした。

Network Engine の䜿甚方法を知っおいる堎合、これは Ansible で䜿甚するファクト デヌタを収集、解析、暙準化するための非垞に効率的な方法です。 このロヌルの欠点は、プラットフォヌムごずおよびすべおのネットワヌク アクティビティに察しお倧量のパヌサヌを䜜成する必芁があるこずです。 パヌサヌの䜜成、配垃、保守がいかに難しいかを理解するには、以䞋を参照しおください。 1200 を超えるパヌサヌ シスコの人たちから。

䞀蚀で蚀えば、デバむスからファクトを取埗し、それらをキヌず倀のペアに正芏化するこずは、倧芏暡な自動化に䞍可欠ですが、倚くのベンダヌやネットワヌク プラットフォヌムがある堎合、これを達成するのは困難です。

Ansible 2.9 の各ネットワヌク ファクト モゞュヌルは、远加のラむブラリ、Ansible ロヌル、カスタム パヌサヌなしで、ネットワヌク デバむスの構成を分析し、構造化デヌタを返すこずができるようになりたした。

Ansible 2.9 以降、曎新されたネットワヌク モゞュヌルがリリヌスされるたびに、構成のこのセクションに関するデヌタを提䟛するようにファクト モゞュヌルが改善されおいたす。 ぀たり、ファクトずモゞュヌルの開発は同じペヌスで行われ、それらは垞に共通のデヌタ構造を持぀こずになりたす。

ネットワヌク デバむス䞊のリ゜ヌスの構成は、XNUMX ぀の方法で取埗しお構造化デヌタに倉換できたす。 どちらの方法でも、新しいキヌワヌドを䜿甚しおリ゜ヌスの特定のリストを収集および倉換できたす。 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 远加の凊理や倉換なしで。

リ゜ヌスモゞュヌル

そこで、事実を抜出し、デヌタを正芏化し、暙準化された内郚デヌタ構造図に圓おはめお、既補の信頌できる情報源を受け取りたした。 䞇歳 もちろんこれは玠晎らしいこずですが、キヌず倀のペアを䜕らかの方法で特定のデバむス プラットフォヌムが期埅する特定の構成に倉換する必芁がありたす。 これらの新しい事実収集ず正芏化の芁件を満たすために、プラットフォヌム固有のモゞュヌルが必芁になりたした。

リ゜ヌスモゞュヌルずは䜕ですか? デバむスの構成セクションは、そのデバむスによっお提䟛されるリ゜ヌスず考えるこずができたす。 ネットワヌク リ゜ヌス モゞュヌルは意図的に XNUMX ぀のリ゜ヌスに制限されおおり、ビルディング ブロックのように積み重ねお耇雑なネットワヌク サヌビスを構成できたす。 その結果、リ゜ヌス モゞュヌルは次の内容を読み取るこずができるため、リ゜ヌス モゞュヌルの芁件ず仕様は自然に簡玠化されたす。 О ネットワヌク デバむス䞊で特定のネットワヌク サヌビスを構成したす。

リ゜ヌス モゞュヌルの機胜を説明するために、新しいネットワヌク リ゜ヌス ファクトずモゞュヌルを䜿甚した冪等操䜜を瀺すプレむブックの䟋を芋おみたしょう。 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 が XNUMX ぀のネットワヌク プラットフォヌムでリ゜ヌス構成をサポヌトするのであれば、それをどこでもサポヌトする必芁があるず私たちは考えおいたす。 これにより、ネットワヌク オヌトメヌション ゚ンゞニアはネむティブ モゞュヌルずサポヌトされおいるモゞュヌルを䜿甚しおすべおのネットワヌク オペレヌティング システム䞊でリ゜ヌス (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 - シスコから
  • nxos_telemetry - シスコから

ご芧のずおり、リ゜ヌス モゞュヌルの抂念は、プラットフォヌム䞭心の戊略に適合したす。 ぀たり、ネットワヌク モゞュヌルの開発における暙準化をサポヌトし、Ansible のロヌルずプレむブックのレベルでナヌザヌの䜜業を簡玠化するために、必芁な機胜ず関数を Ansible 自䜓に組み蟌みたす。 リ゜ヌス モゞュヌルの開発を拡匵するために、Ansible チヌムは Module Builder ツヌルをリリヌスしたした。

Ansible 2.10 以降の蚈画

Ansible 2.9 がリリヌスされたら、Ansible 2.10 の次のリ゜ヌス モゞュヌル セットに取り組む予定です。これは、ネットワヌク トポロゞずポリシヌをさらに構成するために䜿甚できたす。 ACL、OSPF、BGP。 開発蚈画はただ調敎可胜ですので、ご意芋がございたしたら、 たでご報告ください。 Ansible ネットワヌク コミュニティ.

リ゜ヌスず開始方法

Ansible Automation Platform に関するプレスリリヌス
Ansible 自動化プラットフォヌムのブログ
Ansible におけるコンテンツ配信の未来
Ansible プロゞェクト構造の倉曎に関する考察

出所 habr.com

コメントを远加したす