Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save itdependsnetworks/bd810c2ea838c6829876f8516e820c1c to your computer and use it in GitHub Desktop.
Save itdependsnetworks/bd810c2ea838c6829876f8516e820c1c to your computer and use it in GitHub Desktop.
figol_slack
(ansible2.4) ken@ken-VirtualBox:~/github/cookbook$ cat host_vars/matrix-1.yml
---
interfaces:
- name: Ethernet1/0
connected_device: R1
connected_device_port: Ethernet1/0
type: dynamic_dot1q
- name: Ethernet1/1
connected_device: R1
connected_device_port: Ethernet1/1
type: dynamic_dot1q
(ansible2.4) ken@ken-VirtualBox:~/github/cookbook$ cat host_vars/matrix-2.yml
---
interfaces:
- name: Ethernet1/0
connected_device: R2
connected_device_port: Ethernet1/0
type: dynamic_dot1q
- name: Ethernet1/1
connected_device: R2
connected_device_port: Ethernet1/1
type: dynamic_dot1q
(ansible2.4) ken@ken-VirtualBox:~/github/cookbook$ cat figol.yml
---
- name: DEBUG
connection: local
hosts: "matrix-1,matrix-2"
gather_facts: no
tasks:
- set_fact:
magic: "{{ hostvars | my_magic }}"
run_once: true
- debug: var=magic
(ansible2.4) ken@ken-VirtualBox:~/github/cookbook$ ansible-playbook -i inventory figol.yml
PLAY [DEBUG] ***********************************************************************************************************************************************************************************************
TASK [set_fact] ********************************************************************************************************************************************************************************************
ok: [matrix-1]
TASK [debug] ***********************************************************************************************************************************************************************************************
ok: [matrix-1] => {
"magic": {
"matrix-1": [
{
"connected_device": "R1",
"connected_device_port": "Ethernet1/0",
"name": "Ethernet1/0",
"type": "dynamic_dot1q",
"vlan": 2000
},
{
"connected_device": "R1",
"connected_device_port": "Ethernet1/1",
"name": "Ethernet1/1",
"type": "dynamic_dot1q",
"vlan": 2001
},
{
"connected_device": "R2",
"connected_device_port": "Ethernet1/0",
"name": "Ethernet1/0",
"type": "dynamic_dot1q",
"vlan": 2002
},
{
"connected_device": "R2",
"connected_device_port": "Ethernet1/1",
"name": "Ethernet1/1",
"type": "dynamic_dot1q",
"vlan": 2003
}
],
"matrix-2": [
{
"connected_device": "R1",
"connected_device_port": "Ethernet1/0",
"name": "Ethernet1/0",
"type": "dynamic_dot1q",
"vlan": 2000
},
{
"connected_device": "R1",
"connected_device_port": "Ethernet1/1",
"name": "Ethernet1/1",
"type": "dynamic_dot1q",
"vlan": 2001
},
{
"connected_device": "R2",
"connected_device_port": "Ethernet1/0",
"name": "Ethernet1/0",
"type": "dynamic_dot1q",
"vlan": 2002
},
{
"connected_device": "R2",
"connected_device_port": "Ethernet1/1",
"name": "Ethernet1/1",
"type": "dynamic_dot1q",
"vlan": 2003
}
]
}
}
ok: [matrix-2] => {
"magic": {
"matrix-1": [
{
"connected_device": "R1",
"connected_device_port": "Ethernet1/0",
"name": "Ethernet1/0",
"type": "dynamic_dot1q",
"vlan": 2000
},
{
"connected_device": "R1",
"connected_device_port": "Ethernet1/1",
"name": "Ethernet1/1",
"type": "dynamic_dot1q",
"vlan": 2001
},
{
"connected_device": "R2",
"connected_device_port": "Ethernet1/0",
"name": "Ethernet1/0",
"type": "dynamic_dot1q",
"vlan": 2002
},
{
"connected_device": "R2",
"connected_device_port": "Ethernet1/1",
"name": "Ethernet1/1",
"type": "dynamic_dot1q",
"vlan": 2003
}
],
"matrix-2": [
{
"connected_device": "R1",
"connected_device_port": "Ethernet1/0",
"name": "Ethernet1/0",
"type": "dynamic_dot1q",
"vlan": 2000
},
{
"connected_device": "R1",
"connected_device_port": "Ethernet1/1",
"name": "Ethernet1/1",
"type": "dynamic_dot1q",
"vlan": 2001
},
{
"connected_device": "R2",
"connected_device_port": "Ethernet1/0",
"name": "Ethernet1/0",
"type": "dynamic_dot1q",
"vlan": 2002
},
{
"connected_device": "R2",
"connected_device_port": "Ethernet1/1",
"name": "Ethernet1/1",
"type": "dynamic_dot1q",
"vlan": 2003
}
]
}
}
PLAY RECAP *************************************************************************************************************************************************************************************************
matrix-1 : ok=2 changed=0 unreachable=0 failed=0
matrix-2 : ok=1 changed=0 unreachable=0 failed=0
(ansible2.4) ken@ken-VirtualBox:~/github/cookbook$ cat filter_plugins/magic.py
from ansible import errors
def my_magic(hostvars):
new_list = []
current_vlan = 2000
out_dict = {}
for device, value in hostvars.items():
if device in ['matrix-1', 'matrix-2']:
device_interfaces = hostvars[device]['interfaces']
for interface in device_interfaces:
interface_dict = {}
for k,v, in interface.items():
interface_dict[k] = v
interface_dict['vlan'] = current_vlan
new_list.append(interface_dict)
current_vlan = current_vlan + 1
out_dict[device] = new_list
return out_dict
class FilterModule(object):
def filters(self):
return {
'my_magic': my_magic,
}
(ansible2.4) ken@ken-VirtualBox:~/github/cookbook$
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment