Red Hat Ansible рдореЗрдВ рдирдпрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдСрдЯреЛрдореЗрд╢рди рд╕реБрд╡рд┐рдзрд╛рдПрдБ

Ansible Engine 2.6 рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕реБрдзрд╛рд░реЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд╢ рдореЗрдВ, рд╕рд╛рде рд╣реА Ansible Tower 3.3 рдХреА рд░рд┐рд▓реАрдЬрд╝ рдФрд░ рд╣рд╛рд▓ рд╣реА рдореЗрдВ Ansible Engine 2.7 рдХреА рд░рд┐рд▓реАрдЬрд╝ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, рдЖрдЗрдП рд╣рдо рдиреЗрдЯрд╡рд░реНрдХ рд╕реНрд╡рдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдкрд░ рдХрд░реАрдм рд╕реЗ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред



рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ:

  • Httpapi рдХрдиреЗрдХреНрд╢рди рдкреНрд▓рдЧрдЗрдиред
    • Arista eAPI рдФрд░ рд╕рд┐рд╕реНрдХреЛ NX-API рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдердиред
  • рдирдпрд╛ рдиреЗрдЯрд╡рд░реНрдХ рд╕реНрд╡рдЪрд╛рд▓рди рдореЙрдбреНрдпреВрд▓ред
    • net_get рдФрд░ net_putред
    • netconf_get, netconf_rpc рдФрд░ netconf_configред
    • cli_command рдФрд░ cli_configред
  • рдмреЗрд╣рддрд░ Ansible рдЯреЙрд╡рд░ рд╡реЗрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ред
  • рдиреЗрдЯрд╡рд░реНрдХ рдбрд┐рд╡рд╛рдЗрд╕реЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдкрд░ рдПрдВрдЬрд╝рд┐рдмрд▓ рдЯреЙрд╡рд░ рдореЗрдВ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░реЗрдВред
  • рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдЯреЙрд╡рд░ рдореЗрдВ Ansible рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

рдпрд╣ рдордд рднреВрд▓реЛ рдХрд┐ рдЕрдиреНрд╕рд┐рдмрд▓ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреА рд░рд┐рд╣рд╛рдИ рдкреЛрд░реНрдЯрд┐рдВрдЧ рдЧрд╛рдЗрдб рдХреЗ рдЕрдкрдбреЗрдЯ рдХреЗ рд╕рд╛рде рд╣реИ, рдЬреЛ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╕рдВрдХреНрд░рдордг рдХреА рд╕реБрд╡рд┐рдзрд╛ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧреАред

HTTPAPI рдХрдиреЗрдХреНрд╢рди рдкреНрд▓рдЧрдЗрди


рдХрдиреЗрдХреНрд╢рди рдкреНрд▓рдЧрдЗрдиреНрд╕ рд╡реЗ рд╣реИрдВ рдЬреЛ рдЕрдиреНрд╕рд┐рдмрд▓ рдХреЛ рдореЗрдЬрдмрд╛рдиреЛрдВ рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдФрд░ рдлрд┐рд░ рдЙрди рдкрд░ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдмрдирд╛рддреЗ рд╣реИрдВред Ansible 2.5 рдХреЗ рд╕рд╛рде рд╢реБрд░реВ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рдирдпрд╛ рдкреНрд▓рдЧрдЗрди рдЬрд┐рд╕реЗ network_cli рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ рд╣реИред рдпрд╣ рдкреНрд░рджрд╛рддрд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдиреЗрдЯрд╡рд░реНрдХ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреНрд░рдо рдХреЛ рдорд╛рдирдХреАрдХреГрдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЕрдм рдиреЗрдЯрд╡рд░реНрдХ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд▓реЗрдмреБрдХ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд, рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдФрд░ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕реЗ рд▓рд┐рдирдХреНрд╕ рд╣реЛрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдкреНрд▓реЗрдмреБрдХред рдмрджрд▓реЗ рдореЗрдВ, Ansible рдЯреЙрд╡рд░ рдХреЗ рд▓рд┐рдП, рдиреЗрдЯрд╡рд░реНрдХ рдЙрдкрдХрд░рдгреЛрдВ рдФрд░ рдореЗрдЬрдмрд╛рдиреЛрдВ рдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░ рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ рдЕрдм рдиреЗрдЯрд╡рд░реНрдХ рдЙрдкрдХрд░рдгреЛрдВ рдФрд░ рдорд╢реАрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдпрд╣рд╛рдВ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рдереА, рд▓реЗрдХрд┐рди рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рд▓рд┐рдирдХреНрд╕ рд╕рд░реНрд╡рд░ рдФрд░ рд╕реНрд╡рд┐рдЪ рдЕрд░рд┐рд╕реНрдЯрд╛ рдИрдУрдПрд╕ рдпрд╛ рд╕рд┐рд╕реНрдХреЛ рд░рд╛рдЙрдЯрд░ рдХреЗ рд▓рд┐рдП рд▓реЙрдЧрд┐рди рдкрд╛рд╕рд╡рд░реНрдб рдЕрдм рдПрдХ рд╕рдорд╛рди рддрд░реАрдХреЗ рд╕реЗ рдЙрдкрдпреЛрдЧ рдФрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

