Collections are a distribution format for Ansible content that can include playbooks, roles, modules, and plugins, they are usually hosted and shared by a repository called Ansible Galaxy. The Ansible Network Collection for Fujitsu PSWITCH (fos-ansible-collection), which also has been uploaded and managed there, contains a variety of Ansible content to help automate the management for Fujitsu PSWITCHs, and you can get it in either of two ways: install from source or install from Ansible Galaxy.
-
fos_command.py — Run commands in Privileged EXEC modes
-
fos_config.py — Manage configurations in Global Config modes
-
fos_facts.py — Collect facts
-
fos_vlan.py — Manage configurations in VLAN Config modes
Overall steps:
- Install Ansible and dependency module.
- Install fos-ansible-collection.
Before installing fos-ansible-collection, please make sure Ansible and the dependency module are available in your environment.
Command reference:
pip3 install ansible --user
pip3 install paramiko --user
Please refer to the Ansible official page for more information.
There are two installation paths available: from source or from Ansible Galaxy, please choose one between them to complete the installation.
This repository contains the entire code for fos-ansible-collection, so we can just copy the plugins to complete the installation.
Copy plugins:
mkdir -p ~/.ansible/collections/ansible_collections/fujitsu/fos/
cp -r plugins/ ~/.ansible/
cp -r plugins/ ~/.ansible/collections/ansible_collections/fujitsu/fos/
Ansible Galaxy is a repository that hosts and shares collections, since fos-ansible-collection has been uploaded and managed there, we can install the plugins directly using ansible-galaxy command.
Install the latest version of fos-ansible-collection:
ansible-galaxy collection install fujitsu.fos
Or, install a specific version of fos-ansible-collection:
ansible-galaxy collection install fujitsu.fos:1.0.0
Available versions can be found on the Ansible Galaxy fos-ansible-collection page.
Then copy plugins:
cp -r ~/.ansible/collections/ansible_collections/fujitsu/fos/plugins/ ~/.ansible/
- Ansible version 2.10 or later.
- Python 2.7 or higher and Python 3.5 or higher
You can refer to the files in the example folder, modify the IP and other contents and execute:
ansible-playbook -i ./inventory ./playbook.yaml
Note: Before using above command, you need to ssh to the switch once to complete the key fingerprint authentication.
The authenticity of host '10.10.10.10 (10.10.10.10)' can't be established.
ED25519 key fingerprint is SHA256:*******************************************.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
inventory
This file provides the PSWITCH connection information, such as IP address, username and password etc.
[host] # The hostname you named for the PSWITCH in this file.
10.10.10.10 # The PSWITCH IP address.
[host:vars] # The "host" here should be the same as the hostname above.
ansible_ssh_user=**** # The PSWITCH ssh username.
ansible_ssh_pass=**** # The PSWITCH ssh password for above username.
ansible_connection=network_cli # Specify the connection method, for PSWITCH it should be "network_cli".
ansible_network_os=fos # Specify the network OS, for PSWITCH it should be "fos".
playbook.yaml
This file contains the network content you want to configure, such as configuring interface settings, adding a port to a VLAN etc.
- hosts: host # The hostname of the PSWITCH, it should be the same as in inventory.
gather_facts: no # Specify if the fact modules are executed in parallel or serially and in order.
tasks: # The task array that you want to run.
- name: "show version" # The task name.
fos_command: # This module is used to run commands on PSWITCH.
commands: # List of commands to send to PSWITCH.
- show version # Show PSWITCH version.
- name: "get hardware fact" # The task name.
fos_facts: # This module is used to collect facts from PSWITCH.
gather_subset: # Restrict the facts collected to a given subset.
- "hardware" # Given the restricted subset.
- name: "configure interface settings" # The task name.
fos_config: # This module is used to manage PSWITCH configuration.
lines: # The ordered set of commands that should be configured.
- lldp transmit # Enable lldp transmit.
- lldp receive # Enable lldp receive.
parents: interface 0/16 # Specifiy the port to be configured.
- name: "configure access port" # The task name.
fos_config: # This module is used to manage PSWITCH configuration.
lines: # The ordered set of commands that should be configured.
- switchport access vlan 30 # Add the port to the specific VLAN.
parents: interface 0/36 # Specifiy the port to be configured.
For the complete usage of each module, please refer to the output of the following commands:
ansible-doc fos_command
ansible-doc fos_config
ansible-doc fos_facts
ansible-doc fos_vlan