The Inside Playbook. ืคื•ื ืงืฆื™ื•ืช ืจืฉืช ื‘-Ansible Engine 2.9 ื”ื—ื“ืฉ

The Inside Playbook. ืคื•ื ืงืฆื™ื•ืช ืจืฉืช ื‘-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. ื›ื™ื•ื, ืจื•ื‘ ืคืœื˜ืคื•ืจืžื•ืช ื”ืจืฉืช ื”ืคื•ืคื•ืœืจื™ื•ืช ืžื™ื•ืฉืžื•ืช ื‘ืืžืฆืขื•ืช ืžื•ื“ื•ืœื™ Ansible. ืœื“ื•ื’ืžื”:

  • ืืจื™ืกื˜ื” EOS
  • IOS ืฉืœ ืกื™ืกืงื•
  • Cisco IOS XR
  • Cisco NX-OS
  • ื’'ื•ื ื™ืคืจ ื’'ื•ื ื•ืก
  • VyOS

ืœืจืฉื™ืžื” ืžืœืื” ืฉืœ ืคืœื˜ืคื•ืจืžื•ืช ื”ื ืชืžื›ื•ืช ื‘ืื•ืคืŸ ืžืœื ืขืœ ื™ื“ื™ Red Hat ื‘ืืžืฆืขื•ืช ืžื ื•ื™ Ansible Automation, ืคื•ืจืกื ื›ืืŸ.

ืžื” ืœืžื“ื ื•

ื‘ืžื”ืœืš ืืจื‘ืข ื”ืฉื ื™ื ื”ืื—ืจื•ื ื•ืช, ืœืžื“ื ื• ื”ืจื‘ื” ืขืœ ืคื™ืชื•ื— ืคืœื˜ืคื•ืจืžืช ืื•ื˜ื•ืžืฆื™ื” ืฉืœ ืจืฉืชื•ืช. ื’ื ืืช ื–ื” ืœืžื“ื ื• ืื™ืš ื—ืคืฆื™ ืคืœื˜ืคื•ืจืžื” ืžืฉืžืฉื™ื ื‘ืกืคืจื™ ืžืฉื—ืง ื•ื‘ืชืคืงื™ื“ื™ื ืฉืœ Ansible ืขืœ ื™ื“ื™ ืžืฉืชืžืฉื™ ืงืฆื”. ื•ื”ื ื” ืžื” ืฉื’ื™ืœื™ื ื•:

  • ืืจื’ื•ื ื™ื ืขื•ืฉื™ื ืื•ื˜ื•ืžืฆื™ื” ืฉืœ ืžื›ืฉื™ืจื™ื ืœื ืจืง ืžืื—ื“, ืืœื ืžืกืคืงื™ื ืจื‘ื™ื.
  • ืื•ื˜ื•ืžืฆื™ื” ื”ื™ื ืœื ืจืง ืชื•ืคืขื” ื˜ื›ื ื™ืช, ืืœื ื’ื ืชื•ืคืขื” ืชืจื‘ื•ืชื™ืช.
  • ืื•ื˜ื•ืžืฆื™ื” ืฉืœ ืจืฉืชื•ืช ื‘ืงื ื” ืžื™ื“ื” ืงืฉื” ื™ื•ืชืจ ืžืžื” ืฉื ืจืื” ื‘ื’ืœืœ ื”ืขืงืจื•ื ื•ืช ื”ืืจื›ื™ื˜ืงื˜ื•ื ื™ื™ื ื”ื‘ืกื™ืกื™ื™ื ืฉืœ ืชื›ื ื•ืŸ ืื•ื˜ื•ืžืฆื™ื”.

