Repository URL to install this package:
|
Version:
4.1.94.17 ▾
|
#!/usr/bin/python
# -*- coding: utf-8 -*-
import traceback
from ansible.module_utils.basic import AnsibleModule
from netifaces import interfaces, ifaddresses, AF_INET6
DOCUMENTATION = '''
---
module: trilio_ipv6_facts
short_description: Returns ipv6 address and interface info
options:
interface:
description:
- interface of the ip address
- Looks for all interfaces if not defined
required: no
default: None
author: Abhijeet Patra
'''
EXAMPLES = '''
examples:
trilio_ipv6_facts:
interface: "ens3"
'''
def get_ip_addresses(iface=None):
result = {}
iface = interfaces() if not iface else [iface]
for ifaceName in iface:
try:
ip_addresses = []
for link in ifaddresses(ifaceName)[AF_INET6]:
ip_addresses.append(link['addr'])
result[ifaceName] = ip_addresses
except Exception as ex:
pass
return {'trilio_ipv6':result}
def dispatch(iface):
return dict(changed=False,
ansible_facts=get_ip_addresses(iface))
def main():
module = AnsibleModule(
argument_spec=dict(
interface = dict(required=False, default=None),
),
)
iface = module.params['interface']
try:
d = dispatch(iface)
except Exception:
module.fail_json(msg=traceback.format_exc())
else:
module.exit_json(**d)
# this is magic, see lib/ansible/module_common.py
# <<INCLUDE_ANSIBLE_MODULE_COMMON>>
if __name__ == '__main__':
main()