Ansible 2.5 рдореЗрдВ, eAPI рдФрд░ NX-API рддрд░реАрдХреЛрдВ рд╕реЗ рдЬреБрдбрд╝рдирд╛ рдХреЗрд╡рд▓ рдкреБрд░рд╛рдиреЗ рдкреНрд░рджрд╛рддрд╛ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдерд╛ред Ansible 2.6 рдореЗрдВ рдЕрдм рдпрд╣ рд╕реАрдорд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЖрдк рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп httpapi рдХрдиреЗрдХреНрд╢рди рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдиреЗрдЯрд╡рд░реНрдХ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ eAPI рдпрд╛ NX-API рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рддрд╛рдХрд┐ рдЖрдк рдЙрд╕рдХреЗ рдмрд╛рдж httpapi рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреЗрдВред рдпрд╣ рдЖрд╕рд╛рдиреА рд╕реЗ рдЙрдкрдпреБрдХреНрдд Ansible рдЯреАрдо рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдВ рдПрдХ Arista EOS рд╕реНрд╡рд┐рдЪ рдкрд░ eAPI рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

[user@rhel7]$ ansible -m eos_eapi -c network_cli leaf01 leaf01 | SUCCESS => { "ansible_facts": { "eos_eapi_urls": { "Ethernet1": [ "https://192.168.0.14:443" ], "Management1": [ "https://10.0.2.15:443" ] } }, "changed": false, "commands": [] } 

рдЬрдм рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ Arista EOS рд╕реНрд╡рд┐рдЪ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╢реЛ рдкреНрд░рдмрдВрдзрди рдПрдкреАрдЖрдИ http-рдХрдорд╛рдВрдб рдХрдорд╛рдВрдб рджрд┐рдЦрд╛рдПрдЧрд╛ рдХрд┐ рдПрдкреАрдЖрдИ рд╕рдХреНрд╖рдо рд╣реИ:

 leaf01# show management api http-commands Enabled: Yes HTTPS server: running, set to use port 443 <<<rest of output removed for brevity>>> 

рдиреАрдЪреЗ рджреА рдЧрдИ Ansible Playbook рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗрд╡рд▓ рд╢реЛ рд╕рдВрд╕реНрдХрд░рдг рдХрдорд╛рдВрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреА рд╣реИ, рдФрд░ рдлрд┐рд░ рдбрд┐рдмрдЧ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдХреЗрд╡рд▓ рдХрд╛рд░реНрдп рдХреЗ JSON рдЖрдЙрдЯрдкреБрдЯ рд╕реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рддрд╛ рд╣реИред

 --- - hosts: leaf01 connection: httpapi gather_facts: false tasks: - name: type a simple arista command eos_command: commands: - show version | json register: command_output - name: print command output to terminal window debug: var: command_output.stdout[0]["version"] 

рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЪрд▓рд╛рдиреЗ рдкрд░ рдирд┐рдореНрди рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рд╣реЛрдВрдЧреЗ:

 [user@rhel7]$ ansible-playbook playbook.yml PLAY [leaf01]******************************************************** TASK [type a simple arista command] ********************************* ok: [leaf01] TASK [print command output to terminal window] ********************** ok: [leaf01] => { "command_output.stdout[0][\"version\"]": "4.20.1F" } PLAY RECAP*********************************************************** leaf01 : ok=2 changed=0 unreachable=0 failed=0 

рдиреЛрдЯ: Arista eAPI рдХрдорд╛рдВрдб рдХреЗ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ (рдЬреИрд╕реЗ "рд╢реЛ рд╡рд░реНрдЬрди" рдХреЗ рдмрдЬрд╛рдп "рд╢реЛ рд╕рдВрд╕реНрдХрд░рдг 2), рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЙрди рд╕рднреА рдХреЛ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред Httpapi рдХрдиреЗрдХреНрд╢рди рдкреНрд▓рдЧрдЗрди рдкрд░ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рджреЗрдЦреЗрдВред

рдирдпрд╛ рдиреЗрдЯрд╡рд░реНрдХ рд╕реНрд╡рдЪрд╛рд▓рди рдореЙрдбреНрдпреВрд▓


рдЕрдХреНрдЯреВрдмрд░ рдореЗрдВ рдЬрд╛рд░реА рдХрд┐рдП рдЧрдП рдЕрдВрд╕рд╛рд░реА 2.6 рдФрд░ рд╕рдВрд╕реНрдХрд░рдг 2.7 рдиреЗрдЯрд╡рд░реНрдХ рд╕реНрд╡рдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рд╕рд╛рдд рдирдП рдореЙрдбреНрдпреВрд▓ рдкреЗрд╢ рдХрд░рддреЗ рд╣реИрдВред

  • net_get - рдПрдХ рдлрд╛рдЗрд▓ рдХреЛ рдиреЗрдЯрд╡рд░реНрдХ рдбрд┐рд╡рд╛рдЗрд╕ рд╕реЗ Ansible рдХрдВрдЯреНрд░реЛрд▓рд░ рдореЗрдВ рдХреЙрдкреА рдХрд░реЗрдВ ред
  • net_put - рдПрдХ рдиреЗрдЯрд╡рд░реНрдХ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд▓рд┐рдП Ansible рдирд┐рдпрдВрддреНрд░рдХ рд╕реЗ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдПрдБ ред
  • netconf_get - NETCONF рд╕рдХреНрд╖рдо рдиреЗрдЯрд╡рд░реНрдХ рдбрд┐рд╡рд╛рдЗрд╕ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди / рд╕реНрдерд┐рддрд┐ рдбреЗрдЯрд╛ рдХреЛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред
  • netconf_rpc - NETCONF рд╕рдХреНрд╖рдо рдХреЗ рд╕рд╛рде рдПрдХ рдиреЗрдЯрд╡рд░реНрдХ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдСрдкрд░реЗрд╢рди рдХрд░рддрд╛ рд╣реИред
  • netconf_config - netconf рдбрд┐рд╡рд╛рдЗрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди, рдореЙрдбреНрдпреВрд▓ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ netconf рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ XML рдлрд╝рд╛рдЗрд▓ рднреЗрдЬрдиреЗ рдФрд░ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдмрджрд▓ рдЧрдпрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред
  • cli_command - рдЙрди рдиреЗрдЯрд╡рд░реНрдХ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ cli рдХрдорд╛рдВрдб рдЪрд▓рд╛рддрд╛ рд╣реИ рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рдХрдорд╛рдВрдб рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (cli) рд╣реИред
  • cli_config - network_cli рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдиреЗрдЯрд╡рд░реНрдХ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд╛рда рд╡рд┐рдиреНрдпрд╛рд╕ (рдзрдХреНрдХрд╛) рднреЗрдЬрддрд╛ рд╣реИред

net_get рдФрд░ net_put



Net_get рдФрд░ net_put рдореЙрдбреНрдпреВрд▓ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЗ рдЙрдкрдХрд░рдг рд╕реЗ рдмрдВрдзреЗ рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рдмрд╕ рдорд╛рдирдХ SCP рдпрд╛ SFTP рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдкреНрд░реЛрдЯреЛрдХреЙрд▓ (рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдкреИрд░рд╛рдореАрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдиреЗрдЯрд╡рд░реНрдХ рдбрд┐рд╡рд╛рдЗрд╕ рд╕реЗ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рддреЗ рд╣реИрдВред рдЗрди рджреЛрдиреЛрдВ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП network_cli рдХрдиреЗрдХреНрд╢рди рд╡рд┐рдзрд┐ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдпрд╣ рднреА рддрднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдм рдирд┐рдпрдВрддреНрд░рдХ рдкрд░ scp (рдкрд┐рдк рдЗрдВрд╕реНрдЯреЙрд▓ рд╕реНрдХреИрдк) рд╕реНрдерд╛рдкрд┐рдд рд╣реЛ рдФрд░ SCP рдпрд╛ SFTP рдиреЗрдЯрд╡рд░реНрдХ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рд╕рдХреНрд╖рдо рд╣реЛред

рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░реА рдкреНрд▓реЗрдмреБрдХ рдХреЗ рд╕рд╛рде рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рд▓реАрдл 01 рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рджрд┐рдпрд╛ рд╣реИ:

 leaf01#copy running-config flash:running_cfg_eos1.txt Copy completed successfully. 

рдпрд╣рд╛рдБ рджреЛ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд▓реЗрдмреБрдХ рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ (рдкрд╣рд▓рд╛ рдкрддреНрддрд╛01 рдбрд┐рд╡рд╛рдЗрд╕ рд╕реЗ рдлрд╛рдЗрд▓ рдХреЛ рдХреЙрдкреА рдХрд░рддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ рдкрддреНрддрд╛01 рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдлрд╛рдЗрд▓ рдХреЙрдкреА рдХрд░рддрд╛ рд╣реИ):

 --- - hosts: leaf01 connection: network_cli gather_facts: false tasks: - name: COPY FILE FROM THE NETWORK DEVICE TO ANSIBLE CONTROLLER net_get: src: running_cfg_eos1.txt - name: COPY FILE FROM THE ANSIBLE CONTROLLER TO THE NETWORK DEVICE net_put: src: temp.txt 

netconf_get, netconf_rpc рдФрд░ netconf_config



  • netconf_get - NETCONF рд╕рдХреНрд╖рдо рдиреЗрдЯрд╡рд░реНрдХ рдбрд┐рд╡рд╛рдЗрд╕ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди / рд╕реНрдерд┐рддрд┐ рдбреЗрдЯрд╛ рдХреЛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред
  • netconf_rpc - NETCONF рд╕рдХреНрд╖рдо рдХреЗ рд╕рд╛рде рдПрдХ рдиреЗрдЯрд╡рд░реНрдХ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдСрдкрд░реЗрд╢рди рдХрд░рддрд╛ рд╣реИред
  • netconf_config - netconf рдбрд┐рд╡рд╛рдЗрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди, рдореЙрдбреНрдпреВрд▓ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ netconf рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ XML рдлрд╝рд╛рдЗрд▓ рднреЗрдЬрдиреЗ рдФрд░ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдмрджрд▓ рдЧрдпрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред

рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд░рдмрдВрдзрди рдкреНрд░реЛрдЯреЛрдХреЙрд▓ NETCONF (рдиреЗрдЯрд╡рд░реНрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреНрд░реЛрдЯреЛрдХреЙрд▓) IETF рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдФрд░ рдорд╛рдирдХреАрдХреГрдд рд╣реИред RFC 6241 рдХреЗ рдЕрдиреБрд╕рд╛рд░, NETCONF рдХрд╛ рдЙрдкрдпреЛрдЧ рдиреЗрдЯрд╡рд░реНрдХ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ, рд╣реЗрд░рдлреЗрд░ рдХрд░рдиреЗ рдФрд░ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред NETCONF SSH рдХрдорд╛рдВрдб рд▓рд╛рдЗрди (network_cli) рдФрд░ API рдЬреИрд╕реЗ рд╕рд┐рд╕реНрдХреЛ NX-API рдпрд╛ Arista eAPI (httpapi) рдХрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИред

рдирдП netconf рдореЙрдбреНрдпреВрд▓ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ junos_netconf рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬреБрдирд┐рдкрд░ рд░рд╛рдЙрдЯрд░ рдкрд░ netconf рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рддреЗ рд╣реИрдВред Netconf рд╕рднреА рдиреЗрдЯрд╡рд░реНрдХ рдЙрдкрдХрд░рдг рдореЙрдбрд▓ рдкрд░ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЕрдкрдиреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред

 [user@rhel7 ~]$ ansible -m junos_netconf juniper -c network_cli rtr4 | CHANGED => { "changed": true, "commands": [ "set system services netconf ssh port 830" ] } rtr3 | CHANGED => { "changed": true, "commands": [ "set system services netconf ssh port 830" ] } 

рдЬреБрдирд┐рдкрд░ рдиреЗрдЯрд╡рд░реНрдХ рдСрдкрд░реЗрд╢рдирд▓ рдЯреИрдЧ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЯреИрдЧ рдХреЗ рд▓рд┐рдП рдЬреВрдиреЛрд╕ рдПрдХреНрд╕рдПрдордПрд▓ рдПрдкреАрдЖрдИ рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдкрд░рд┐рдЪрд╛рд▓рди рдЕрдиреБрд░реЛрдз рдХреЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬреЛ рдЬреБрдирд┐рдкрд░ рдиреЗрдЯрд╡рд░реНрдХ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд▓рд┐рдП RPC рдЕрдиреБрд░реЛрдз рдХреЛ рдЪрд┐рддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

 <rpc> <get-interface-information> <interface-name>ge-2/3/0</interface-name> <detail/> </get-interface-information> </rpc> ]]>]]> 

рдЗрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ Ansible Playbook рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред get-interface-information рдПрдХ RPC рдХреЙрд▓ рд╣реИ, рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрд░рд╛рдореАрдЯрд░ рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдЬреЛрдбрд╝реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИрдВред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдХреЗрд╡рд▓ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИ - рдЗрдВрдЯрд░рдлрд╝реЗрд╕-рдирд╛рдо - рдФрд░ рд╣рдорд╛рд░реЗ рдиреЗрдЯрд╡рд░реНрдХ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рд╣рдо рд╕рд┐рд░реНрдл em1.0 рдХреЛ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╣рдо рд░рдЬрд┐рд╕реНрдЯрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдХрд╛рд░реНрдп рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдмрд╕ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕рд▓рд┐рдП рд╣рдо рдбреАрдмрдЧ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЯрд░реНрдорд┐рдирд▓ рд╕реНрдХреНрд░реАрди рдкрд░ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВред Netconf_rpc рдореЙрдбреНрдпреВрд▓ рдЖрдкрдХреЛ рд╕реАрдзреЗ XML рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ JSON рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХреА рднреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

 --- - name: RUN A NETCONF COMMAND hosts: juniper gather_facts: no connection: netconf tasks: - name: GET INTERFACE INFO netconf_rpc: display: json rpc: get-interface-information content: interface-name: "em1.0" register: netconf_info - name: PRINT OUTPUT TO TERMINAL WINDOW debug: var: netconf_info 