ื›ืืฉืจ ื“ื ื• ื‘ืชื•ื›ื ื™ื•ืช ื”ืฆืžื™ื—ื” ืืจื•ื›ื•ืช ื”ื˜ื•ื•ื— ืฉืœื ื• ืœืคื ื™ ื™ื•ืชืจ ืžืฉื ื”, ื”ืœืงื•ื—ื•ืช ื”ืืจื’ื•ื ื™ื™ื ืฉืœื ื• ื‘ื™ืงืฉื• ืืช ื”ื“ื‘ืจื™ื ื”ื‘ืื™ื:

  • ืื™ืกื•ืฃ ื”ืขื•ื‘ื“ื•ืช ืฆืจื™ืš ืœื”ื™ื•ืช ืกื˜ื ื“ืจื˜ื™ ื™ื•ืชืจ ื•ืœื™ื™ืฉืจ ืืช ื–ืจื™ืžื•ืช ื”ืขื‘ื•ื“ื” ืฉืœ ืื•ื˜ื•ืžืฆื™ื” ื‘ื›ืœ ื”ืžื›ืฉื™ืจื™ื.
  • ื’ื ืขื“ื›ื•ืŸ ื”ืชืฆื•ืจื•ืช ื‘ืžื›ืฉื™ืจ ืฆืจื™ืš ืœื”ื™ื•ืช ืกื˜ื ื“ืจื˜ื™ ื•ืขืงื‘ื™ ื›ืš ืฉืžื•ื“ื•ืœื™ Ansible ื™ื˜ืคืœื• ื‘ืžื—ืฆื™ืช ื”ืฉื ื™ื™ื” ืฉืœ ื”ืžื—ื–ื•ืจ ืœืื—ืจ ืื™ืกื•ืฃ ืขื•ื‘ื“ื•ืช.
  • ืื ื• ื–ืงื•ืงื™ื ืœืฉื™ื˜ื•ืช ืงืคื“ื ื™ื•ืช ื•ื ืชืžื›ื•ืช ืœื”ืžืจืช ืชืฆื•ืจืช ื”ืžื›ืฉื™ืจ ืœื ืชื•ื ื™ื ืžื•ื‘ื ื™ื. ืขืœ ื‘ืกื™ืก ื–ื”, ื ื™ืชืŸ ืœื”ืขื‘ื™ืจ ืืช ืžืงื•ืจ ื”ืืžืช ืžื”ืชืงืŸ ื”ืจืฉืช.

ืฉื™ืคื•ืจื™ื ื‘ืขื•ื‘ื“ื•ืช

ืื™ืกื•ืฃ ืขื•ื‘ื“ื•ืช ืžืžื›ืฉื™ืจื™ ืจืฉืช ื‘ืืžืฆืขื•ืช Ansible ืงื•ืจื” ืœืขืชื™ื ืงืจื•ื‘ื•ืช ื‘ืืงืจืื™. ืœืคืœื˜ืคื•ืจืžื•ืช ืžื‘ื•ืกืกื•ืช ืื™ื ื˜ืจื ื˜ ื™ืฉ ื“ืจื’ื•ืช ืฉื•ื ื•ืช ืฉืœ ื™ื›ื•ืœื•ืช ืื™ืกื•ืฃ ืขื•ื‘ื“ื•ืช, ืืš ื™ืฉ ืœื”ืŸ ืžืขื˜ ืื• ืœืœื ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ืœื ื™ืชื•ื— ื•ืกื˜ื ื“ืจื˜ื™ื–ืฆื™ื” ืฉืœ ื™ื™ืฆื•ื’ ื”ื ืชื•ื ื™ื ื‘ืฆืžื“ื™ ืžืคืชื—-ืขืจืš. ืœืงืจื•ื ืœื”ืฆื™ื‘ ืงืŸ ืกืœื ื–ื” ืขืœ ื›ืžื” ืงืฉื” ื•ื›ื•ืื‘ ื–ื” ื™ื›ื•ืœ ืœื”ื™ื•ืช ืœื ืชื— ื•ืœืชืงืŸ ื ืชื•ื ื™ื ืขื•ื‘ื“ืชื™ื™ื.

ืื•ืœื™ ืฉืžืชื ืœื‘ ืฉืื ื—ื ื• ืขื•ื‘ื“ื™ื ืขืœ ืชืคืงื™ื“ Ansible Network Engine. ื‘ืื•ืคืŸ ื˜ื‘ืขื™, ื”ื•ืจื“ื•ืช 24K ืžืื•ื—ืจ ื™ื•ืชืจ, ืชืคืงื™ื“ ืžื ื•ืข ื”ืจืฉืช ื”ืคืš ื‘ืžื”ื™ืจื•ืช ืœืื—ื“ ืžืชืคืงื™ื“ื™ Ansible ื”ืคื•ืคื•ืœืจื™ื™ื ื‘ื™ื•ืชืจ ื‘-Ansible Galaxy ืขื‘ื•ืจ ืชืจื—ื™ืฉื™ ืื•ื˜ื•ืžืฆื™ื” ืฉืœ ืจืฉืช. ืœืคื ื™ ืฉื”ืขื‘ืจื ื• ื—ืœืง ื’ื“ื•ืœ ืžื–ื” ืœ-Ansible 2.8 ื›ื“ื™ ืœื”ืชื›ื•ื ืŸ ืœืžื” ืฉื™ื™ื“ืจืฉ ื‘-Ansible 2.9, ืชืคืงื™ื“ Ansible ื–ื” ืกื™ืคืง ืืช ืงื‘ื•ืฆืช ื”ื›ืœื™ื ื”ืจืืฉื•ื ื” ื›ื“ื™ ืœืกื™ื™ืข ื‘ื ื™ืชื•ื— ืคืงื•ื“ื•ืช, ื ื™ื”ื•ืœ ืคืงื•ื“ื•ืช ื•ืื™ืกื•ืฃ ื ืชื•ื ื™ื ืขื‘ื•ืจ ื”ืชืงื ื™ ืจืฉืช.

ืื ืืชื” ื™ื•ื“ืข ืœื”ืฉืชืžืฉ ื‘ืžื ื•ืข ืจืฉืช, ื–ื•ื”ื™ ื“ืจืš ื™ืขื™ืœื” ืžืื•ื“ ืœืืกื•ืฃ, ืœื ืชื— ื•ืœืชืงืŸ ื ืชื•ื ื™ ืขื•ื‘ื“ื•ืช ืœืฉื™ืžื•ืฉ ื‘-Ansible. ื”ื—ื™ืกืจื•ืŸ ื‘ืชืคืงื™ื“ ื–ื” ื”ื•ื ืฉืืชื” ืฆืจื™ืš ืœื™ืฆื•ืจ ื—ื‘ื•ืจื” ืฉืœืžื” ืฉืœ ืžื ืชื—ื™ื ืœื›ืœ ืคืœื˜ืคื•ืจืžื” ื•ืœื›ืœ ืคืขื™ืœื•ืช ื”ืจืฉืช. ื›ื“ื™ ืœื”ื‘ื™ืŸ ื›ืžื” ืงืฉื” ืœื™ืฆื•ืจ, ืœืฉืœื•ื— ื•ืœืชื—ื–ืง ืžื ืชื—ื™ื, ืชืกืชื›ืœ ืขืœ ื™ื•ืชืจ ืž-1200 ืžื ืชื—ื™ื ืžื”ื—ื‘ืจ'ื” ื‘ืกื™ืกืงื•.

ื‘ืงืฆืจื”, ืงื‘ืœืช ืขื•ื‘ื“ื•ืช ืžืžื›ืฉื™ืจื™ื ื•ื ื•ืจืžืœื™ื–ืฆื™ื” ืœืฆืžื“ื™ ืžืคืชื—-ืขืจืš ื—ื™ื•ื ื™ื™ื ืœืื•ื˜ื•ืžืฆื™ื” ื‘ืงื ื” ืžื™ื“ื” ื’ื“ื•ืœ, ืืš ื”ืฉื’ืช ื–ืืช ืงืฉื” ื›ืืฉืจ ื™ืฉ ืœืš ืกืคืงื™ื ื•ืคืœื˜ืคื•ืจืžื•ืช ืจืฉืช ืจื‘ื•ืช.

ื›ืœ ืžื•ื“ื•ืœ ืขื•ื‘ื“ื•ืช ืจืฉืช ื‘-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.

ื‘ืžื” ืฉื•ื ื™ื ืžื•ื“ื•ืœื™ ื”ืžืฉืื‘ื™ื ื”ื—ื“ืฉื™ื ืžื”ืงื•ื“ืžื™ื?

ืขื‘ื•ืจ ืžื”ื ื“ืก ืื•ื˜ื•ืžืฆื™ื” ื‘ืจืฉืช, ื™ืฉื ื 3 ื”ื‘ื“ืœื™ื ืขื™ืงืจื™ื™ื ื‘ื™ืŸ ืžื•ื“ื•ืœื™ ืžืฉืื‘ื™ื ื‘-Ansible 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, VLANs, 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 - ืžืกื™ืกืงื•
  • nxos_telemetry - ืžืกื™ืกืงื•

ื›ืคื™ ืฉืืชื” ื™ื›ื•ืœ ืœืจืื•ืช, ื”ืจืขื™ื•ืŸ ืฉืœ ืžื•ื“ื•ืœื™ ืžืฉืื‘ื™ื ืžืฉืชืœื‘ ื‘ืืกื˜ืจื˜ื’ื™ื” ื”ืžืžื•ืงื“ืช ื‘ืคืœื˜ืคื•ืจืžื” ืฉืœื ื•. ื›ืœื•ืžืจ, ืื ื• ื›ื•ืœืœื™ื ืืช ื”ื™ื›ื•ืœื•ืช ื•ื”ืคื•ื ืงืฆื™ื•ืช ื”ื“ืจื•ืฉื•ืช ื‘-Ansible ืขืฆืžื” ื›ื“ื™ ืœืชืžื•ืš ื‘ืกื˜ื ื“ืจื˜ื™ื–ืฆื™ื” ื‘ืคื™ืชื•ื— ืžื•ื“ื•ืœื™ ืจืฉืช, ื•ื’ื ื›ื“ื™ ืœืคืฉื˜ ืืช ืขื‘ื•ื“ืช ื”ืžืฉืชืžืฉื™ื ื‘ืจืžืช ื”ืชืคืงื™ื“ื™ื ื•ื”-Playbooks ืฉืœ Ansible. ื›ื“ื™ ืœื”ืจื—ื™ื‘ ืืช ื”ืคื™ืชื•ื— ืฉืœ ืžื•ื“ื•ืœื™ ืžืฉืื‘ื™ื, ืฆื•ื•ืช Ansible ืคืจืกื ืืช ื”ื›ืœื™ Module Builder.

ืชื•ื›ื ื™ื•ืช ืขื‘ื•ืจ Ansible 2.10 ื•ืื™ืœืš

ืœืื—ืจ ืฉื—ืจื•ืจ Ansible 2.9, ืื ื• ื ืขื‘ื•ื“ ืขืœ ื”ืกื˜ ื”ื‘ื ืฉืœ ืžื•ื“ื•ืœื™ ืžืฉืื‘ื™ื ืขื‘ื•ืจ Ansible 2.10, ืืฉืจ ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ื”ื ื›ื“ื™ ืœื”ื’ื“ื™ืจ ืขื•ื“ ื™ื•ืชืจ ืืช ื”ื˜ื•ืคื•ืœื•ื’ื™ื” ื•ื”ืžื“ื™ื ื™ื•ืช ืฉืœ ื”ืจืฉืช, ืœืžืฉืœ. ACL, OSPF ื•-BGP. ืขื“ื™ื™ืŸ ื ื™ืชืŸ ืœื”ืชืื™ื ืืช ืชื•ื›ื ื™ืช ื”ืคื™ืชื•ื—, ืื– ืื ื™ืฉ ืœืš ื”ืขืจื•ืช, ืื ื ื“ื•ื•ื— ืขืœ ื›ืš ืงื”ื™ืœืช Ansible Network.

ืžืฉืื‘ื™ื ื•ืชื—ื™ืœืช ื”ืขื‘ื•ื“ื”

ื”ื•ื“ืขื” ืœืขื™ืชื•ื ื•ืช ืขืœ Ansible Automation Platform
ื‘ืœื•ื’ ืคืœื˜ืคื•ืจืžืช ืื•ื˜ื•ืžืฆื™ื” ืฉืœ Ansible
ื”ืขืชื™ื“ ืฉืœ ื”ืขื‘ืจืช ืชื•ื›ืŸ ื‘-Ansible
ื”ืจื”ื•ืจื™ื ืขืœ ืฉื™ื ื•ื™ ืžื‘ื ื” ืคืจื•ื™ืงื˜ Ansible

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”