aruba / aos-switch-ansible-collection

Ansible collection for AOS-Switch switches
67 stars 19 forks source link
ansible aos-switch aruba collection switch

AOS-Switch Ansible Collection

This Ansible Network collection provides a set of platform dependent configuration management modules specifically designed for the AOS-Switch Ansible Collection network device.

Requirements

Installation

Through Galaxy:

ansible-galaxy collection install arubanetworks.aos_switch

Inventory Variables

The variables that should be defined in your inventory for your AOS-Switch host are:

Sample Inventory:

YAML

all:
  hosts:
    aosswitch_1:
      ansible_host: 10.0.0.1
      ansible_user: admin
      ansible_password: password
      ansible_connection: local  # REST API connection method
      ansible_network_os: arubanetworks.aos_switch.arubaoss  # Do not change

Setting Environment Variables

In order to use the AOS-Switch collection you need to modify your environment in order for Ansible to recognize the Network OS:

Example of setting environment variable in the command : $ ANSIBLE_NETWORK_GROUP_MODULES=arubaoss ansible-playbook sample_playbook.yml -i inventory.yml

You can also check which ansible.cfg is used by increasing the verbosity (add -v to command above) and accordingly set the value of NETWORK_GROUP_MODULES to "arubaoss" in the [defaults] section.

[defaults]
NETWORK_GROUP_MODULES=arubaoss

Example Playbook

If collection installed through Galaxy add arubanetworks.aos_switch to your list of collections:

    ---
    -  hosts: all
       collections:
         - arubanetworks.aos_switch
       tasks:
         - name: Create VLAN 300
           arubaoss_vlan:
             vlan_id: 300
             name: "vlan300"
             config: "create"
             command: config_vlan

SSH/CLI Modules

Using Both REST API and SSH/CLI Modules on a Host

To use both REST API and SSH/CLI modules on the same host, you must create separate plays such that each play uses either only REST API modules or only SSH/CLI modules. A play cannot mix and match REST API and SSH/CLI module calls. In each play, ansible_connection must possess the appropriate value according to the modules used. If the play uses REST API modules, the value should be local. If the play uses SSH/CLI modules, the value should be network_cli.

A recommended approach to successfully using both types of modules for a host is as follows:

  1. Set the host variables such that Ansible will connect to the host using REST API.
  2. In the playbook, in each play wherein the SSH/CLI modules are used, set the ansible_connection to network_cli.

The inventory should look something like this:

all:
  hosts:
    switch1:
      ansible_host: 10.0.0.1
      ansible_user: admin
      ansible_password: password
      ansible_connection: local  # REST API connection method
      ansible_network_os: arubanetworks.aos_switch.arubaoss  # Do not change

and the playbook like this (note how the second play, which uses the SSH/CLI module arubaoss_command, sets the ansible_connection value accordingly):

- hosts: all
  collections:
    - arubanetworks.aos_switch
  tasks:
    - name: Create VLAN 300
      arubaoss_vlan:
        vlan_id: 300
        name: "vlan300"
        config: "create"
        command: config_vlan

- hosts: all
  collections:
    - arubanetworks.aos_switch
  vars:
    ansible_connection: network_cli
  tasks:
    - name: Execute show run on the switch
      arubaoss_command:
        commands: ['show run']

Contribution

At Aruba Networks we're dedicated to ensuring the quality of our products, if you find any issues at all please open an issue on our Github and we'll be sure to respond promptly!

For more contribution opportunities follow our guidelines outlined in our CONTRIBUTING.md

License

Apache-2.0

Author Information