|
|
|
# Test code for the Meraki Organization module
|
|
|
|
# Copyright: (c) 2018, Kevin Breit (@kbreit)
|
|
|
|
|
|
|
|
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
|
|
|
---
|
|
|
|
- block:
|
|
|
|
- name: Test an API key is provided
|
|
|
|
fail:
|
|
|
|
msg: Please define an API key
|
|
|
|
when: auth_key is not defined
|
|
|
|
|
|
|
|
- name: Create SNMP network
|
|
|
|
meraki_network:
|
|
|
|
auth_key: '{{auth_key}}'
|
|
|
|
org_name: '{{test_org_name}}'
|
|
|
|
net_name: '{{test_net_name}}'
|
|
|
|
state: present
|
|
|
|
type: appliance
|
|
|
|
delegate_to: localhost
|
|
|
|
register: new_net
|
|
|
|
|
|
|
|
- set_fact:
|
|
|
|
net_id: new_net.data.id
|
|
|
|
|
|
|
|
- name: Query all SNMP settings
|
|
|
|
meraki_snmp:
|
|
|
|
auth_key: '{{auth_key}}'
|
|
|
|
org_name: '{{test_org_name}}'
|
|
|
|
state: query
|
|
|
|
delegate_to: localhost
|
|
|
|
register: snmp_query
|
|
|
|
|
|
|
|
- debug:
|
|
|
|
msg: '{{snmp_query}}'
|
|
|
|
|
|
|
|
- name: Enable SNMPv2c
|
|
|
|
meraki_snmp:
|
|
|
|
auth_key: '{{auth_key}}'
|
|
|
|
org_name: '{{test_org_name}}'
|
|
|
|
state: present
|
|
|
|
v2c_enabled: true
|
|
|
|
delegate_to: localhost
|
|
|
|
register: snmp_v2_enable
|
|
|
|
|
|
|
|
- debug:
|
|
|
|
msg: '{{snmp_v2_enable}}'
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- snmp_v2_enable.data.v2_community_string is defined
|
|
|
|
- snmp_v2_enable.data.v2c_enabled == true
|
|
|
|
|
|
|
|
- name: Disable SNMPv2c
|
|
|
|
meraki_snmp:
|
|
|
|
auth_key: '{{auth_key}}'
|
|
|
|
org_name: '{{test_org_name}}'
|
|
|
|
state: present
|
|
|
|
v2c_enabled: False
|
|
|
|
delegate_to: localhost
|
|
|
|
register: snmp_v2_disable
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- snmp_v2_disable.data.v2_community_string is not defined
|
|
|
|
- snmp_v2_disable.data.v2c_enabled == False
|
|
|
|
|
|
|
|
- name: Enable SNMPv2c with org_id
|
|
|
|
meraki_snmp:
|
|
|
|
auth_key: '{{auth_key}}'
|
|
|
|
org_id: '{{test_org_id}}'
|
|
|
|
state: present
|
|
|
|
v2c_enabled: true
|
|
|
|
delegate_to: localhost
|
|
|
|
register: snmp_v2_enable_id
|
|
|
|
|
|
|
|
- debug:
|
|
|
|
msg: '{{snmp_v2_enable_id}}'
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- snmp_v2_enable_id.data.v2_community_string is defined
|
|
|
|
- snmp_v2_enable_id.data.v2c_enabled == true
|
|
|
|
|
|
|
|
- name: Disable SNMPv2c with org_id
|
|
|
|
meraki_snmp:
|
|
|
|
auth_key: '{{auth_key}}'
|
|
|
|
org_id: '{{test_org_id}}'
|
|
|
|
state: present
|
|
|
|
v2c_enabled: False
|
|
|
|
delegate_to: localhost
|
|
|
|
register: snmp_v2_disable_id
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- snmp_v2_disable_id.data.v2_community_string is not defined
|
|
|
|
- snmp_v2_disable_id.data.v2c_enabled == False
|
|
|
|
|
|
|
|
- name: Enable SNMPv3 with check mode
|
|
|
|
meraki_snmp:
|
|
|
|
auth_key: '{{auth_key}}'
|
|
|
|
org_name: '{{test_org_name}}'
|
|
|
|
state: present
|
|
|
|
v3_enabled: true
|
|
|
|
v3_auth_mode: SHA
|
|
|
|
v3_auth_pass: ansiblepass
|
|
|
|
v3_priv_mode: AES128
|
|
|
|
v3_priv_pass: ansiblepass
|
|
|
|
delegate_to: localhost
|
|
|
|
check_mode: yes
|
|
|
|
register: snmp_v3_enable_check
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- snmp_v3_enable_check.data.v3_enabled == True
|
|
|
|
- snmp_v3_enable_check.changed == True
|
|
|
|
|
|
|
|
- name: Enable SNMPv3
|
|
|
|
meraki_snmp:
|
|
|
|
auth_key: '{{auth_key}}'
|
|
|
|
org_name: '{{test_org_name}}'
|
|
|
|
state: present
|
|
|
|
v3_enabled: true
|
|
|
|
v3_auth_mode: SHA
|
|
|
|
v3_auth_pass: ansiblepass
|
|
|
|
v3_priv_mode: AES128
|
|
|
|
v3_priv_pass: ansiblepass
|
|
|
|
delegate_to: localhost
|
|
|
|
register: snmp_v3_enable
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- snmp_v3_enable.data.v3_enabled == True
|
|
|
|
- snmp_v3_enable.changed == True
|
|
|
|
|
|
|
|
- name: Check for idempotency
|
|
|
|
meraki_snmp:
|
|
|
|
auth_key: '{{auth_key}}'
|
|
|
|
org_name: '{{test_org_name}}'
|
|
|
|
state: present
|
|
|
|
v3_enabled: true
|
|
|
|
v3_auth_mode: SHA
|
|
|
|
v3_auth_pass: ansiblepass
|
|
|
|
v3_priv_mode: AES128
|
|
|
|
v3_priv_pass: ansiblepass
|
|
|
|
delegate_to: localhost
|
|
|
|
register: snmp_idempotent
|
|
|
|
|
|
|
|
- debug:
|
|
|
|
msg: '{{snmp_idempotent}}'
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- snmp_idempotent.changed == False
|
|
|
|
- snmp_idempotent.data is defined
|
|
|
|
|
|
|
|
- name: Add peer IPs
|
|
|
|
meraki_snmp:
|
|
|
|
auth_key: '{{auth_key}}'
|
|
|
|
org_name: '{{test_org_name}}'
|
|
|
|
state: present
|
|
|
|
v3_enabled: true
|
|
|
|
v3_auth_mode: SHA
|
|
|
|
v3_auth_pass: ansiblepass
|
|
|
|
v3_priv_mode: AES128
|
|
|
|
v3_priv_pass: ansiblepass
|
|
|
|
peer_ips: 1.1.1.1;2.2.2.2
|
|
|
|
delegate_to: localhost
|
|
|
|
register: peers
|
|
|
|
|
|
|
|
- debug:
|
|
|
|
msg: '{{peers}}'
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- peers.data.peer_ips is defined
|
|
|
|
|
|
|
|
- name: Add invalid peer IPs
|
|
|
|
meraki_snmp:
|
|
|
|
auth_key: '{{auth_key}}'
|
|
|
|
org_name: '{{test_org_name}}'
|
|
|
|
state: present
|
|
|
|
peer_ips: 1.1.1.1 2.2.2.2
|
|
|
|
delegate_to: localhost
|
|
|
|
register: invalid_peers
|
|
|
|
ignore_errors: yes
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
'"Peer IP addresses are semi-colon delimited." in invalid_peers.msg'
|
|
|
|
|
|
|
|
- name: Set short password
|
|
|
|
meraki_snmp:
|
|
|
|
auth_key: '{{auth_key}}'
|
|
|
|
org_name: '{{test_org_name}}'
|
|
|
|
state: present
|
|
|
|
v3_enabled: true
|
|
|
|
v3_auth_mode: SHA
|
|
|
|
v3_auth_pass: ansible
|
|
|
|
v3_priv_mode: AES128
|
|
|
|
v3_priv_pass: ansible
|
|
|
|
peer_ips: 1.1.1.1;2.2.2.2
|
|
|
|
delegate_to: localhost
|
|
|
|
register: short_password
|
|
|
|
ignore_errors: yes
|
|
|
|
|
|
|
|
- debug:
|
|
|
|
msg: '{{short_password}}'
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- '"at least 8" in short_password.msg'
|
|
|
|
|
|
|
|
- name: Set network access type to community string
|
|
|
|
meraki_snmp:
|
|
|
|
auth_key: '{{auth_key}}'
|
|
|
|
org_name: '{{test_org_name}}'
|
|
|
|
net_name: '{{test_net_name}}'
|
|
|
|
state: present
|
|
|
|
access: community
|
|
|
|
community_string: abc123
|
|
|
|
delegate_to: localhost
|
|
|
|
register: set_net_community
|
|
|
|
|
|
|
|
- debug:
|
|
|
|
var: set_net_community
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- set_net_community is changed
|
|
|
|
- set_net_community.data is defined
|
|
|
|
|
|
|
|
- name: Set network access type to username
|
|
|
|
meraki_snmp:
|
|
|
|
auth_key: '{{auth_key}}'
|
|
|
|
org_name: '{{test_org_name}}'
|
|
|
|
net_name: '{{test_net_name}}'
|
|
|
|
state: present
|
|
|
|
access: users
|
|
|
|
users:
|
|
|
|
- username: ansibleuser
|
|
|
|
passphrase: ansiblepass
|
|
|
|
delegate_to: localhost
|
|
|
|
register: set_net_user
|
|
|
|
|
|
|
|
- debug:
|
|
|
|
var: set_net_user
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- set_net_user is changed
|
|
|
|
- set_net_user.data is defined
|
|
|
|
|
|
|
|
- name: Set network access type to none
|
|
|
|
meraki_snmp:
|
|
|
|
auth_key: '{{auth_key}}'
|
|
|
|
org_name: '{{test_org_name}}'
|
|
|
|
net_name: '{{test_net_name}}'
|
|
|
|
state: present
|
|
|
|
access: none
|
|
|
|
delegate_to: localhost
|
|
|
|
register: set_net_none
|
|
|
|
|
|
|
|
- debug:
|
|
|
|
var: set_net_none
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- set_net_none is changed
|
|
|
|
- set_net_none.data is defined
|
|
|
|
|
|
|
|
- name: Query network SNMP settings
|
|
|
|
meraki_snmp:
|
|
|
|
auth_key: '{{auth_key}}'
|
|
|
|
org_name: '{{test_org_name}}'
|
|
|
|
net_name: '{{test_net_name}}'
|
|
|
|
state: query
|
|
|
|
delegate_to: localhost
|
|
|
|
register: get_net
|
|
|
|
|
|
|
|
- debug:
|
|
|
|
var: get_net
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- get_net.data is defined
|
|
|
|
|
|
|
|
always:
|
|
|
|
- name: Disable SNMPv3
|
|
|
|
meraki_snmp:
|
|
|
|
auth_key: '{{auth_key}}'
|
|
|
|
org_name: '{{test_org_name}}'
|
|
|
|
state: present
|
|
|
|
v3_enabled: no
|
|
|
|
v3_auth_mode: SHA
|
|
|
|
v3_auth_pass: ansiblepass
|
|
|
|
v3_priv_mode: AES128
|
|
|
|
v3_priv_pass: ansiblepass
|
|
|
|
delegate_to: localhost
|
|
|
|
|
|
|
|
- name: Delete SNMP network
|
|
|
|
meraki_network:
|
|
|
|
auth_key: '{{auth_key}}'
|
|
|
|
org_name: '{{test_org_name}}'
|
|
|
|
net_name: '{{test_net_name}}'
|
|
|
|
state: absent
|
|
|
|
delegate_to: localhost
|