def main(): fields = { "host": { "required": False, "type": "str" }, "username": { "required": False, "type": "str" }, "password": { "required": False, "type": "str", "default": "", "no_log": True }, "vdom": { "required": False, "type": "str", "default": "root" }, "https": { "required": False, "type": "bool", "default": True }, "ssl_verify": { "required": False, "type": "bool", "default": True }, "state": { "required": True, "type": "str", "choices": ["present", "absent"] }, "wireless_controller_ble_profile": { "required": False, "type": "dict", "default": None, "options": { "advertising": { "required": False, "type": "str", "choices": ["ibeacon", "eddystone-uid", "eddystone-url"] }, "beacon_interval": { "required": False, "type": "int" }, "ble_scanning": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "comment": { "required": False, "type": "str" }, "eddystone_instance": { "required": False, "type": "str" }, "eddystone_namespace": { "required": False, "type": "str" }, "eddystone_url": { "required": False, "type": "str" }, "eddystone_url_encode_hex": { "required": False, "type": "str" }, "ibeacon_uuid": { "required": False, "type": "str" }, "major_id": { "required": False, "type": "int" }, "minor_id": { "required": False, "type": "int" }, "name": { "required": True, "type": "str" }, "txpower": { "required": False, "type": "str", "choices": [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12" ] } } } } module = AnsibleModule(argument_spec=fields, supports_check_mode=False) # legacy_mode refers to using fortiosapi instead of HTTPAPI legacy_mode = 'host' in module.params and module.params['host'] is not None and \ 'username' in module.params and module.params['username'] is not None and \ 'password' in module.params and module.params['password'] is not None if not legacy_mode: if module._socket_path: connection = Connection(module._socket_path) fos = FortiOSHandler(connection) is_error, has_changed, result = fortios_wireless_controller( module.params, fos) else: module.fail_json(**FAIL_SOCKET_MSG) else: try: from fortiosapi import FortiOSAPI except ImportError: module.fail_json(msg="fortiosapi module is required") fos = FortiOSAPI() login(module.params, fos) is_error, has_changed, result = fortios_wireless_controller( module.params, fos) fos.logout() if not is_error: module.exit_json(changed=has_changed, meta=result) else: module.fail_json(msg="Error in repo", meta=result)
def main(): fields = { "host": { "required": False, "type": "str" }, "username": { "required": False, "type": "str" }, "password": { "required": False, "type": "str", "default": "", "no_log": True }, "vdom": { "required": False, "type": "str", "default": "root" }, "https": { "required": False, "type": "bool", "default": True }, "ssl_verify": { "required": False, "type": "bool", "default": True }, "state": { "required": True, "type": "str", "choices": ["present", "absent"] }, "vpn_ssl_web_user_group_bookmark": { "required": False, "type": "dict", "default": None, "options": { "bookmarks": { "required": False, "type": "list", "options": { "additional_params": { "required": False, "type": "str" }, "apptype": { "required": False, "type": "str", "choices": [ "citrix", "ftp", "portforward", "rdp", "smb", "ssh", "telnet", "vnc", "web" ] }, "description": { "required": False, "type": "str" }, "folder": { "required": False, "type": "str" }, "form_data": { "required": False, "type": "list", "options": { "name": { "required": True, "type": "str" }, "value": { "required": False, "type": "str" } } }, "host": { "required": False, "type": "str" }, "listening_port": { "required": False, "type": "int" }, "load_balancing_info": { "required": False, "type": "str" }, "logon_password": { "required": False, "type": "str" }, "logon_user": { "required": False, "type": "str" }, "name": { "required": True, "type": "str" }, "port": { "required": False, "type": "int" }, "preconnection_blob": { "required": False, "type": "str" }, "preconnection_id": { "required": False, "type": "int" }, "remote_port": { "required": False, "type": "int" }, "security": { "required": False, "type": "str", "choices": ["rdp", "nla", "tls", "any"] }, "server_layout": { "required": False, "type": "str", "choices": [ "de-de-qwertz", "en-gb-qwerty", "en-us-qwerty", "es-es-qwerty", "fr-fr-azerty", "fr-ch-qwertz", "it-it-qwerty", "ja-jp-qwerty", "pt-br-qwerty", "sv-se-qwerty", "tr-tr-qwerty", "failsafe" ] }, "show_status_window": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "sso": { "required": False, "type": "str", "choices": ["disable", "static", "auto"] }, "sso_credential": { "required": False, "type": "str", "choices": ["sslvpn-login", "alternative"] }, "sso_credential_sent_once": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "sso_password": { "required": False, "type": "str" }, "sso_username": { "required": False, "type": "str" }, "url": { "required": False, "type": "str" } } }, "name": { "required": True, "type": "str" } } } } module = AnsibleModule(argument_spec=fields, supports_check_mode=False) # legacy_mode refers to using fortiosapi instead of HTTPAPI legacy_mode = 'host' in module.params and module.params['host'] is not None and \ 'username' in module.params and module.params['username'] is not None and \ 'password' in module.params and module.params['password'] is not None if not legacy_mode: if module._socket_path: connection = Connection(module._socket_path) fos = FortiOSHandler(connection) is_error, has_changed, result = fortios_vpn_ssl_web( module.params, fos) else: module.fail_json(**FAIL_SOCKET_MSG) else: try: from fortiosapi import FortiOSAPI except ImportError: module.fail_json(msg="fortiosapi module is required") fos = FortiOSAPI() login(module.params, fos) is_error, has_changed, result = fortios_vpn_ssl_web(module.params, fos) fos.logout() if not is_error: module.exit_json(changed=has_changed, meta=result) else: module.fail_json(msg="Error in repo", meta=result)
def main(): fields = { "host": { "required": False, "type": "str" }, "username": { "required": False, "type": "str" }, "password": { "required": False, "type": "str", "default": "", "no_log": True }, "vdom": { "required": False, "type": "str", "default": "root" }, "https": { "required": False, "type": "bool", "default": True }, "ssl_verify": { "required": False, "type": "bool", "default": True }, "antivirus_heuristic": { "required": False, "type": "dict", "default": None, "options": { "mode": { "required": False, "type": "str", "choices": ["pass", "block", "disable"] } } } } module = AnsibleModule(argument_spec=fields, supports_check_mode=False) # legacy_mode refers to using fortiosapi instead of HTTPAPI legacy_mode = 'host' in module.params and module.params['host'] is not None and \ 'username' in module.params and module.params['username'] is not None and \ 'password' in module.params and module.params['password'] is not None versions_check_result = None if not legacy_mode: if module._socket_path: connection = Connection(module._socket_path) fos = FortiOSHandler(connection) is_error, has_changed, result = fortios_antivirus( module.params, fos) versions_check_result = connection.get_system_version() else: module.fail_json(**FAIL_SOCKET_MSG) else: try: from fortiosapi import FortiOSAPI except ImportError: module.fail_json(msg="fortiosapi module is required") fos = FortiOSAPI() login(module.params, fos) is_error, has_changed, result = fortios_antivirus(module.params, fos) fos.logout() if versions_check_result and versions_check_result['matched'] is False: module.warn( "Ansible has detected version mismatch between FortOS system and galaxy, see more details by specifying option -vvv" ) if not is_error: if versions_check_result and versions_check_result['matched'] is False: module.exit_json(changed=has_changed, version_check_warning=versions_check_result, meta=result) else: module.exit_json(changed=has_changed, meta=result) else: if versions_check_result and versions_check_result['matched'] is False: module.fail_json(msg="Error in repo", version_check_warning=versions_check_result, meta=result) else: module.fail_json(msg="Error in repo", meta=result)
def main(): fields = { "host": {"required": False, "type": "str"}, "username": {"required": False, "type": "str"}, "password": {"required": False, "type": "str", "default": "", "no_log": True}, "vdom": {"required": False, "type": "str", "default": "root"}, "https": {"required": False, "type": "bool", "default": True}, "ssl_verify": {"required": False, "type": "bool", "default": True}, "state": {"required": False, "type": "str", "choices": ["present", "absent"]}, "firewall_addrgrp6": { "required": False, "type": "dict", "default": None, "options": { "state": {"required": False, "type": "str", "choices": ["present", "absent"]}, "color": {"required": False, "type": "int"}, "comment": {"required": False, "type": "str"}, "member": {"required": False, "type": "list", "options": { "name": {"required": True, "type": "str"} }}, "name": {"required": True, "type": "str"}, "tagging": {"required": False, "type": "list", "options": { "category": {"required": False, "type": "str"}, "name": {"required": True, "type": "str"}, "tags": {"required": False, "type": "list", "options": { "name": {"required": True, "type": "str"} }} }}, "uuid": {"required": False, "type": "str"}, "visibility": {"required": False, "type": "str", "choices": ["enable", "disable"]} } } } module = AnsibleModule(argument_spec=fields, supports_check_mode=False) # legacy_mode refers to using fortiosapi instead of HTTPAPI legacy_mode = 'host' in module.params and module.params['host'] is not None and \ 'username' in module.params and module.params['username'] is not None and \ 'password' in module.params and module.params['password'] is not None if not legacy_mode: if module._socket_path: connection = Connection(module._socket_path) fos = FortiOSHandler(connection) is_error, has_changed, result = fortios_firewall(module.params, fos) else: module.fail_json(**FAIL_SOCKET_MSG) else: try: from fortiosapi import FortiOSAPI except ImportError: module.fail_json(msg="fortiosapi module is required") fos = FortiOSAPI() login(module.params, fos) is_error, has_changed, result = fortios_firewall(module.params, fos) fos.logout() if not is_error: module.exit_json(changed=has_changed, meta=result) else: module.fail_json(msg="Error in repo", meta=result)
def main(): fields = { "host": { "required": False, "type": "str" }, "username": { "required": False, "type": "str" }, "password": { "required": False, "type": "str", "default": "", "no_log": True }, "vdom": { "required": False, "type": "str", "default": "root" }, "https": { "required": False, "type": "bool", "default": True }, "ssl_verify": { "required": False, "type": "bool", "default": True }, "state": { "required": True, "type": "str", "choices": ["present", "absent"] }, "system_snmp_user": { "required": False, "type": "dict", "default": None, "options": { "auth_proto": { "required": False, "type": "str", "choices": ["md5", "sha"] }, "auth_pwd": { "required": False, "type": "str" }, "events": { "required": False, "type": "list", "choices": [ "cpu-high", "mem-low", "log-full", "intf-ip", "vpn-tun-up", "vpn-tun-down", "ha-switch", "ha-hb-failure", "ips-signature", "ips-anomaly", "av-virus", "av-oversize", "av-pattern", "av-fragmented", "fm-if-change", "fm-conf-change", "bgp-established", "bgp-backward-transition", "ha-member-up", "ha-member-down", "ent-conf-change", "av-conserve", "av-bypass", "av-oversize-passed", "av-oversize-blocked", "ips-pkg-update", "ips-fail-open", "faz-disconnect", "wc-ap-up", "wc-ap-down", "fswctl-session-up", "fswctl-session-down", "load-balance-real-server-down", "device-new", "per-cpu-high" ] }, "ha_direct": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "name": { "required": True, "type": "str" }, "notify_hosts": { "required": False, "type": "list" }, "notify_hosts6": { "required": False, "type": "list" }, "priv_proto": { "required": False, "type": "str", "choices": ["aes", "des", "aes256", "aes256cisco"] }, "priv_pwd": { "required": False, "type": "str" }, "queries": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "query_port": { "required": False, "type": "int" }, "security_level": { "required": False, "type": "str", "choices": ["no-auth-no-priv", "auth-no-priv", "auth-priv"] }, "source_ip": { "required": False, "type": "str" }, "source_ipv6": { "required": False, "type": "str" }, "status": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "trap_lport": { "required": False, "type": "int" }, "trap_rport": { "required": False, "type": "int" }, "trap_status": { "required": False, "type": "str", "choices": ["enable", "disable"] } } } } module = AnsibleModule(argument_spec=fields, supports_check_mode=False) # legacy_mode refers to using fortiosapi instead of HTTPAPI legacy_mode = 'host' in module.params and module.params['host'] is not None and \ 'username' in module.params and module.params['username'] is not None and \ 'password' in module.params and module.params['password'] is not None if not legacy_mode: if module._socket_path: connection = Connection(module._socket_path) fos = FortiOSHandler(connection) is_error, has_changed, result = fortios_system_snmp( module.params, fos) else: module.fail_json(**FAIL_SOCKET_MSG) else: try: from fortiosapi import FortiOSAPI except ImportError: module.fail_json(msg="fortiosapi module is required") fos = FortiOSAPI() login(module.params, fos) is_error, has_changed, result = fortios_system_snmp(module.params, fos) fos.logout() if not is_error: module.exit_json(changed=has_changed, meta=result) else: module.fail_json(msg="Error in repo", meta=result)
def main(): fields = { "host": { "required": False, "type": "str" }, "username": { "required": False, "type": "str" }, "password": { "required": False, "type": "str", "default": "", "no_log": True }, "vdom": { "required": False, "type": "str", "default": "root" }, "https": { "required": False, "type": "bool", "default": True }, "ssl_verify": { "required": False, "type": "bool", "default": True }, "ips_settings": { "required": False, "type": "dict", "default": None, "options": { "ips_packet_quota": { "required": False, "type": "int" }, "packet_log_history": { "required": False, "type": "int" }, "packet_log_memory": { "required": False, "type": "int" }, "packet_log_post_attack": { "required": False, "type": "int" } } } } module = AnsibleModule(argument_spec=fields, supports_check_mode=False) # legacy_mode refers to using fortiosapi instead of HTTPAPI legacy_mode = 'host' in module.params and module.params['host'] is not None and \ 'username' in module.params and module.params['username'] is not None and \ 'password' in module.params and module.params['password'] is not None if not legacy_mode: if module._socket_path: connection = Connection(module._socket_path) fos = FortiOSHandler(connection) is_error, has_changed, result = fortios_ips(module.params, fos) else: module.fail_json(**FAIL_SOCKET_MSG) else: try: from fortiosapi import FortiOSAPI except ImportError: module.fail_json(msg="fortiosapi module is required") fos = FortiOSAPI() login(module.params, fos) is_error, has_changed, result = fortios_ips(module.params, fos) fos.logout() if not is_error: module.exit_json(changed=has_changed, meta=result) else: module.fail_json(msg="Error in repo", meta=result)
def main(): fields = { "host": { "required": False, "type": "str" }, "username": { "required": False, "type": "str" }, "password": { "required": False, "type": "str", "default": "", "no_log": True }, "vdom": { "required": False, "type": "str", "default": "root" }, "https": { "required": False, "type": "bool", "default": True }, "ssl_verify": { "required": False, "type": "bool", "default": True }, "log_fortianalyzer2_filter": { "required": False, "type": "dict", "default": None, "options": { "anomaly": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "dlp_archive": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "dns": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "filter": { "required": False, "type": "str" }, "filter_type": { "required": False, "type": "str", "choices": ["include", "exclude"] }, "forward_traffic": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "gtp": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "local_traffic": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "multicast_traffic": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "netscan_discovery": { "required": False, "type": "str" }, "netscan_vulnerability": { "required": False, "type": "str" }, "severity": { "required": False, "type": "str", "choices": [ "emergency", "alert", "critical", "error", "warning", "notification", "information", "debug" ] }, "sniffer_traffic": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "ssh": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "voip": { "required": False, "type": "str", "choices": ["enable", "disable"] } } } } module = AnsibleModule(argument_spec=fields, supports_check_mode=False) # legacy_mode refers to using fortiosapi instead of HTTPAPI legacy_mode = 'host' in module.params and module.params['host'] is not None and \ 'username' in module.params and module.params['username'] is not None and \ 'password' in module.params and module.params['password'] is not None if not legacy_mode: if module._socket_path: connection = Connection(module._socket_path) fos = FortiOSHandler(connection) is_error, has_changed, result = fortios_log_fortianalyzer2( module.params, fos) else: module.fail_json(**FAIL_SOCKET_MSG) else: try: from fortiosapi import FortiOSAPI except ImportError: module.fail_json(msg="fortiosapi module is required") fos = FortiOSAPI() login(module.params, fos) is_error, has_changed, result = fortios_log_fortianalyzer2( module.params, fos) fos.logout() if not is_error: module.exit_json(changed=has_changed, meta=result) else: module.fail_json(msg="Error in repo", meta=result)
def main(): fields = { "host": { "required": False, "type": "str" }, "username": { "required": False, "type": "str" }, "password": { "required": False, "type": "str", "default": "", "no_log": True }, "vdom": { "required": False, "type": "str", "default": "root" }, "https": { "required": False, "type": "bool", "default": True }, "ssl_verify": { "required": False, "type": "bool", "default": True }, "system_password_policy_guest_admin": { "required": False, "type": "dict", "default": None, "options": { "apply_to": { "required": False, "type": "str", "choices": ["guest-admin-password"] }, "change_4_characters": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "expire_day": { "required": False, "type": "int" }, "expire_status": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "min_lower_case_letter": { "required": False, "type": "int" }, "min_non_alphanumeric": { "required": False, "type": "int" }, "min_number": { "required": False, "type": "int" }, "min_upper_case_letter": { "required": False, "type": "int" }, "minimum_length": { "required": False, "type": "int" }, "reuse_password": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "status": { "required": False, "type": "str", "choices": ["enable", "disable"] } } } } module = AnsibleModule(argument_spec=fields, supports_check_mode=False) # legacy_mode refers to using fortiosapi instead of HTTPAPI legacy_mode = 'host' in module.params and module.params['host'] is not None and \ 'username' in module.params and module.params['username'] is not None and \ 'password' in module.params and module.params['password'] is not None if not legacy_mode: if module._socket_path: connection = Connection(module._socket_path) fos = FortiOSHandler(connection) is_error, has_changed, result = fortios_system(module.params, fos) else: module.fail_json(**FAIL_SOCKET_MSG) else: try: from fortiosapi import FortiOSAPI except ImportError: module.fail_json(msg="fortiosapi module is required") fos = FortiOSAPI() login(module.params, fos) is_error, has_changed, result = fortios_system(module.params, fos) fos.logout() if not is_error: module.exit_json(changed=has_changed, meta=result) else: module.fail_json(msg="Error in repo", meta=result)
def main(): fields = { "host": {"required": False, "type": "str"}, "username": {"required": False, "type": "str"}, "password": {"required": False, "type": "str", "default": "", "no_log": True}, "vdom": {"required": False, "type": "str", "default": "root"}, "https": {"required": False, "type": "bool", "default": True}, "ssl_verify": {"required": False, "type": "bool", "default": True}, "state": {"required": False, "type": "str", "choices": ["present", "absent"]}, "firewall_ssh_host_key": { "required": False, "type": "dict", "default": None, "options": { "state": {"required": False, "type": "str", "choices": ["present", "absent"]}, "hostname": {"required": False, "type": "str"}, "ip": {"required": False, "type": "str"}, "name": {"required": True, "type": "str"}, "nid": {"required": False, "type": "str", "choices": ["256", "384", "521"]}, "port": {"required": False, "type": "int"}, "public_key": {"required": False, "type": "str"}, "status": {"required": False, "type": "str", "choices": ["trusted", "revoked"]}, "type": {"required": False, "type": "str", "choices": ["RSA", "DSA", "ECDSA", "ED25519", "RSA-CA", "DSA-CA", "ECDSA-CA", "ED25519-CA"]} } } } module = AnsibleModule(argument_spec=fields, supports_check_mode=False) # legacy_mode refers to using fortiosapi instead of HTTPAPI legacy_mode = 'host' in module.params and module.params['host'] is not None and \ 'username' in module.params and module.params['username'] is not None and \ 'password' in module.params and module.params['password'] is not None if not legacy_mode: if module._socket_path: connection = Connection(module._socket_path) fos = FortiOSHandler(connection) is_error, has_changed, result = fortios_firewall_ssh(module.params, fos) else: module.fail_json(**FAIL_SOCKET_MSG) else: try: from fortiosapi import FortiOSAPI except ImportError: module.fail_json(msg="fortiosapi module is required") fos = FortiOSAPI() login(module.params, fos) is_error, has_changed, result = fortios_firewall_ssh(module.params, fos) fos.logout() if not is_error: module.exit_json(changed=has_changed, meta=result) else: module.fail_json(msg="Error in repo", meta=result)
def main(): fields = { "host": { "required": False, "type": "str" }, "username": { "required": False, "type": "str" }, "password": { "required": False, "type": "str", "default": "", "no_log": True }, "vdom": { "required": False, "type": "str", "default": "root" }, "https": { "required": False, "type": "bool", "default": True }, "ssl_verify": { "required": False, "type": "bool", "default": True }, "state": { "required": True, "type": "str", "choices": ["present", "absent"] }, "switch_controller_qos_ip_dscp_map": { "required": False, "type": "dict", "default": None, "options": { "description": { "required": False, "type": "str" }, "map": { "required": False, "type": "list", "options": { "cos_queue": { "required": False, "type": "int" }, "diffserv": { "required": False, "type": "str", "choices": [ "CS0", "CS1", "AF11", "AF12", "AF13", "CS2", "AF21", "AF22", "AF23", "CS3", "AF31", "AF32", "AF33", "CS4", "AF41", "AF42", "AF43", "CS5", "EF", "CS6", "CS7" ] }, "ip_precedence": { "required": False, "type": "str", "choices": [ "network-control", "internetwork-control", "critic-ecp", "flashoverride", "flash", "immediate", "priority", "routine" ] }, "name": { "required": True, "type": "str" }, "value": { "required": False, "type": "str" } } }, "name": { "required": True, "type": "str" } } } } module = AnsibleModule(argument_spec=fields, supports_check_mode=False) # legacy_mode refers to using fortiosapi instead of HTTPAPI legacy_mode = 'host' in module.params and module.params['host'] is not None and \ 'username' in module.params and module.params['username'] is not None and \ 'password' in module.params and module.params['password'] is not None versions_check_result = None if not legacy_mode: if module._socket_path: connection = Connection(module._socket_path) fos = FortiOSHandler(connection) is_error, has_changed, result = fortios_switch_controller_qos( module.params, fos) versions_check_result = connection.get_system_version() else: module.fail_json(**FAIL_SOCKET_MSG) else: try: from fortiosapi import FortiOSAPI except ImportError: module.fail_json(msg="fortiosapi module is required") fos = FortiOSAPI() login(module.params, fos) is_error, has_changed, result = fortios_switch_controller_qos( module.params, fos) fos.logout() if versions_check_result and versions_check_result['matched'] is False: module.warn( "Ansible has detected version mismatch between FortOS system and galaxy, see more details by specifying option -vvv" ) if not is_error: if versions_check_result and versions_check_result['matched'] is False: module.exit_json(changed=has_changed, version_check_warning=versions_check_result, meta=result) else: module.exit_json(changed=has_changed, meta=result) else: if versions_check_result and versions_check_result['matched'] is False: module.fail_json(msg="Error in repo", version_check_warning=versions_check_result, meta=result) else: module.fail_json(msg="Error in repo", meta=result)
def main(): fields = { "host": {"required": False, "type": "str"}, "username": {"required": False, "type": "str"}, "password": {"required": False, "type": "str", "default": "", "no_log": True}, "vdom": {"required": False, "type": "str", "default": "root"}, "https": {"required": False, "type": "bool", "default": True}, "ssl_verify": {"required": False, "type": "bool", "default": True}, "state": {"required": False, "type": "str", "choices": ["present", "absent"]}, "dnsfilter_profile": { "required": False, "type": "dict", "default": None, "options": { "state": {"required": False, "type": "str", "choices": ["present", "absent"]}, "block_action": {"required": False, "type": "str", "choices": ["block", "redirect"]}, "block_botnet": {"required": False, "type": "str", "choices": ["disable", "enable"]}, "comment": {"required": False, "type": "str"}, "domain_filter": {"required": False, "type": "dict", "options": { "domain_filter_table": {"required": False, "type": "int"} }}, "external_ip_blocklist": {"required": False, "type": "list", "options": { "name": {"required": True, "type": "str"} }}, "ftgd_dns": {"required": False, "type": "dict", "options": { "filters": {"required": False, "type": "list", "options": { "action": {"required": False, "type": "str", "choices": ["block", "monitor"]}, "category": {"required": False, "type": "int"}, "id": {"required": True, "type": "int"}, "log": {"required": False, "type": "str", "choices": ["enable", "disable"]} }}, "options": {"required": False, "type": "str", "choices": ["error-allow", "ftgd-disable"]} }}, "log_all_domain": {"required": False, "type": "str", "choices": ["enable", "disable"]}, "name": {"required": True, "type": "str"}, "redirect_portal": {"required": False, "type": "str"}, "safe_search": {"required": False, "type": "str", "choices": ["disable", "enable"]}, "sdns_domain_log": {"required": False, "type": "str", "choices": ["enable", "disable"]}, "sdns_ftgd_err_log": {"required": False, "type": "str", "choices": ["enable", "disable"]}, "youtube_restrict": {"required": False, "type": "str", "choices": ["strict", "moderate"]} } } } module = AnsibleModule(argument_spec=fields, supports_check_mode=False) # legacy_mode refers to using fortiosapi instead of HTTPAPI legacy_mode = 'host' in module.params and module.params['host'] is not None and \ 'username' in module.params and module.params['username'] is not None and \ 'password' in module.params and module.params['password'] is not None if not legacy_mode: if module._socket_path: connection = Connection(module._socket_path) fos = FortiOSHandler(connection) is_error, has_changed, result = fortios_dnsfilter(module.params, fos) else: module.fail_json(**FAIL_SOCKET_MSG) else: try: from fortiosapi import FortiOSAPI except ImportError: module.fail_json(msg="fortiosapi module is required") fos = FortiOSAPI() login(module.params, fos) is_error, has_changed, result = fortios_dnsfilter(module.params, fos) fos.logout() if not is_error: module.exit_json(changed=has_changed, meta=result) else: module.fail_json(msg="Error in repo", meta=result)
def main(): fields = { "host": {"required": False, "type": "str"}, "username": {"required": False, "type": "str"}, "password": {"required": False, "type": "str", "default": "", "no_log": True}, "vdom": {"required": False, "type": "str", "default": "root"}, "https": {"required": False, "type": "bool", "default": True}, "ssl_verify": {"required": False, "type": "bool", "default": True}, "state": {"required": False, "type": "str", "choices": ["present", "absent"]}, "authentication_scheme": { "required": False, "type": "dict", "default": None, "options": { "state": {"required": False, "type": "str", "choices": ["present", "absent"]}, "domain_controller": {"required": False, "type": "str"}, "fsso_agent_for_ntlm": {"required": False, "type": "str"}, "fsso_guest": {"required": False, "type": "str", "choices": ["enable", "disable"]}, "kerberos_keytab": {"required": False, "type": "str"}, "method": {"required": False, "type": "str", "choices": ["ntlm", "basic", "digest", "form", "negotiate", "fsso", "rsso", "ssh-publickey"]}, "name": {"required": True, "type": "str"}, "negotiate_ntlm": {"required": False, "type": "str", "choices": ["enable", "disable"]}, "require_tfa": {"required": False, "type": "str", "choices": ["enable", "disable"]}, "ssh_ca": {"required": False, "type": "str"}, "user_database": {"required": False, "type": "list", "options": { "name": {"required": True, "type": "str"} }} } } } module = AnsibleModule(argument_spec=fields, supports_check_mode=False) # legacy_mode refers to using fortiosapi instead of HTTPAPI legacy_mode = 'host' in module.params and module.params['host'] is not None and \ 'username' in module.params and module.params['username'] is not None and \ 'password' in module.params and module.params['password'] is not None if not legacy_mode: if module._socket_path: connection = Connection(module._socket_path) fos = FortiOSHandler(connection) is_error, has_changed, result = fortios_authentication(module.params, fos) else: module.fail_json(**FAIL_SOCKET_MSG) else: try: from fortiosapi import FortiOSAPI except ImportError: module.fail_json(msg="fortiosapi module is required") fos = FortiOSAPI() login(module.params, fos) is_error, has_changed, result = fortios_authentication(module.params, fos) fos.logout() if not is_error: module.exit_json(changed=has_changed, meta=result) else: module.fail_json(msg="Error in repo", meta=result)
def main(): fields = { "host": { "required": False, "type": "str" }, "username": { "required": False, "type": "str" }, "password": { "required": False, "type": "str", "default": "", "no_log": True }, "vdom": { "required": False, "type": "str", "default": "root" }, "https": { "required": False, "type": "bool", "default": True }, "ssl_verify": { "required": False, "type": "bool", "default": True }, "state": { "required": True, "type": "str", "choices": ["present", "absent"] }, "user_local": { "required": False, "type": "dict", "default": None, "options": { "auth_concurrent_override": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "auth_concurrent_value": { "required": False, "type": "int" }, "authtimeout": { "required": False, "type": "int" }, "email_to": { "required": False, "type": "str" }, "fortitoken": { "required": False, "type": "str" }, "id": { "required": False, "type": "int" }, "ldap_server": { "required": False, "type": "str" }, "name": { "required": True, "type": "str" }, "passwd": { "required": False, "type": "str" }, "passwd_policy": { "required": False, "type": "str" }, "passwd_time": { "required": False, "type": "str" }, "ppk_identity": { "required": False, "type": "str" }, "ppk_secret": { "required": False, "type": "str" }, "radius_server": { "required": False, "type": "str" }, "sms_custom_server": { "required": False, "type": "str" }, "sms_phone": { "required": False, "type": "str" }, "sms_server": { "required": False, "type": "str", "choices": ["fortiguard", "custom"] }, "status": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "two_factor": { "required": False, "type": "str", "choices": ["disable", "fortitoken", "email", "sms"] }, "type": { "required": False, "type": "str", "choices": ["password", "radius", "tacacs+", "ldap"] }, "workstation": { "required": False, "type": "str" } } } } module = AnsibleModule(argument_spec=fields, supports_check_mode=False) # legacy_mode refers to using fortiosapi instead of HTTPAPI legacy_mode = 'host' in module.params and module.params['host'] is not None and \ 'username' in module.params and module.params['username'] is not None and \ 'password' in module.params and module.params['password'] is not None if not legacy_mode: if module._socket_path: connection = Connection(module._socket_path) fos = FortiOSHandler(connection) is_error, has_changed, result = fortios_user(module.params, fos) else: module.fail_json(**FAIL_SOCKET_MSG) else: try: from fortiosapi import FortiOSAPI except ImportError: module.fail_json(msg="fortiosapi module is required") fos = FortiOSAPI() login(module.params, fos) is_error, has_changed, result = fortios_user(module.params, fos) fos.logout() if not is_error: module.exit_json(changed=has_changed, meta=result) else: module.fail_json(msg="Error in repo", meta=result)
def main(): fields = { "host": { "required": False, "type": "str" }, "username": { "required": False, "type": "str" }, "password": { "required": False, "type": "str", "default": "", "no_log": True }, "vdom": { "required": False, "type": "str", "default": "root" }, "https": { "required": False, "type": "bool", "default": True }, "ssl_verify": { "required": False, "type": "bool", "default": True }, "state": { "required": False, "type": "str", "choices": ["present", "absent"] }, "report_chart": { "required": False, "type": "dict", "default": None, "options": { "state": { "required": False, "type": "str", "choices": ["present", "absent"] }, "background": { "required": False, "type": "str" }, "category": { "required": False, "type": "str", "choices": [ "misc", "traffic", "event", "virus", "webfilter", "attack", "spam", "dlp", "app-ctrl", "vulnerability" ] }, "category_series": { "required": False, "type": "dict", "options": { "databind": { "required": False, "type": "str" }, "font_size": { "required": False, "type": "int" } } }, "color_palette": { "required": False, "type": "str" }, "column": { "required": False, "type": "list", "options": { "detail_unit": { "required": False, "type": "str" }, "detail_value": { "required": False, "type": "str" }, "footer_unit": { "required": False, "type": "str" }, "footer_value": { "required": False, "type": "str" }, "header_value": { "required": False, "type": "str" }, "id": { "required": True, "type": "int" }, "mapping": { "required": False, "type": "list", "options": { "displayname": { "required": False, "type": "str" }, "id": { "required": True, "type": "int" }, "op": { "required": False, "type": "str", "choices": [ "none", "greater", "greater-equal", "less", "less-equal", "equal", "between" ] }, "value_type": { "required": False, "type": "str", "choices": ["integer", "string"] }, "value1": { "required": False, "type": "str" }, "value2": { "required": False, "type": "str" } } } } }, "comments": { "required": False, "type": "str" }, "dataset": { "required": False, "type": "str" }, "dimension": { "required": False, "type": "str", "choices": ["2D", "3D"] }, "drill_down_charts": { "required": False, "type": "list", "options": { "chart_name": { "required": False, "type": "str" }, "id": { "required": True, "type": "int" }, "status": { "required": False, "type": "str", "choices": ["enable", "disable"] } } }, "favorite": { "required": False, "type": "str", "choices": ["no", "yes"] }, "graph_type": { "required": False, "type": "str", "choices": ["none", "bar", "pie", "line", "flow"] }, "legend": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "legend_font_size": { "required": False, "type": "int" }, "name": { "required": True, "type": "str" }, "period": { "required": False, "type": "str", "choices": ["last24h", "last7d"] }, "policy": { "required": False, "type": "int" }, "style": { "required": False, "type": "str", "choices": ["auto", "manual"] }, "title": { "required": False, "type": "str" }, "title_font_size": { "required": False, "type": "int" }, "type": { "required": False, "type": "str", "choices": ["graph", "table"] }, "value_series": { "required": False, "type": "dict", "options": { "databind": { "required": False, "type": "str" } } }, "x_series": { "required": False, "type": "dict", "options": { "caption": { "required": False, "type": "str" }, "caption_font_size": { "required": False, "type": "int" }, "databind": { "required": False, "type": "str" }, "font_size": { "required": False, "type": "int" }, "is_category": { "required": False, "type": "str", "choices": ["yes", "no"] }, "label_angle": { "required": False, "type": "str", "choices": ["45-degree", "vertical", "horizontal"] }, "scale_direction": { "required": False, "type": "str", "choices": ["decrease", "increase"] }, "scale_format": { "required": False, "type": "str", "choices": [ "YYYY-MM-DD-HH-MM", "YYYY-MM-DD HH", "YYYY-MM-DD", "YYYY-MM", "YYYY", "HH-MM", "MM-DD" ] }, "scale_step": { "required": False, "type": "int" }, "scale_unit": { "required": False, "type": "str", "choices": ["minute", "hour", "day", "month", "year"] }, "unit": { "required": False, "type": "str" } } }, "y_series": { "required": False, "type": "dict", "options": { "caption": { "required": False, "type": "str" }, "caption_font_size": { "required": False, "type": "int" }, "databind": { "required": False, "type": "str" }, "extra_databind": { "required": False, "type": "str" }, "extra_y": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "extra_y_legend": { "required": False, "type": "str" }, "font_size": { "required": False, "type": "int" }, "group": { "required": False, "type": "str" }, "label_angle": { "required": False, "type": "str", "choices": ["45-degree", "vertical", "horizontal"] }, "unit": { "required": False, "type": "str" }, "y_legend": { "required": False, "type": "str" } } } } } } module = AnsibleModule(argument_spec=fields, supports_check_mode=False) # legacy_mode refers to using fortiosapi instead of HTTPAPI legacy_mode = 'host' in module.params and module.params['host'] is not None and \ 'username' in module.params and module.params['username'] is not None and \ 'password' in module.params and module.params['password'] is not None versions_check_result = None if not legacy_mode: if module._socket_path: connection = Connection(module._socket_path) fos = FortiOSHandler(connection) is_error, has_changed, result = fortios_report(module.params, fos) versions_check_result = connection.get_system_version() else: module.fail_json(**FAIL_SOCKET_MSG) else: try: from fortiosapi import FortiOSAPI except ImportError: module.fail_json(msg="fortiosapi module is required") fos = FortiOSAPI() login(module.params, fos) is_error, has_changed, result = fortios_report(module.params, fos) fos.logout() if versions_check_result and versions_check_result['matched'] is False: module.warn( "Ansible has detected version mismatch between FortOS system and galaxy, see more details by specifying option -vvv" ) if not is_error: if versions_check_result and versions_check_result['matched'] is False: module.exit_json(changed=has_changed, version_check_warning=versions_check_result, meta=result) else: module.exit_json(changed=has_changed, meta=result) else: if versions_check_result and versions_check_result['matched'] is False: module.fail_json(msg="Error in repo", version_check_warning=versions_check_result, meta=result) else: module.fail_json(msg="Error in repo", meta=result)
def main(): fields = { "host": { "required": False, "type": "str" }, "username": { "required": False, "type": "str" }, "password": { "required": False, "type": "str", "default": "", "no_log": True }, "vdom": { "required": False, "type": "str", "default": "root" }, "https": { "required": False, "type": "bool", "default": True }, "ssl_verify": { "required": False, "type": "bool", "default": True }, "state": { "required": False, "type": "str", "choices": ["present", "absent"] }, "ips_sensor": { "required": False, "type": "dict", "default": None, "options": { "state": { "required": False, "type": "str", "choices": ["present", "absent"] }, "block_malicious_url": { "required": False, "type": "str", "choices": ["disable", "enable"] }, "comment": { "required": False, "type": "str" }, "entries": { "required": False, "type": "list", "options": { "action": { "required": False, "type": "str", "choices": ["pass", "block", "reset", "default"] }, "application": { "required": False, "type": "str" }, "exempt_ip": { "required": False, "type": "list", "options": { "dst_ip": { "required": False, "type": "str" }, "id": { "required": True, "type": "int" }, "src_ip": { "required": False, "type": "str" } } }, "id": { "required": True, "type": "int" }, "location": { "required": False, "type": "str" }, "log": { "required": False, "type": "str", "choices": ["disable", "enable"] }, "log_attack_context": { "required": False, "type": "str", "choices": ["disable", "enable"] }, "log_packet": { "required": False, "type": "str", "choices": ["disable", "enable"] }, "os": { "required": False, "type": "str" }, "protocol": { "required": False, "type": "str" }, "quarantine": { "required": False, "type": "str", "choices": ["none", "attacker"] }, "quarantine_expiry": { "required": False, "type": "str" }, "quarantine_log": { "required": False, "type": "str", "choices": ["disable", "enable"] }, "rate_count": { "required": False, "type": "int" }, "rate_duration": { "required": False, "type": "int" }, "rate_mode": { "required": False, "type": "str", "choices": ["periodical", "continuous"] }, "rate_track": { "required": False, "type": "str", "choices": [ "none", "src-ip", "dest-ip", "dhcp-client-mac", "dns-domain" ] }, "rule": { "required": False, "type": "list", "options": { "id": { "required": True, "type": "int" } } }, "severity": { "required": False, "type": "str" }, "status": { "required": False, "type": "str", "choices": ["disable", "enable", "default"] } } }, "extended_log": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "filter": { "required": False, "type": "list", "options": { "action": { "required": False, "type": "str", "choices": ["pass", "block", "reset", "default"] }, "application": { "required": False, "type": "str" }, "location": { "required": False, "type": "str" }, "log": { "required": False, "type": "str", "choices": ["disable", "enable"] }, "log_packet": { "required": False, "type": "str", "choices": ["disable", "enable"] }, "name": { "required": True, "type": "str" }, "os": { "required": False, "type": "str" }, "protocol": { "required": False, "type": "str" }, "quarantine": { "required": False, "type": "str", "choices": ["none", "attacker"] }, "quarantine_expiry": { "required": False, "type": "int" }, "quarantine_log": { "required": False, "type": "str", "choices": ["disable", "enable"] }, "severity": { "required": False, "type": "str" }, "status": { "required": False, "type": "str", "choices": ["disable", "enable", "default"] } } }, "name": { "required": True, "type": "str" }, "override": { "required": False, "type": "list", "options": { "action": { "required": False, "type": "str", "choices": ["pass", "block", "reset"] }, "exempt_ip": { "required": False, "type": "list", "options": { "dst_ip": { "required": False, "type": "str" }, "id": { "required": True, "type": "int" }, "src_ip": { "required": False, "type": "str" } } }, "log": { "required": False, "type": "str", "choices": ["disable", "enable"] }, "log_packet": { "required": False, "type": "str", "choices": ["disable", "enable"] }, "quarantine": { "required": False, "type": "str", "choices": ["none", "attacker"] }, "quarantine_expiry": { "required": False, "type": "int" }, "quarantine_log": { "required": False, "type": "str", "choices": ["disable", "enable"] }, "rule_id": { "required": False, "type": "int" }, "status": { "required": False, "type": "str", "choices": ["disable", "enable"] } } }, "replacemsg_group": { "required": False, "type": "str" } } } } module = AnsibleModule(argument_spec=fields, supports_check_mode=False) # legacy_mode refers to using fortiosapi instead of HTTPAPI legacy_mode = 'host' in module.params and module.params['host'] is not None and \ 'username' in module.params and module.params['username'] is not None and \ 'password' in module.params and module.params['password'] is not None versions_check_result = None if not legacy_mode: if module._socket_path: connection = Connection(module._socket_path) fos = FortiOSHandler(connection) is_error, has_changed, result = fortios_ips(module.params, fos) versions_check_result = connection.get_system_version() else: module.fail_json(**FAIL_SOCKET_MSG) else: try: from fortiosapi import FortiOSAPI except ImportError: module.fail_json(msg="fortiosapi module is required") fos = FortiOSAPI() login(module.params, fos) is_error, has_changed, result = fortios_ips(module.params, fos) fos.logout() if versions_check_result and versions_check_result['matched'] is False: module.warn( "Ansible has detected version mismatch between FortOS system and galaxy, see more details by specifying option -vvv" ) if not is_error: if versions_check_result and versions_check_result['matched'] is False: module.exit_json(changed=has_changed, version_check_warning=versions_check_result, meta=result) else: module.exit_json(changed=has_changed, meta=result) else: if versions_check_result and versions_check_result['matched'] is False: module.fail_json(msg="Error in repo", version_check_warning=versions_check_result, meta=result) else: module.fail_json(msg="Error in repo", meta=result)
def main(): fields = { "host": { "required": False, "type": "str" }, "username": { "required": False, "type": "str" }, "password": { "required": False, "type": "str", "default": "", "no_log": True }, "vdom": { "required": False, "type": "str", "default": "root" }, "https": { "required": False, "type": "bool", "default": True }, "ssl_verify": { "required": False, "type": "bool", "default": True }, "state": { "required": True, "type": "str", "choices": ["present", "absent"] }, "wireless_controller_hotspot20_anqp_nai_realm": { "required": False, "type": "dict", "default": None, "options": { "nai_list": { "required": False, "type": "list", "options": { "eap_method": { "required": False, "type": "list", "options": { "auth_param": { "required": False, "type": "str", "options": { "id": { "required": False, "type": "str", "choices": [ "non-eap-inner-auth", "inner-auth-eap", "credential", "tunneled-credential" ] }, "index": { "required": True, "type": "int" }, "val": { "required": False, "type": "str", "choices": [ "eap-identity", "eap-md5", "eap-tls", "eap-ttls", "eap-peap", "eap-sim", "eap-aka", "eap-aka-prime", "non-eap-pap", "non-eap-chap", "non-eap-mschap", "non-eap-mschapv2", "cred-sim", "cred-usim", "cred-nfc", "cred-hardware-token", "cred-softoken", "cred-certificate", "cred-user-pwd", "cred-none", "cred-vendor-specific", "tun-cred-sim", "tun-cred-usim", "tun-cred-nfc", "tun-cred-hardware-token", "tun-cred-softoken", "tun-cred-certificate", "tun-cred-user-pwd", "tun-cred-anonymous", "tun-cred-vendor-specific" ] } } }, "index": { "required": True, "type": "int" }, "method": { "required": False, "type": "str", "choices": [ "eap-identity", "eap-md5", "eap-tls", "eap-ttls", "eap-peap", "eap-sim", "eap-aka", "eap-aka-prime" ] } } }, "encoding": { "required": False, "type": "str", "choices": ["disable", "enable"] }, "nai_realm": { "required": False, "type": "str" }, "name": { "required": True, "type": "str" } } }, "name": { "required": True, "type": "str" } } } } module = AnsibleModule(argument_spec=fields, supports_check_mode=False) # legacy_mode refers to using fortiosapi instead of HTTPAPI legacy_mode = 'host' in module.params and module.params['host'] is not None and \ 'username' in module.params and module.params['username'] is not None and \ 'password' in module.params and module.params['password'] is not None if not legacy_mode: if module._socket_path: connection = Connection(module._socket_path) fos = FortiOSHandler(connection) is_error, has_changed, result = fortios_wireless_controller_hotspot20( module.params, fos) else: module.fail_json(**FAIL_SOCKET_MSG) else: try: from fortiosapi import FortiOSAPI except ImportError: module.fail_json(msg="fortiosapi module is required") fos = FortiOSAPI() login(module.params, fos) is_error, has_changed, result = fortios_wireless_controller_hotspot20( module.params, fos) fos.logout() if not is_error: module.exit_json(changed=has_changed, meta=result) else: module.fail_json(msg="Error in repo", meta=result)
def main(): fields = { "host": { "required": False, "type": "str" }, "username": { "required": False, "type": "str" }, "password": { "required": False, "type": "str", "default": "", "no_log": True }, "vdom": { "required": False, "type": "str", "default": "root" }, "https": { "required": False, "type": "bool", "default": True }, "ssl_verify": { "required": False, "type": "bool", "default": True }, "log_fortiguard_setting": { "required": False, "type": "dict", "default": None, "options": { "enc_algorithm": { "required": False, "type": "str", "choices": ["high-medium", "high", "low"] }, "source_ip": { "required": False, "type": "str" }, "ssl_min_proto_version": { "required": False, "type": "str", "choices": ["default", "SSLv3", "TLSv1", "TLSv1-1", "TLSv1-2"] }, "status": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "upload_day": { "required": False, "type": "str" }, "upload_interval": { "required": False, "type": "str", "choices": ["daily", "weekly", "monthly"] }, "upload_option": { "required": False, "type": "str", "choices": ["store-and-upload", "realtime", "1-minute", "5-minute"] }, "upload_time": { "required": False, "type": "str" } } } } module = AnsibleModule(argument_spec=fields, supports_check_mode=False) # legacy_mode refers to using fortiosapi instead of HTTPAPI legacy_mode = 'host' in module.params and module.params['host'] is not None and \ 'username' in module.params and module.params['username'] is not None and \ 'password' in module.params and module.params['password'] is not None if not legacy_mode: if module._socket_path: connection = Connection(module._socket_path) fos = FortiOSHandler(connection) is_error, has_changed, result = fortios_log_fortiguard( module.params, fos) else: module.fail_json(**FAIL_SOCKET_MSG) else: try: from fortiosapi import FortiOSAPI except ImportError: module.fail_json(msg="fortiosapi module is required") fos = FortiOSAPI() login(module.params, fos) is_error, has_changed, result = fortios_log_fortiguard( module.params, fos) fos.logout() if not is_error: module.exit_json(changed=has_changed, meta=result) else: module.fail_json(msg="Error in repo", meta=result)
def main(): fields = { "host": {"required": False, "type": "str"}, "username": {"required": False, "type": "str"}, "password": {"required": False, "type": "str", "default": "", "no_log": True}, "vdom": {"required": False, "type": "str", "default": "root"}, "https": {"required": False, "type": "bool", "default": True}, "ssl_verify": {"required": False, "type": "bool", "default": True}, "state": {"required": True, "type": "str", "choices": ["present", "absent"]}, "wanopt_content_delivery_network_rule": { "required": False, "type": "dict", "default": None, "options": { "category": {"required": False, "type": "str", "choices": ["vcache", "youtube"]}, "comment": {"required": False, "type": "str"}, "host_domain_name_suffix": {"required": False, "type": "list", "options": { "name": {"required": True, "type": "str"} }}, "name": {"required": True, "type": "str"}, "request_cache_control": {"required": False, "type": "str", "choices": ["enable", "disable"]}, "response_cache_control": {"required": False, "type": "str", "choices": ["enable", "disable"]}, "response_expires": {"required": False, "type": "str", "choices": ["enable", "disable"]}, "rules": {"required": False, "type": "list", "options": { "content_id": {"required": False, "type": "dict", "options": { "end_direction": {"required": False, "type": "str", "choices": ["forward", "backward"]}, "end_skip": {"required": False, "type": "int"}, "end_str": {"required": False, "type": "str"}, "range_str": {"required": False, "type": "str"}, "start_direction": {"required": False, "type": "str", "choices": ["forward", "backward"]}, "start_skip": {"required": False, "type": "int"}, "start_str": {"required": False, "type": "str"}, "target": {"required": False, "type": "str", "choices": ["path", "parameter", "referrer", "youtube-map", "youtube-id", "youku-id", "hls-manifest", "dash-manifest", "hls-fragment", "dash-fragment"]} }}, "match_entries": {"required": False, "type": "list", "options": { "id": {"required": True, "type": "int"}, "pattern": {"required": False, "type": "list", "options": { "string": {"required": True, "type": "str"} }}, "target": {"required": False, "type": "str", "choices": ["path", "parameter", "referrer", "youtube-map", "youtube-id", "youku-id"]} }}, "match_mode": {"required": False, "type": "str", "choices": ["all", "any"]}, "name": {"required": True, "type": "str"}, "skip_entries": {"required": False, "type": "list", "options": { "id": {"required": True, "type": "int"}, "pattern": {"required": False, "type": "list", "options": { "string": {"required": True, "type": "str"} }}, "target": {"required": False, "type": "str", "choices": ["path", "parameter", "referrer", "youtube-map", "youtube-id", "youku-id"]} }}, "skip_rule_mode": {"required": False, "type": "str", "choices": ["all", "any"]} }}, "status": {"required": False, "type": "str", "choices": ["enable", "disable"]}, "text_response_vcache": {"required": False, "type": "str", "choices": ["enable", "disable"]}, "updateserver": {"required": False, "type": "str", "choices": ["enable", "disable"]} } } } module = AnsibleModule(argument_spec=fields, supports_check_mode=False) # legacy_mode refers to using fortiosapi instead of HTTPAPI legacy_mode = 'host' in module.params and module.params['host'] is not None and \ 'username' in module.params and module.params['username'] is not None and \ 'password' in module.params and module.params['password'] is not None versions_check_result = None if not legacy_mode: if module._socket_path: connection = Connection(module._socket_path) fos = FortiOSHandler(connection) is_error, has_changed, result = fortios_wanopt(module.params, fos) versions_check_result = connection.get_system_version() else: module.fail_json(**FAIL_SOCKET_MSG) else: try: from fortiosapi import FortiOSAPI except ImportError: module.fail_json(msg="fortiosapi module is required") fos = FortiOSAPI() login(module.params, fos) is_error, has_changed, result = fortios_wanopt(module.params, fos) fos.logout() if versions_check_result and versions_check_result['matched'] is False: module.warn("Ansible has detected version mismatch between FortOS system and galaxy, see more details by specifying option -vvv") if not is_error: if versions_check_result and versions_check_result['matched'] is False: module.exit_json(changed=has_changed, version_check_warning=versions_check_result, meta=result) else: module.exit_json(changed=has_changed, meta=result) else: if versions_check_result and versions_check_result['matched'] is False: module.fail_json(msg="Error in repo", version_check_warning=versions_check_result, meta=result) else: module.fail_json(msg="Error in repo", meta=result)
def main(): fields = { "host": {"required": False, "type": "str"}, "username": {"required": False, "type": "str"}, "password": {"required": False, "type": "str", "default": "", "no_log": True}, "vdom": {"required": False, "type": "str", "default": "root"}, "https": {"required": False, "type": "bool", "default": True}, "ssl_verify": {"required": False, "type": "bool", "default": True}, "state": {"required": True, "type": "str", "choices": ["present", "absent"]}, "system_dhcp6_server": { "required": False, "type": "dict", "default": None, "options": { "dns_search_list": {"required": False, "type": "str", "choices": ["delegated", "specify"]}, "dns_server1": {"required": False, "type": "str"}, "dns_server2": {"required": False, "type": "str"}, "dns_server3": {"required": False, "type": "str"}, "dns_service": {"required": False, "type": "str", "choices": ["delegated", "default", "specify"]}, "domain": {"required": False, "type": "str"}, "id": {"required": True, "type": "int"}, "interface": {"required": False, "type": "str"}, "ip_mode": {"required": False, "type": "str", "choices": ["range", "delegated"]}, "ip_range": {"required": False, "type": "list", "options": { "end_ip": {"required": False, "type": "str"}, "id": {"required": True, "type": "int"}, "start_ip": {"required": False, "type": "str"} }}, "lease_time": {"required": False, "type": "int"}, "option1": {"required": False, "type": "str"}, "option2": {"required": False, "type": "str"}, "option3": {"required": False, "type": "str"}, "prefix_range": {"required": False, "type": "list", "options": { "end_prefix": {"required": False, "type": "str"}, "id": {"required": True, "type": "int"}, "prefix_length": {"required": False, "type": "int"}, "start_prefix": {"required": False, "type": "str"} }}, "rapid_commit": {"required": False, "type": "str", "choices": ["disable", "enable"]}, "status": {"required": False, "type": "str", "choices": ["disable", "enable"]}, "subnet": {"required": False, "type": "str"}, "upstream_interface": {"required": False, "type": "str"} } } } module = AnsibleModule(argument_spec=fields, supports_check_mode=False) # legacy_mode refers to using fortiosapi instead of HTTPAPI legacy_mode = 'host' in module.params and module.params['host'] is not None and \ 'username' in module.params and module.params['username'] is not None and \ 'password' in module.params and module.params['password'] is not None versions_check_result = None if not legacy_mode: if module._socket_path: connection = Connection(module._socket_path) fos = FortiOSHandler(connection) is_error, has_changed, result = fortios_system_dhcp6(module.params, fos) versions_check_result = connection.get_system_version() else: module.fail_json(**FAIL_SOCKET_MSG) else: try: from fortiosapi import FortiOSAPI except ImportError: module.fail_json(msg="fortiosapi module is required") fos = FortiOSAPI() login(module.params, fos) is_error, has_changed, result = fortios_system_dhcp6(module.params, fos) fos.logout() if versions_check_result and versions_check_result['matched'] is False: module.warn("Ansible has detected version mismatch between FortOS system and galaxy, see more details by specifying option -vvv") if not is_error: if versions_check_result and versions_check_result['matched'] is False: module.exit_json(changed=has_changed, version_check_warning=versions_check_result, meta=result) else: module.exit_json(changed=has_changed, meta=result) else: if versions_check_result and versions_check_result['matched'] is False: module.fail_json(msg="Error in repo", version_check_warning=versions_check_result, meta=result) else: module.fail_json(msg="Error in repo", meta=result)
def main(): fields = { "host": { "required": False, "type": "str" }, "username": { "required": False, "type": "str" }, "password": { "required": False, "type": "str", "default": "", "no_log": True }, "vdom": { "required": False, "type": "str", "default": "root" }, "https": { "required": False, "type": "bool", "default": True }, "ssl_verify": { "required": False, "type": "bool", "default": True }, "switch_controller_lldp_settings": { "required": False, "type": "dict", "default": None, "options": { "fast_start_interval": { "required": False, "type": "int" }, "management_interface": { "required": False, "type": "str", "choices": ["internal", "mgmt"] }, "status": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "tx_hold": { "required": False, "type": "int" }, "tx_interval": { "required": False, "type": "int" } } } } module = AnsibleModule(argument_spec=fields, supports_check_mode=False) # legacy_mode refers to using fortiosapi instead of HTTPAPI legacy_mode = 'host' in module.params and module.params['host'] is not None and \ 'username' in module.params and module.params['username'] is not None and \ 'password' in module.params and module.params['password'] is not None if not legacy_mode: if module._socket_path: connection = Connection(module._socket_path) fos = FortiOSHandler(connection) is_error, has_changed, result = fortios_switch_controller( module.params, fos) else: module.fail_json(**FAIL_SOCKET_MSG) else: try: from fortiosapi import FortiOSAPI except ImportError: module.fail_json(msg="fortiosapi module is required") fos = FortiOSAPI() login(module.params, fos) is_error, has_changed, result = fortios_switch_controller( module.params, fos) fos.logout() if not is_error: module.exit_json(changed=has_changed, meta=result) else: module.fail_json(msg="Error in repo", meta=result)
def main(): fields = { "host": {"required": False, "type": "str"}, "username": {"required": False, "type": "str"}, "password": {"required": False, "type": "str", "default": "", "no_log": True}, "vdom": {"required": False, "type": "str", "default": "root"}, "https": {"required": False, "type": "bool", "default": True}, "ssl_verify": {"required": False, "type": "bool", "default": True}, "state": {"required": False, "type": "str", "choices": ["present", "absent"]}, "system_admin": { "required": False, "type": "dict", "default": None, "options": { "state": {"required": False, "type": "str", "choices": ["present", "absent"]}, "accprofile": {"required": False, "type": "str"}, "accprofile_override": {"required": False, "type": "str", "choices": ["enable", "disable"]}, "allow_remove_admin_session": {"required": False, "type": "str", "choices": ["enable", "disable"]}, "comments": {"required": False, "type": "str"}, "email_to": {"required": False, "type": "str"}, "force_password_change": {"required": False, "type": "str", "choices": ["enable", "disable"]}, "fortitoken": {"required": False, "type": "str"}, "guest_auth": {"required": False, "type": "str", "choices": ["disable", "enable"]}, "guest_lang": {"required": False, "type": "str"}, "guest_usergroups": {"required": False, "type": "list", "options": { "name": {"required": True, "type": "str"} }}, "gui_dashboard": {"required": False, "type": "list", "options": { "columns": {"required": False, "type": "int"}, "id": {"required": True, "type": "int"}, "layout_type": {"required": False, "type": "str", "choices": ["responsive", "fixed"]}, "name": {"required": False, "type": "str"}, "scope": {"required": False, "type": "str", "choices": ["global", "vdom"]}, "widget": {"required": False, "type": "list", "options": { "fabric_device": {"required": False, "type": "str"}, "fortiview_filters": {"required": False, "type": "list", "options": { "id": {"required": True, "type": "int"}, "key": {"required": False, "type": "str"}, "value": {"required": False, "type": "str"} }}, "fortiview_sort_by": {"required": False, "type": "str"}, "fortiview_timeframe": {"required": False, "type": "str"}, "fortiview_type": {"required": False, "type": "str"}, "fortiview_visualization": {"required": False, "type": "str"}, "height": {"required": False, "type": "int"}, "id": {"required": True, "type": "int"}, "industry": {"required": False, "type": "str", "choices": ["default", "custom"]}, "interface": {"required": False, "type": "str"}, "region": {"required": False, "type": "str", "choices": ["default", "custom"]}, "title": {"required": False, "type": "str"}, "type": {"required": False, "type": "str", "choices": ["sysinfo", "licinfo", "vminfo", "forticloud", "cpu-usage", "memory-usage", "disk-usage", "log-rate", "sessions", "session-rate", "tr-history", "analytics", "usb-modem", "admins", "security-fabric", "security-fabric-ranking", "ha-status", "vulnerability-summary", "host-scan-summary", "fortiview", "botnet-activity", "fortimail"]}, "width": {"required": False, "type": "int"}, "x_pos": {"required": False, "type": "int"}, "y_pos": {"required": False, "type": "int"} }} }}, "gui_global_menu_favorites": {"required": False, "type": "list", "options": { "id": {"required": True, "type": "str"} }}, "gui_vdom_menu_favorites": {"required": False, "type": "list", "options": { "id": {"required": True, "type": "str"} }}, "hidden": {"required": False, "type": "int"}, "history0": {"required": False, "type": "str"}, "history1": {"required": False, "type": "str"}, "ip6_trusthost1": {"required": False, "type": "str"}, "ip6_trusthost10": {"required": False, "type": "str"}, "ip6_trusthost2": {"required": False, "type": "str"}, "ip6_trusthost3": {"required": False, "type": "str"}, "ip6_trusthost4": {"required": False, "type": "str"}, "ip6_trusthost5": {"required": False, "type": "str"}, "ip6_trusthost6": {"required": False, "type": "str"}, "ip6_trusthost7": {"required": False, "type": "str"}, "ip6_trusthost8": {"required": False, "type": "str"}, "ip6_trusthost9": {"required": False, "type": "str"}, "login_time": {"required": False, "type": "list", "options": { "last_failed_login": {"required": False, "type": "str"}, "last_login": {"required": False, "type": "str"}, "usr_name": {"required": False, "type": "str"} }}, "name": {"required": True, "type": "str"}, "password": {"required": False, "type": "str"}, "password_expire": {"required": False, "type": "str"}, "peer_auth": {"required": False, "type": "str", "choices": ["enable", "disable"]}, "peer_group": {"required": False, "type": "str"}, "radius_vdom_override": {"required": False, "type": "str", "choices": ["enable", "disable"]}, "remote_auth": {"required": False, "type": "str", "choices": ["enable", "disable"]}, "remote_group": {"required": False, "type": "str"}, "schedule": {"required": False, "type": "str"}, "sms_custom_server": {"required": False, "type": "str"}, "sms_phone": {"required": False, "type": "str"}, "sms_server": {"required": False, "type": "str", "choices": ["fortiguard", "custom"]}, "ssh_certificate": {"required": False, "type": "str"}, "ssh_public_key1": {"required": False, "type": "str"}, "ssh_public_key2": {"required": False, "type": "str"}, "ssh_public_key3": {"required": False, "type": "str"}, "trusthost1": {"required": False, "type": "str"}, "trusthost10": {"required": False, "type": "str"}, "trusthost2": {"required": False, "type": "str"}, "trusthost3": {"required": False, "type": "str"}, "trusthost4": {"required": False, "type": "str"}, "trusthost5": {"required": False, "type": "str"}, "trusthost6": {"required": False, "type": "str"}, "trusthost7": {"required": False, "type": "str"}, "trusthost8": {"required": False, "type": "str"}, "trusthost9": {"required": False, "type": "str"}, "two_factor": {"required": False, "type": "str", "choices": ["disable", "fortitoken", "email", "sms"]}, "vdom": {"required": False, "type": "list", "options": { "name": {"required": True, "type": "str"} }}, "wildcard": {"required": False, "type": "str", "choices": ["enable", "disable"]} } } } module = AnsibleModule(argument_spec=fields, supports_check_mode=False) # legacy_mode refers to using fortiosapi instead of HTTPAPI legacy_mode = 'host' in module.params and module.params['host'] is not None and \ 'username' in module.params and module.params['username'] is not None and \ 'password' in module.params and module.params['password'] is not None if not legacy_mode: if module._socket_path: connection = Connection(module._socket_path) fos = FortiOSHandler(connection) is_error, has_changed, result = fortios_system(module.params, fos) else: module.fail_json(**FAIL_SOCKET_MSG) else: try: from fortiosapi import FortiOSAPI except ImportError: module.fail_json(msg="fortiosapi module is required") fos = FortiOSAPI() login(module.params, fos) is_error, has_changed, result = fortios_system(module.params, fos) fos.logout() if not is_error: module.exit_json(changed=has_changed, meta=result) else: module.fail_json(msg="Error in repo", meta=result)
def main(): fields = { "host": { "required": False, "type": "str" }, "username": { "required": False, "type": "str" }, "password": { "required": False, "type": "str", "default": "", "no_log": True }, "vdom": { "required": False, "type": "str", "default": "root" }, "https": { "required": False, "type": "bool", "default": True }, "ssl_verify": { "required": False, "type": "bool", "default": True }, "wireless_controller_global": { "required": False, "type": "dict", "default": None, "options": { "ap_log_server": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "ap_log_server_ip": { "required": False, "type": "str" }, "ap_log_server_port": { "required": False, "type": "int" }, "control_message_offload": { "required": False, "type": "str", "choices": [ "ebp-frame", "aeroscout-tag", "ap-list", "sta-list", "sta-cap-list", "stats", "aeroscout-mu" ] }, "data_ethernet_II": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "discovery_mc_addr": { "required": False, "type": "str" }, "fiapp_eth_type": { "required": False, "type": "int" }, "image_download": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "ipsec_base_ip": { "required": False, "type": "str" }, "link_aggregation": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "location": { "required": False, "type": "str" }, "max_clients": { "required": False, "type": "int" }, "max_retransmit": { "required": False, "type": "int" }, "mesh_eth_type": { "required": False, "type": "int" }, "name": { "required": False, "type": "str" }, "rogue_scan_mac_adjacency": { "required": False, "type": "int" }, "wtp_share": { "required": False, "type": "str", "choices": ["enable", "disable"] } } } } module = AnsibleModule(argument_spec=fields, supports_check_mode=False) # legacy_mode refers to using fortiosapi instead of HTTPAPI legacy_mode = 'host' in module.params and module.params['host'] is not None and \ 'username' in module.params and module.params['username'] is not None and \ 'password' in module.params and module.params['password'] is not None if not legacy_mode: if module._socket_path: connection = Connection(module._socket_path) fos = FortiOSHandler(connection) is_error, has_changed, result = fortios_wireless_controller( module.params, fos) else: module.fail_json(**FAIL_SOCKET_MSG) else: try: from fortiosapi import FortiOSAPI except ImportError: module.fail_json(msg="fortiosapi module is required") fos = FortiOSAPI() login(module.params, fos) is_error, has_changed, result = fortios_wireless_controller( module.params, fos) fos.logout() if not is_error: module.exit_json(changed=has_changed, meta=result) else: module.fail_json(msg="Error in repo", meta=result)
def main(): fields = { "host": { "required": False, "type": "str" }, "username": { "required": False, "type": "str" }, "password": { "required": False, "type": "str", "default": "", "no_log": True }, "vdom": { "required": False, "type": "str", "default": "root" }, "https": { "required": False, "type": "bool", "default": True }, "ssl_verify": { "required": False, "type": "bool", "default": True }, "state": { "required": False, "type": "str", "choices": ["present", "absent"] }, "firewall_interface_policy6": { "required": False, "type": "dict", "default": None, "options": { "state": { "required": False, "type": "str", "choices": ["present", "absent"] }, "address_type": { "required": False, "type": "str", "choices": ["ipv4", "ipv6"] }, "application_list": { "required": False, "type": "str" }, "application_list_status": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "av_profile": { "required": False, "type": "str" }, "av_profile_status": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "comments": { "required": False, "type": "str" }, "dlp_sensor": { "required": False, "type": "str" }, "dlp_sensor_status": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "dsri": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "dstaddr6": { "required": False, "type": "list", "options": { "name": { "required": True, "type": "str" } } }, "interface": { "required": False, "type": "str" }, "ips_sensor": { "required": False, "type": "str" }, "ips_sensor_status": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "label": { "required": False, "type": "str" }, "logtraffic": { "required": False, "type": "str", "choices": ["all", "utm", "disable"] }, "policyid": { "required": True, "type": "int" }, "scan_botnet_connections": { "required": False, "type": "str", "choices": ["disable", "block", "monitor"] }, "service6": { "required": False, "type": "list", "options": { "name": { "required": True, "type": "str" } } }, "spamfilter_profile": { "required": False, "type": "str" }, "spamfilter_profile_status": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "srcaddr6": { "required": False, "type": "list", "options": { "name": { "required": True, "type": "str" } } }, "status": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "webfilter_profile": { "required": False, "type": "str" }, "webfilter_profile_status": { "required": False, "type": "str", "choices": ["enable", "disable"] } } } } module = AnsibleModule(argument_spec=fields, supports_check_mode=False) # legacy_mode refers to using fortiosapi instead of HTTPAPI legacy_mode = 'host' in module.params and module.params['host'] is not None and \ 'username' in module.params and module.params['username'] is not None and \ 'password' in module.params and module.params['password'] is not None versions_check_result = None if not legacy_mode: if module._socket_path: connection = Connection(module._socket_path) fos = FortiOSHandler(connection) is_error, has_changed, result = fortios_firewall( module.params, fos) versions_check_result = connection.get_system_version() else: module.fail_json(**FAIL_SOCKET_MSG) else: try: from fortiosapi import FortiOSAPI except ImportError: module.fail_json(msg="fortiosapi module is required") fos = FortiOSAPI() login(module.params, fos) is_error, has_changed, result = fortios_firewall(module.params, fos) fos.logout() if versions_check_result and versions_check_result['matched'] is False: module.warn( "Ansible has detected version mismatch between FortOS system and galaxy, see more details by specifying option -vvv" ) if not is_error: if versions_check_result and versions_check_result['matched'] is False: module.exit_json(changed=has_changed, version_check_warning=versions_check_result, meta=result) else: module.exit_json(changed=has_changed, meta=result) else: if versions_check_result and versions_check_result['matched'] is False: module.fail_json(msg="Error in repo", version_check_warning=versions_check_result, meta=result) else: module.fail_json(msg="Error in repo", meta=result)
def main(): fields = { "host": { "required": False, "type": "str" }, "username": { "required": False, "type": "str" }, "password": { "required": False, "type": "str", "default": "", "no_log": True }, "vdom": { "required": False, "type": "str", "default": "root" }, "https": { "required": False, "type": "bool", "default": True }, "ssl_verify": { "required": False, "type": "bool", "default": True }, "alertemail_setting": { "required": False, "type": "dict", "default": None, "options": { "admin_login_logs": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "alert_interval": { "required": False, "type": "int" }, "amc_interface_bypass_mode": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "antivirus_logs": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "configuration_changes_logs": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "critical_interval": { "required": False, "type": "int" }, "debug_interval": { "required": False, "type": "int" }, "email_interval": { "required": False, "type": "int" }, "emergency_interval": { "required": False, "type": "int" }, "error_interval": { "required": False, "type": "int" }, "FDS_license_expiring_days": { "required": False, "type": "int" }, "FDS_license_expiring_warning": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "FDS_update_logs": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "filter_mode": { "required": False, "type": "str", "choices": ["category", "threshold"] }, "FIPS_CC_errors": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "firewall_authentication_failure_logs": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "fortiguard_log_quota_warning": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "FSSO_disconnect_logs": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "HA_logs": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "information_interval": { "required": False, "type": "int" }, "IPS_logs": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "IPsec_errors_logs": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "local_disk_usage": { "required": False, "type": "int" }, "log_disk_usage_warning": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "mailto1": { "required": False, "type": "str" }, "mailto2": { "required": False, "type": "str" }, "mailto3": { "required": False, "type": "str" }, "notification_interval": { "required": False, "type": "int" }, "PPP_errors_logs": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "severity": { "required": False, "type": "str", "choices": [ "emergency", "alert", "critical", "error", "warning", "notification", "information", "debug" ] }, "ssh_logs": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "sslvpn_authentication_errors_logs": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "username": { "required": False, "type": "str" }, "violation_traffic_logs": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "warning_interval": { "required": False, "type": "int" }, "webfilter_logs": { "required": False, "type": "str", "choices": ["enable", "disable"] } } } } module = AnsibleModule(argument_spec=fields, supports_check_mode=False) # legacy_mode refers to using fortiosapi instead of HTTPAPI legacy_mode = 'host' in module.params and module.params['host'] is not None and \ 'username' in module.params and module.params['username'] is not None and \ 'password' in module.params and module.params['password'] is not None versions_check_result = None if not legacy_mode: if module._socket_path: connection = Connection(module._socket_path) fos = FortiOSHandler(connection) is_error, has_changed, result = fortios_alertemail( module.params, fos) versions_check_result = connection.get_system_version() else: module.fail_json(**FAIL_SOCKET_MSG) else: try: from fortiosapi import FortiOSAPI except ImportError: module.fail_json(msg="fortiosapi module is required") fos = FortiOSAPI() login(module.params, fos) is_error, has_changed, result = fortios_alertemail(module.params, fos) fos.logout() if versions_check_result and versions_check_result['matched'] is False: module.warn( "Ansible has detected version mismatch between FortOS system and galaxy, see more details by specifying option -vvv" ) if not is_error: if versions_check_result and versions_check_result['matched'] is False: module.exit_json(changed=has_changed, version_check_warning=versions_check_result, meta=result) else: module.exit_json(changed=has_changed, meta=result) else: if versions_check_result and versions_check_result['matched'] is False: module.fail_json(msg="Error in repo", version_check_warning=versions_check_result, meta=result) else: module.fail_json(msg="Error in repo", meta=result)
def main(): fields = { "host": { "required": False, "type": "str" }, "username": { "required": False, "type": "str" }, "password": { "required": False, "type": "str", "default": "", "no_log": True }, "vdom": { "required": False, "type": "str", "default": "root" }, "https": { "required": False, "type": "bool", "default": True }, "ssl_verify": { "required": False, "type": "bool", "default": True }, "state": { "required": False, "type": "str", "choices": ["present", "absent"] }, "firewall_policy46": { "required": False, "type": "dict", "default": None, "options": { "state": { "required": False, "type": "str", "choices": ["present", "absent"] }, "action": { "required": False, "type": "str", "choices": ["accept", "deny"] }, "comments": { "required": False, "type": "str" }, "dstaddr": { "required": False, "type": "list", "options": { "name": { "required": True, "type": "str" } } }, "dstintf": { "required": False, "type": "str" }, "fixedport": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "ippool": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "logtraffic": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "per_ip_shaper": { "required": False, "type": "str" }, "permit_any_host": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "policyid": { "required": True, "type": "int" }, "poolname": { "required": False, "type": "list", "options": { "name": { "required": True, "type": "str" } } }, "schedule": { "required": False, "type": "str" }, "service": { "required": False, "type": "list", "options": { "name": { "required": True, "type": "str" } } }, "srcaddr": { "required": False, "type": "list", "options": { "name": { "required": True, "type": "str" } } }, "srcintf": { "required": False, "type": "str" }, "status": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "tcp_mss_receiver": { "required": False, "type": "int" }, "tcp_mss_sender": { "required": False, "type": "int" }, "traffic_shaper": { "required": False, "type": "str" }, "traffic_shaper_reverse": { "required": False, "type": "str" }, "uuid": { "required": False, "type": "str" } } } } module = AnsibleModule(argument_spec=fields, supports_check_mode=False) # legacy_mode refers to using fortiosapi instead of HTTPAPI legacy_mode = 'host' in module.params and module.params['host'] is not None and \ 'username' in module.params and module.params['username'] is not None and \ 'password' in module.params and module.params['password'] is not None versions_check_result = None if not legacy_mode: if module._socket_path: connection = Connection(module._socket_path) fos = FortiOSHandler(connection) is_error, has_changed, result = fortios_firewall( module.params, fos) versions_check_result = connection.get_system_version() else: module.fail_json(**FAIL_SOCKET_MSG) else: try: from fortiosapi import FortiOSAPI except ImportError: module.fail_json(msg="fortiosapi module is required") fos = FortiOSAPI() login(module.params, fos) is_error, has_changed, result = fortios_firewall(module.params, fos) fos.logout() if versions_check_result and versions_check_result['matched'] is False: module.warn( "Ansible has detected version mismatch between FortOS system and galaxy, see more details by specifying option -vvv" ) if not is_error: if versions_check_result and versions_check_result['matched'] is False: module.exit_json(changed=has_changed, version_check_warning=versions_check_result, meta=result) else: module.exit_json(changed=has_changed, meta=result) else: if versions_check_result and versions_check_result['matched'] is False: module.fail_json(msg="Error in repo", version_check_warning=versions_check_result, meta=result) else: module.fail_json(msg="Error in repo", meta=result)
def main(): fields = { "host": { "required": False, "type": "str" }, "username": { "required": False, "type": "str" }, "password": { "required": False, "type": "str", "default": "", "no_log": True }, "vdom": { "required": False, "type": "str", "default": "root" }, "https": { "required": False, "type": "bool", "default": True }, "ssl_verify": { "required": False, "type": "bool", "default": True }, "system_autoupdate_schedule": { "required": False, "type": "dict", "default": None, "options": { "day": { "required": False, "type": "str", "choices": [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ] }, "frequency": { "required": False, "type": "str", "choices": ["every", "daily", "weekly"] }, "status": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "time": { "required": False, "type": "str" } } } } module = AnsibleModule(argument_spec=fields, supports_check_mode=False) # legacy_mode refers to using fortiosapi instead of HTTPAPI legacy_mode = 'host' in module.params and module.params['host'] is not None and \ 'username' in module.params and module.params['username'] is not None and \ 'password' in module.params and module.params['password'] is not None if not legacy_mode: if module._socket_path: connection = Connection(module._socket_path) fos = FortiOSHandler(connection) is_error, has_changed, result = fortios_system_autoupdate( module.params, fos) else: module.fail_json(**FAIL_SOCKET_MSG) else: try: from fortiosapi import FortiOSAPI except ImportError: module.fail_json(msg="fortiosapi module is required") fos = FortiOSAPI() login(module.params, fos) is_error, has_changed, result = fortios_system_autoupdate( module.params, fos) fos.logout() if not is_error: module.exit_json(changed=has_changed, meta=result) else: module.fail_json(msg="Error in repo", meta=result)
def main(): fields = { "host": { "required": False, "type": "str" }, "username": { "required": False, "type": "str" }, "password": { "required": False, "type": "str", "default": "", "no_log": True }, "vdom": { "required": False, "type": "str", "default": "root" }, "https": { "required": False, "type": "bool", "default": True }, "ssl_verify": { "required": False, "type": "bool", "default": True }, "system_central_management": { "required": False, "type": "dict", "default": None, "options": { "allow_monitor": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "allow_push_configuration": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "allow_push_firmware": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "allow_remote_firmware_upgrade": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "enc_algorithm": { "required": False, "type": "str", "choices": ["default", "high", "low"] }, "fmg": { "required": False, "type": "str" }, "fmg_source_ip": { "required": False, "type": "str" }, "fmg_source_ip6": { "required": False, "type": "str" }, "include_default_servers": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "mode": { "required": False, "type": "str", "choices": ["normal", "backup"] }, "schedule_config_restore": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "schedule_script_restore": { "required": False, "type": "str", "choices": ["enable", "disable"] }, "serial_number": { "required": False, "type": "str" }, "server_list": { "required": False, "type": "list", "options": { "addr_type": { "required": False, "type": "str", "choices": ["ipv4", "ipv6", "fqdn"] }, "fqdn": { "required": False, "type": "str" }, "id": { "required": True, "type": "int" }, "server_address": { "required": False, "type": "str" }, "server_address6": { "required": False, "type": "str" }, "server_type": { "required": False, "type": "str", "choices": ["update", "rating"] } } }, "type": { "required": False, "type": "str", "choices": ["fortimanager", "fortiguard", "none"] }, "vdom": { "required": False, "type": "str" } } } } module = AnsibleModule(argument_spec=fields, supports_check_mode=False) # legacy_mode refers to using fortiosapi instead of HTTPAPI legacy_mode = 'host' in module.params and module.params['host'] is not None and \ 'username' in module.params and module.params['username'] is not None and \ 'password' in module.params and module.params['password'] is not None if not legacy_mode: if module._socket_path: connection = Connection(module._socket_path) fos = FortiOSHandler(connection) is_error, has_changed, result = fortios_system(module.params, fos) else: module.fail_json(**FAIL_SOCKET_MSG) else: try: from fortiosapi import FortiOSAPI except ImportError: module.fail_json(msg="fortiosapi module is required") fos = FortiOSAPI() login(module.params, fos) is_error, has_changed, result = fortios_system(module.params, fos) fos.logout() if not is_error: module.exit_json(changed=has_changed, meta=result) else: module.fail_json(msg="Error in repo", meta=result)
def main(): fields = { "host": {"required": False, "type": "str"}, "username": {"required": False, "type": "str"}, "password": {"required": False, "type": "str", "default": "", "no_log": True}, "vdom": {"required": False, "type": "str", "default": "root"}, "https": {"required": False, "type": "bool", "default": True}, "ssl_verify": {"required": False, "type": "bool", "default": True}, "state": {"required": False, "type": "str", "choices": ["present", "absent"]}, "report_layout": { "required": False, "type": "dict", "default": None, "options": { "state": {"required": False, "type": "str", "choices": ["present", "absent"]}, "body_item": {"required": False, "type": "list", "options": { "chart": {"required": False, "type": "str"}, "chart_options": {"required": False, "type": "str", "choices": ["include-no-data", "hide-title", "show-caption"]}, "column": {"required": False, "type": "int"}, "content": {"required": False, "type": "str"}, "description": {"required": False, "type": "str"}, "drill_down_items": {"required": False, "type": "str"}, "drill_down_types": {"required": False, "type": "str"}, "hide": {"required": False, "type": "str", "choices": ["enable", "disable"]}, "id": {"required": True, "type": "int"}, "img_src": {"required": False, "type": "str"}, "list": {"required": False, "type": "list", "options": { "content": {"required": False, "type": "str"}, "id": {"required": True, "type": "int"} }}, "list_component": {"required": False, "type": "str", "choices": ["bullet", "numbered"]}, "misc_component": {"required": False, "type": "str", "choices": ["hline", "page-break", "column-break", "section-start"]}, "parameters": {"required": False, "type": "list", "options": { "id": {"required": True, "type": "int"}, "name": {"required": False, "type": "str"}, "value": {"required": False, "type": "str"} }}, "style": {"required": False, "type": "str"}, "table_caption_style": {"required": False, "type": "str"}, "table_column_widths": {"required": False, "type": "str"}, "table_even_row_style": {"required": False, "type": "str"}, "table_head_style": {"required": False, "type": "str"}, "table_odd_row_style": {"required": False, "type": "str"}, "text_component": {"required": False, "type": "str", "choices": ["text", "heading1", "heading2", "heading3"]}, "title": {"required": False, "type": "str"}, "top_n": {"required": False, "type": "int"}, "type": {"required": False, "type": "str", "choices": ["text", "image", "chart", "misc"]} }}, "cutoff_option": {"required": False, "type": "str", "choices": ["run-time", "custom"]}, "cutoff_time": {"required": False, "type": "str"}, "day": {"required": False, "type": "str", "choices": ["sunday", "monday", "tuesday", "wednesday", "thursday", "friday", "saturday"]}, "description": {"required": False, "type": "str"}, "email_recipients": {"required": False, "type": "str"}, "email_send": {"required": False, "type": "str", "choices": ["enable", "disable"]}, "format": {"required": False, "type": "str", "choices": ["pdf"]}, "max_pdf_report": {"required": False, "type": "int"}, "name": {"required": True, "type": "str"}, "options": {"required": False, "type": "str", "choices": ["include-table-of-content", "auto-numbering-heading", "view-chart-as-heading", "show-html-navbar-before-heading", "dummy-option"]}, "page": {"required": False, "type": "dict", "options": { "column_break_before": {"required": False, "type": "str", "choices": ["heading1", "heading2", "heading3"]}, "footer": {"required": False, "type": "dict", "options": { "footer_item": {"required": False, "type": "list", "options": { "content": {"required": False, "type": "str"}, "description": {"required": False, "type": "str"}, "id": {"required": True, "type": "int"}, "img_src": {"required": False, "type": "str"}, "style": {"required": False, "type": "str"}, "type": {"required": False, "type": "str", "choices": ["text", "image"]} }}, "style": {"required": False, "type": "str"} }}, "header": {"required": False, "type": "dict", "options": { "header_item": {"required": False, "type": "list", "options": { "content": {"required": False, "type": "str"}, "description": {"required": False, "type": "str"}, "id": {"required": True, "type": "int"}, "img_src": {"required": False, "type": "str"}, "style": {"required": False, "type": "str"}, "type": {"required": False, "type": "str", "choices": ["text", "image"]} }}, "style": {"required": False, "type": "str"} }}, "options": {"required": False, "type": "str", "choices": ["header-on-first-page", "footer-on-first-page"]}, "page_break_before": {"required": False, "type": "str", "choices": ["heading1", "heading2", "heading3"]}, "paper": {"required": False, "type": "str", "choices": ["a4", "letter"]} }}, "schedule_type": {"required": False, "type": "str", "choices": ["demand", "daily", "weekly"]}, "style_theme": {"required": False, "type": "str"}, "subtitle": {"required": False, "type": "str"}, "time": {"required": False, "type": "str"}, "title": {"required": False, "type": "str"} } } } module = AnsibleModule(argument_spec=fields, supports_check_mode=False) # legacy_mode refers to using fortiosapi instead of HTTPAPI legacy_mode = 'host' in module.params and module.params['host'] is not None and \ 'username' in module.params and module.params['username'] is not None and \ 'password' in module.params and module.params['password'] is not None versions_check_result = None if not legacy_mode: if module._socket_path: connection = Connection(module._socket_path) fos = FortiOSHandler(connection) is_error, has_changed, result = fortios_report(module.params, fos) versions_check_result = connection.get_system_version() else: module.fail_json(**FAIL_SOCKET_MSG) else: try: from fortiosapi import FortiOSAPI except ImportError: module.fail_json(msg="fortiosapi module is required") fos = FortiOSAPI() login(module.params, fos) is_error, has_changed, result = fortios_report(module.params, fos) fos.logout() if versions_check_result and versions_check_result['matched'] is False: module.warn("Ansible has detected version mismatch between FortOS system and galaxy, see more details by specifying option -vvv") if not is_error: if versions_check_result and versions_check_result['matched'] is False: module.exit_json(changed=has_changed, version_check_warning=versions_check_result, meta=result) else: module.exit_json(changed=has_changed, meta=result) else: if versions_check_result and versions_check_result['matched'] is False: module.fail_json(msg="Error in repo", version_check_warning=versions_check_result, meta=result) else: module.fail_json(msg="Error in repo", meta=result)
def main(): fields = { "host": { "required": False, "type": "str" }, "username": { "required": False, "type": "str" }, "password": { "required": False, "type": "str", "default": "", "no_log": True }, "vdom": { "required": False, "type": "str", "default": "root" }, "https": { "required": False, "type": "bool", "default": True }, "ssl_verify": { "required": False, "type": "bool", "default": True }, "state": { "required": True, "type": "str", "choices": ["present", "absent"] }, "system_replacemsg_nntp": { "required": False, "type": "dict", "default": None, "options": { "buffer": { "required": False, "type": "str" }, "format": { "required": False, "type": "str", "choices": ["none", "text", "html", "wml"] }, "header": { "required": False, "type": "str", "choices": ["none", "http", "8bit"] }, "msg_type": { "required": False, "type": "str" } } } } module = AnsibleModule(argument_spec=fields, supports_check_mode=False) # legacy_mode refers to using fortiosapi instead of HTTPAPI legacy_mode = 'host' in module.params and module.params['host'] is not None and \ 'username' in module.params and module.params['username'] is not None and \ 'password' in module.params and module.params['password'] is not None if not legacy_mode: if module._socket_path: connection = Connection(module._socket_path) fos = FortiOSHandler(connection) is_error, has_changed, result = fortios_system_replacemsg( module.params, fos) else: module.fail_json(**FAIL_SOCKET_MSG) else: try: from fortiosapi import FortiOSAPI except ImportError: module.fail_json(msg="fortiosapi module is required") fos = FortiOSAPI() login(module.params, fos) is_error, has_changed, result = fortios_system_replacemsg( module.params, fos) fos.logout() if not is_error: module.exit_json(changed=has_changed, meta=result) else: module.fail_json(msg="Error in repo", meta=result)
def main(): fields = { "host": {"required": False, "type": "str"}, "username": {"required": False, "type": "str"}, "password": {"required": False, "type": "str", "default": "", "no_log": True}, "vdom": {"required": False, "type": "str", "default": "root"}, "https": {"required": False, "type": "bool", "default": True}, "ssl_verify": {"required": False, "type": "bool", "default": True}, "router_ospf": { "required": False, "type": "dict", "default": None, "options": { "abr_type": {"required": False, "type": "str", "choices": ["cisco", "ibm", "shortcut", "standard"]}, "area": {"required": False, "type": "list", "options": { "authentication": {"required": False, "type": "str", "choices": ["none", "text", "md5"]}, "default_cost": {"required": False, "type": "int"}, "filter_list": {"required": False, "type": "list", "options": { "direction": {"required": False, "type": "str", "choices": ["in", "out"]}, "id": {"required": True, "type": "int"}, "list": {"required": False, "type": "str"} }}, "id": {"required": True, "type": "str"}, "nssa_default_information_originate": {"required": False, "type": "str", "choices": ["enable", "always", "disable"]}, "nssa_default_information_originate_metric": {"required": False, "type": "int"}, "nssa_default_information_originate_metric_type": {"required": False, "type": "str", "choices": ["1", "2"]}, "nssa_redistribution": {"required": False, "type": "str", "choices": ["enable", "disable"]}, "nssa_translator_role": {"required": False, "type": "str", "choices": ["candidate", "never", "always"]}, "range": {"required": False, "type": "list", "options": { "advertise": {"required": False, "type": "str", "choices": ["disable", "enable"]}, "id": {"required": True, "type": "int"}, "prefix": {"required": False, "type": "str"}, "substitute": {"required": False, "type": "str"}, "substitute_status": {"required": False, "type": "str", "choices": ["enable", "disable"]} }}, "shortcut": {"required": False, "type": "str", "choices": ["disable", "enable", "default"]}, "stub_type": {"required": False, "type": "str", "choices": ["no-summary", "summary"]}, "type": {"required": False, "type": "str", "choices": ["regular", "nssa", "stub"]}, "virtual_link": {"required": False, "type": "list", "options": { "authentication": {"required": False, "type": "str", "choices": ["none", "text", "md5"]}, "authentication_key": {"required": False, "type": "str"}, "dead_interval": {"required": False, "type": "int"}, "hello_interval": {"required": False, "type": "int"}, "md5_key": {"required": False, "type": "str"}, "name": {"required": True, "type": "str"}, "peer": {"required": False, "type": "str"}, "retransmit_interval": {"required": False, "type": "int"}, "transmit_delay": {"required": False, "type": "int"} }} }}, "auto_cost_ref_bandwidth": {"required": False, "type": "int"}, "bfd": {"required": False, "type": "str", "choices": ["enable", "disable"]}, "database_overflow": {"required": False, "type": "str", "choices": ["enable", "disable"]}, "database_overflow_max_lsas": {"required": False, "type": "int"}, "database_overflow_time_to_recover": {"required": False, "type": "int"}, "default_information_metric": {"required": False, "type": "int"}, "default_information_metric_type": {"required": False, "type": "str", "choices": ["1", "2"]}, "default_information_originate": {"required": False, "type": "str", "choices": ["enable", "always", "disable"]}, "default_information_route_map": {"required": False, "type": "str"}, "default_metric": {"required": False, "type": "int"}, "distance": {"required": False, "type": "int"}, "distance_external": {"required": False, "type": "int"}, "distance_inter_area": {"required": False, "type": "int"}, "distance_intra_area": {"required": False, "type": "int"}, "distribute_list": {"required": False, "type": "list", "options": { "access_list": {"required": False, "type": "str"}, "id": {"required": True, "type": "int"}, "protocol": {"required": False, "type": "str", "choices": ["connected", "static", "rip"]} }}, "distribute_list_in": {"required": False, "type": "str"}, "distribute_route_map_in": {"required": False, "type": "str"}, "log_neighbour_changes": {"required": False, "type": "str", "choices": ["enable", "disable"]}, "neighbor": {"required": False, "type": "list", "options": { "cost": {"required": False, "type": "int"}, "id": {"required": True, "type": "int"}, "ip": {"required": False, "type": "str"}, "poll_interval": {"required": False, "type": "int"}, "priority": {"required": False, "type": "int"} }}, "network": {"required": False, "type": "list", "options": { "area": {"required": False, "type": "str"}, "id": {"required": True, "type": "int"}, "prefix": {"required": False, "type": "str"} }}, "ospf_interface": {"required": False, "type": "list", "options": { "authentication": {"required": False, "type": "str", "choices": ["none", "text", "md5"]}, "authentication_key": {"required": False, "type": "str"}, "bfd": {"required": False, "type": "str", "choices": ["global", "enable", "disable"]}, "cost": {"required": False, "type": "int"}, "database_filter_out": {"required": False, "type": "str", "choices": ["enable", "disable"]}, "dead_interval": {"required": False, "type": "int"}, "hello_interval": {"required": False, "type": "int"}, "hello_multiplier": {"required": False, "type": "int"}, "interface": {"required": False, "type": "str"}, "ip": {"required": False, "type": "str"}, "md5_key": {"required": False, "type": "str"}, "mtu": {"required": False, "type": "int"}, "mtu_ignore": {"required": False, "type": "str", "choices": ["enable", "disable"]}, "name": {"required": True, "type": "str"}, "network_type": {"required": False, "type": "str", "choices": ["broadcast", "non-broadcast", "point-to-point", "point-to-multipoint", "point-to-multipoint-non-broadcast"]}, "prefix_length": {"required": False, "type": "int"}, "priority": {"required": False, "type": "int"}, "resync_timeout": {"required": False, "type": "int"}, "retransmit_interval": {"required": False, "type": "int"}, "status": {"required": False, "type": "str", "choices": ["disable", "enable"]}, "transmit_delay": {"required": False, "type": "int"} }}, "passive_interface": {"required": False, "type": "list", "options": { "name": {"required": True, "type": "str"} }}, "redistribute": {"required": False, "type": "list", "options": { "metric": {"required": False, "type": "int"}, "metric_type": {"required": False, "type": "str", "choices": ["1", "2"]}, "name": {"required": True, "type": "str"}, "routemap": {"required": False, "type": "str"}, "status": {"required": False, "type": "str", "choices": ["enable", "disable"]}, "tag": {"required": False, "type": "int"} }}, "restart_mode": {"required": False, "type": "str", "choices": ["none", "lls", "graceful-restart"]}, "restart_period": {"required": False, "type": "int"}, "rfc1583_compatible": {"required": False, "type": "str", "choices": ["enable", "disable"]}, "router_id": {"required": False, "type": "str"}, "spf_timers": {"required": False, "type": "str"}, "summary_address": {"required": False, "type": "list", "options": { "advertise": {"required": False, "type": "str", "choices": ["disable", "enable"]}, "id": {"required": True, "type": "int"}, "prefix": {"required": False, "type": "str"}, "tag": {"required": False, "type": "int"} }} } } } module = AnsibleModule(argument_spec=fields, supports_check_mode=False) # legacy_mode refers to using fortiosapi instead of HTTPAPI legacy_mode = 'host' in module.params and module.params['host'] is not None and \ 'username' in module.params and module.params['username'] is not None and \ 'password' in module.params and module.params['password'] is not None if not legacy_mode: if module._socket_path: connection = Connection(module._socket_path) fos = FortiOSHandler(connection) is_error, has_changed, result = fortios_router(module.params, fos) else: module.fail_json(**FAIL_SOCKET_MSG) else: try: from fortiosapi import FortiOSAPI except ImportError: module.fail_json(msg="fortiosapi module is required") fos = FortiOSAPI() login(module.params, fos) is_error, has_changed, result = fortios_router(module.params, fos) fos.logout() if not is_error: module.exit_json(changed=has_changed, meta=result) else: module.fail_json(msg="Error in repo", meta=result)