рдкреНрд▓реЗрдмреБрдХ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдпрд╣ рдорд┐рд▓рддрд╛ рд╣реИ:

 ok: [rtr4] => { "netconf_info": { "changed": false, "failed": false, "output": { "rpc-reply": { "interface-information": { "logical-interface": { "address-family": [ { "address-family-flags": { "ifff-is-primary": "" }, "address-family-name": "inet", "interface-address": [ { "ifa-broadcast": "10.255.255.255", "ifa-destination": "10/8", "ifa-flags": { "ifaf-current-preferred": "" }, "ifa-local": "10.0.0.4" }, <<<rest of output removed for brevity>>> 

рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рдЬреБрдирд┐рдкрд░ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЧрд╛рдЗрдб рдФрд░ NETCONF рдкреНрд░рд▓реЗрдЦрди рджреЗрдЦреЗрдВ ред

cli_command рдФрд░ cli_config


  • cli_command - рдЕрдкрдиреЗ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (рдпрджрд┐ рд╡рд╣рд╛рдБ рд╣реИ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдиреЗрдЯрд╡рд░реНрдХ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдПрдХ рдХрдорд╛рдВрдб рдЪрд▓рд╛рддрд╛ рд╣реИред
  • cli_config - network_cli рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдиреЗрдЯрд╡рд░реНрдХ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд╛рда рд╡рд┐рдиреНрдпрд╛рд╕ (рдзрдХреНрдХрд╛) рднреЗрдЬрддрд╛ рд╣реИред

Cli_command рдФрд░ cli_config рдореЙрдбреНрдпреВрд▓ рдЬреЛ рдХрд┐ рдЕрдВрд╕рд┐рдмрд▓ рдЗрдВрдЬрди 2.7 рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ, рд╡реЗ рднреА рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЗ рдЙрдкрдХрд░рдг рд╕реЗ рдмрдВрдзреЗ рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╡реЗ рд╡рд╛рдВрдЫрд┐рдд cliconf рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд░ ansible_network_os (рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕реЗрдЯ рдпрд╛ group_vars рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ) рдХреЗ рдореВрд▓реНрдп рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИрдВред рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ ansible_network_os рдЪрд░ рдХреЗ рд╕рднреА рдореВрд▓реНрдпреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рд╣реИред Ansible рдХреЗ рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдЖрдк рдЕрднреА рднреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд▓рд┐рдП рдкреБрд░рд╛рдиреЗ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЕрдкрдирд╛ рд╕рдордп рдореМрдЬреВрджрд╛ рдкреНрд▓реЗрдмреБрдХ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЗрдВред рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкреЛрд░реНрдЯрд┐рдВрдЧ рдЧрд╛рдЗрдб рджреЗрдЦреЗрдВ ред



рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдЗрди рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ Ansible Playbook рдореЗрдВ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдкреНрд▓реЗрдмреБрдХ IOS-XE рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рджреЛ рд╕рд┐рд╕реНрдХреЛ рдХреНрд▓рд╛рдЙрдб рд╕рд░реНрд╡рд┐рд╕реЗрдЬ рд░реВрдЯрд░реНрд╕ (CSR) рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдЪрд▓реЗрдЧреАред рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ ansible_network_os рдЪрд░ ios рдкрд░ рд╕реЗрдЯ рд╣реИред

 <config snippet from inventory> [cisco] rtr1 ansible_host=34.203.197.120 rtr2 ansible_host=34.224.60.230 [cisco:vars] ansible_ssh_user=ec2-user ansible_network_os=ios 

рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ cli_config рдФрд░ cli_command рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

 --- - name: AGNOSTIC PLAYBOOK hosts: cisco gather_facts: no connection: network_cli tasks: - name: CONFIGURE DNS cli_config: config: ip name-server 8.8.8.8 - name: CHECK CONFIGURATION cli_command: command: show run | i ip name-server register: cisco_output - name: PRINT OUTPUT TO SCREEN debug: var: cisco_output.stdout 

рдФрд░ рдпрд╣рд╛рдБ рдЗрд╕ рдкреНрд▓реЗрдмреБрдХ рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рд╣реИ:

 [user@rhel7 ~]$ ansible-playbook cli.yml PLAY [AGNOSTIC PLAYBOOK] ********************************************* TASK [CONFIGURE DNS] ************************************************* ok: [rtr1] ok: [rtr2] TASK [CHECK CONFIGURATION] ******************************************* ok: [rtr1] ok: [rtr2] TASK [PRINT OUTPUT TO SCREEN] **************************************** ok: [rtr1] => { "cisco_output.stdout": "ip name-server 8.8.8.8" } ok: [rtr2] => { "cisco_output.stdout": "ip name-server 8.8.8.8" } PLAY RECAP ********************************************************** rtr1 : ok=3 changed=0 unreachable=0 failed=0 rtr2 : ok=3 changed=0 unreachable=0 failed=0 

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЬрдм рддрдХ рдЖрдк рд╕рдВрдмрдВрдзрд┐рдд рдиреЗрдЯрд╡рд░реНрдХ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рддрдм рддрдХ рдпреЗ рдореЙрдбреНрдпреВрд▓ рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╣реИрдВред

рдмреЗрд╣рддрд░ рдЖрдВрд╕рд░ рдЯреЙрд╡рд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕


Red Hat Ansible Tower 3.3 рдореЗрдВ рд╡реЗрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдФрд░ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рддреЗ рд╕рдордп рдХрдо рдХреНрд▓рд┐рдХ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИред



рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдкреНрд░рдмрдВрдзрди, рдХрд╛рд░реНрдп рд╢реЗрдбреНрдпреВрд▓рд░, рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рднреВрдорд┐рдХрд╛-рдЖрдзрд╛рд░рд┐рдд рдЕрднрд┐рдЧрдо рдирд┐рдпрдВрддреНрд░рдг, рд╕реВрдЪрдирд╛рдПрдВ рдФрд░ рдмрд╣реБрдд рдХреБрдЫ рдЕрдм рд╕реНрдХреНрд░реАрди рдХреЗ рдмрд╛рдИрдВ рдУрд░ рдореБрдЦреНрдп рдореЗрдиреВ рдореЗрдВ рдПрдХрддреНрд░ рдХрд┐рдП рдЧрдП рд╣реИрдВ рдФрд░ рдПрдХ рдХреНрд▓рд┐рдХ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред рдЬреЙрдм рд╡реНрдпреВ рдЬреЙрдм рд╕реНрдХреНрд░реАрди рджреЗрдЦрдиреЗ рд╕реЗ рддреБрд░рдВрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреА рд╣реИ: рдХрд┐рд╕рдиреЗ рдХрд╛рд░реНрдп рд╢реБрд░реВ рдХрд┐рдпрд╛ рдФрд░ рдХрдм; рдЗрд╕рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рджреМрд░рд╛рди рдХреНрдпрд╛ рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рд╡рд┐рдХрд╕рд┐рдд рдХреА рдЧрдИ рдереА; рдХрд┐рд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рдкреНрд▓реЗрдмреБрдХ рд▓реА рдЧрдИред



Ansible рдЯреЙрд╡рд░ рдореЗрдВ рдиреЗрдЯрд╡рд░реНрдХ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░реЗрдВ


Red Hat Ansible Tower 3.3 рдиреЗрдЯрд╡рд░реНрдХ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд▓реЙрдЧрд┐рди рдкрд╛рд╕рд╡рд░реНрдб рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИред рдирдП рд╡реЗрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ, рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдХрдорд╛рдВрдб рдореБрдЦреНрдп рдореЗрдиреВ рдореЗрдВ рд╕рдВрд╕рд╛рдзрди рд╕рдореВрд╣ рдореЗрдВ рддреБрд░рдВрдд рд╕реНрдерд┐рдд рд╣реИред



Ansible рдЯреЙрд╡рд░ 3.3 рдиреЗ рдПрдХ рд╡рд┐рд╢реЗрд╖ рддрдерд╛рдХрдерд┐рдд "рдиреЗрдЯрд╡рд░реНрдХ" рдкреНрд░рдХрд╛рд░ рдХрд╛ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ (рдиреЗрдЯрд╡рд░реНрдХ) рдЫреЛрдбрд╝рд╛, рдЬреЛ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ ANSIBLE_NET_USERNAME рдФрд░ ANSIBLE_NET_PASSWORD рдкреБрд░рд╛рдиреЗ рдкреНрд░рджрд╛рддрд╛ рд╡рд┐рдзрд┐ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╕рдм рдЕрднреА рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рддрд╛рдХрд┐ рдЖрдк рдореМрдЬреВрджрд╛ Ansible Playbooks рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреЗрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, httpapi рдФрд░ network_cli рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдирдП рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП, рдиреЗрдЯрд╡рд░реНрдХ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдкреНрд░рдХрд╛рд░ рдХреА рдЕрдм рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ Ansible рдкрд╛рд╕рд╡рд░реНрдб рд▓реЙрдЧрд┐рди рдХреЗ рд╕рд╛рде рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдиреЗрдЯрд╡рд░реНрдХ рдЙрдкрдХрд░рдгреЛрдВ рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдФрд░ рд▓рд┐рдиреЗрдХреНрд╕реВ рд╣реЛрд╕реНрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрдиреЗ рдкрд░ред рдЗрд╕рд▓рд┐рдП, рдиреЗрдЯрд╡рд░реНрдХ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП, рдЕрдм рдЖрдкрдХреЛ рдорд╢реАрди рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдмрд╕ рдЗрд╕реЗ рдЪреБрдиреЗрдВ рдФрд░ рдЕрдкрдирд╛ рд▓реЙрдЧрд┐рди рдкрд╛рд╕рд╡рд░реНрдб рджрд░реНрдЬ рдХрд░реЗрдВ рдпрд╛ рдПрд╕рдПрд╕рдПрдЪ рдХреБрдВрдЬреА рдкреНрд░рджрд╛рди рдХрд░реЗрдВред



рдиреЛрдЯ: рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдХреЛ рд╕рд╣реЗрдЬрдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж, Ansible рдЯреЙрд╡рд░ рдкрд╛рд╕рд╡рд░реНрдб рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рддрд╛ рд╣реИред



рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдХреЛ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдФрд░ рд╕рдореВрд╣реЛрдВ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рд╕реМрдВрдкрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рд╡реЗ рдмрд╕ рдкрд╛рд╕рд╡рд░реНрдб рдирд╣реАрдВ рджреЗрдЦреЗрдВрдЧреЗ рдпрд╛ рдкрд╣рдЪрд╛рди рдирд╣реАрдВ рдкрд╛рдПрдВрдЧреЗред рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпрд╛ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдкреНрд░рдХрд╛рд░ (рдЬреИрд╕реЗ рдЕрдореЗрдЬрд╝реЕрди рдПрдбрдмреНрд▓реНрдпреВрдПрд╕, рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рдПрдЬрд╝реНрдпреЛрд░ , рдФрд░ Google рдЬреАрд╕реАрдИ) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, Ansible рдЯреЙрд╡рд░ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

Red Hat Ansible Tower 3.3 рдХрд╛ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред

рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдЯреЙрд╡рд░ рдореЗрдВ Ansible рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛


рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдХреБрдЫ рдкреНрд▓реЗрдмреБрдХ рдЕрдВрд╕рд┐рдмрд▓ рдЗрдВрдЬрди 2.4.2 рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓реЗрдВ, рдФрд░ рдЕрдиреНрдп рдЕрдВрд╕рд┐рдмрд▓ рдЗрдВрдЬрди 2.6.4 рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓реЗрдВред рдЯреЙрд╡рд░ рдореЗрдВ рдкрд░рд╕реНрдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдШрд░реНрд╖ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рдпрдерди рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд░реНрдЪрд╕реНрд╡ рдЯреВрд▓ рд╣реИред Ansible рдЯреЙрд╡рд░ 3.3 рдЖрдкрдХреЛ рд╡рд┐рднрд┐рдиреНрди рд╕реНрддрд░реЛрдВ рдкрд░ рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬреЗрд╢рди рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ - рд╕рдВрдЧрдарди, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдпрд╛ рдиреМрдХрд░реА рдЯреЗрдореНрдкрд▓реЗрдЯред рдЕрдкрдиреЗ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛ рдмреИрдХрдЕрдк рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдордиреЗ Ansible Tower рдореЗрдВ рдЬреЛ рдЬреЙрдм рдЯреЗрдореНрдкрд▓реЗрдЯ рдмрдирд╛рдпрд╛ рд╣реИ, рд╡рд╣ рдРрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред



рдЬрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрдо рд╕реЗ рдХрдо рджреЛ рдЖрднрд╛рд╕реА рд╡рд╛рддрд╛рд╡рд░рдг рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ Ansible рдкрд░реНрдпрд╛рд╡рд░рдг рдкреЙрдк-рдЕрдк рдореЗрдиреВ Ansible рдЯреЙрд╡рд░ рдореБрдЦреНрдп рдореЗрдиреВ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╕рдордп Ansible рдХреЗ рдХрд┐рд╕ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред



рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП playbooks рдХрд╛ рдорд┐рд╢реНрд░рдг рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдкреБрд░рд╛рдиреЗ рдкреНрд░рджрд╛рддрд╛ рд╡рд┐рдзрд┐ (Ansible 2.4 рдФрд░ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдХреБрдЫ рдирдП httpapi рдпрд╛ network_cli рдкреНрд▓рдЧрдЗрдиреНрд╕ (Ansible 2.5 рдФрд░ рдЙрдЪреНрдЪрддрд░) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдп рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрддреНрддрд░ рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╕рдВрд╕реНрдХрд░рдгред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧреА рдпрджрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдФрд░ рдЙрддреНрдкрд╛рджрди Ansible рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЖрдк рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЯреЙрд╡рд░ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдмрд┐рдирд╛ рдЗрд╕ рдмрд╛рдд рдХреА рдЪрд┐рдВрддрд╛ рдХрд┐рдП рдХрд┐ рдЙрд╕рдХреЗ рдмрд╛рдж рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЕрдВрд╕рд┐рдмрд▓ рдЗрдВрдЬрди рдореЗрдВ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдиреЗрдЯрд╡рд░реНрдХ рдЙрдкрдХрд░рдг рдФрд░ рд╡рд╛рддрд╛рд╡рд░рдг, рд╕рд╛рде рд╣реА рдЙрдкрдпреЛрдЧ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд▓рдЪреАрд▓рд╛рдкрди рдмрдврд╝рд╛рддрд╛ рд╣реИред

Virtualenv рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рджреЗрдЦреЗрдВред

Source: https://habr.com/ru/post/hi436318/


All Articles