|
|
|
# ios_linkagg -> CustomNetworkConfig
|
|
|
|
# ios_config -> dumps, NetworkConfig
|
|
|
|
|
|
|
|
- debug: msg="START cli/common_config.yaml on connection={{ ansible_connection }}"
|
|
|
|
|
|
|
|
# Hit NetworkConfig
|
|
|
|
- name: set hostname
|
|
|
|
ios_config:
|
|
|
|
lines: ['hostname ios-smoke']
|
|
|
|
match: none
|
|
|
|
provider: "{{ cli }}"
|
|
|
|
|
|
|
|
- name: hit diff_ignore_lines
|
|
|
|
ios_config:
|
|
|
|
lines: ['hostname ios-smoke-diff']
|
|
|
|
diff_ignore_lines:
|
|
|
|
- hostname ios-smoke
|
|
|
|
save_when: modified
|
|
|
|
provider: "{{ cli }}"
|
|
|
|
|
|
|
|
- name: return hostname
|
|
|
|
ios_config:
|
|
|
|
lines: ['hostname {{ shorter_hostname }}']
|
|
|
|
match: none
|
|
|
|
provider: "{{ cli }}"
|
|
|
|
|
|
|
|
- name: hit items with parents
|
|
|
|
ios_config:
|
|
|
|
lines: ['permit ip any any log']
|
|
|
|
parents: ['ip access-list extended test']
|
|
|
|
provider: "{{ cli }}"
|
|
|
|
match: exact
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- name: teardown
|
|
|
|
ios_config:
|
|
|
|
lines:
|
|
|
|
- 'no ip access-list extended test'
|
|
|
|
match: none
|
|
|
|
provider: "{{ cli }}"
|
|
|
|
|
|
|
|
- name: setup test NetworkConfig.difference, replace=block
|
|
|
|
ios_config:
|
|
|
|
lines:
|
|
|
|
- permit ip host 192.0.2.1 any log
|
|
|
|
- permit ip host 192.0.2.2 any log
|
|
|
|
- permit ip host 192.0.2.3 any log
|
|
|
|
parents: ['ip access-list extended test']
|
|
|
|
before: ['no ip access-list extended test']
|
|
|
|
after: ['exit']
|
|
|
|
provider: "{{ cli }}"
|
|
|
|
match: none
|
|
|
|
|
|
|
|
- name: test NetworkConfig.difference, replace=block
|
|
|
|
ios_config:
|
|
|
|
lines:
|
|
|
|
- permit ip host 192.0.2.1 any log
|
|
|
|
- permit ip host 192.0.2.2 any log
|
|
|
|
- permit ip host 192.0.2.3 any log
|
|
|
|
- permit ip host 192.0.2.4 any log
|
|
|
|
parents: ['ip access-list extended test']
|
|
|
|
replace: block
|
|
|
|
after: ['exit']
|
|
|
|
provider: "{{ cli }}"
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- "result.changed == true"
|
|
|
|
- "'ip access-list extended test' in result.updates"
|
|
|
|
- "'permit ip host 192.0.2.1 any log' in result.updates"
|
|
|
|
- "'permit ip host 192.0.2.2 any log' in result.updates"
|
|
|
|
- "'permit ip host 192.0.2.3 any log' in result.updates"
|
|
|
|
- "'permit ip host 192.0.2.4 any log' in result.updates"
|
|
|
|
|
|
|
|
- name: teardown- NetworkConfig.difference, replace=block
|
|
|
|
ios_config:
|
|
|
|
lines:
|
|
|
|
- no ip access-list extended test
|
|
|
|
match: none
|
|
|
|
provider: "{{ cli }}"
|
|
|
|
|
|
|
|
# CustomNetworkConfig
|
|
|
|
# currently gets skipped because switch_type != 'L2'
|
|
|
|
- set_fact: switch_type="{{ switch_type }}"
|
|
|
|
|
|
|
|
- block:
|
|
|
|
|
|
|
|
- name: setup - remove config used in test(part1)
|
|
|
|
ios_config:
|
|
|
|
lines:
|
|
|
|
- no interface port-channel 20
|
|
|
|
provider: "{{ cli }}"
|
|
|
|
ignore_errors: yes
|
|
|
|
|
|
|
|
- name: setup - remove config used in test(part2)
|
|
|
|
ios_config:
|
|
|
|
lines:
|
|
|
|
- no interface port-channel 5
|
|
|
|
provider: "{{ cli }}"
|
|
|
|
ignore_errors: yes
|
|
|
|
|
|
|
|
- name: setup - remove config used in test(part3)
|
|
|
|
ios_config:
|
|
|
|
lines:
|
|
|
|
- no channel-group 20 mode active
|
|
|
|
provider: "{{ cli }}"
|
|
|
|
parents: "{{ item }}"
|
|
|
|
loop:
|
|
|
|
- interface GigabitEthernet0/1
|
|
|
|
- interface GigabitEthernet0/2
|
|
|
|
|
|
|
|
- name: create linkagg
|
|
|
|
ios_linkagg: &create
|
|
|
|
group: 20
|
|
|
|
state: present
|
|
|
|
provider: "{{ cli }}"
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- "result.changed == true"
|
|
|
|
- "'interface port-channel 20' in result.commands"
|
|
|
|
|
|
|
|
- name: set link aggregation group to members
|
|
|
|
ios_linkagg: &configure_member
|
|
|
|
group: 20
|
|
|
|
mode: active
|
|
|
|
members:
|
|
|
|
- GigabitEthernet0/1
|
|
|
|
- GigabitEthernet0/2
|
|
|
|
provider: "{{ cli }}"
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- "result.changed == true"
|
|
|
|
- "'interface GigabitEthernet0/1' in result.commands"
|
|
|
|
- "'channel-group 20 mode active' in result.commands"
|
|
|
|
- "'interface GigabitEthernet0/2' in result.commands"
|
|
|
|
- "'channel-group 20 mode active' in result.commands"
|
|
|
|
|
|
|
|
- name: remove link aggregation group from member
|
|
|
|
ios_linkagg: &remove_member
|
|
|
|
group: 20
|
|
|
|
mode: active
|
|
|
|
members:
|
|
|
|
- GigabitEthernet0/2
|
|
|
|
provider: "{{ cli }}"
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- "result.changed == true"
|
|
|
|
- "'interface GigabitEthernet0/1' in result.commands"
|
|
|
|
- "'no channel-group 20 mode active' in result.commands"
|
|
|
|
|
|
|
|
- name: remove linkagg
|
|
|
|
ios_linkagg: &remove
|
|
|
|
group: 20
|
|
|
|
state: absent
|
|
|
|
provider: "{{ cli }}"
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- "result.changed == true"
|
|
|
|
- "'no interface port-channel 20' in result.commands"
|
|
|
|
|
|
|
|
- name: create aggregate of linkagg definitions
|
|
|
|
ios_linkagg: &create_agg
|
|
|
|
aggregate:
|
|
|
|
- { group: 5 }
|
|
|
|
- { group: 20, mode: active, members: ['GigabitEthernet0/1'] }
|
|
|
|
provider: "{{ cli }}"
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- "result.changed == true"
|
|
|
|
- "'interface port-channel 5' in result.commands"
|
|
|
|
- "'interface port-channel 20' in result.commands"
|
|
|
|
- "'interface GigabitEthernet0/1' in result.commands"
|
|
|
|
- "'channel-group 20 mode active' in result.commands"
|
|
|
|
|
|
|
|
- name: teardown(part1)
|
|
|
|
ios_config:
|
|
|
|
lines:
|
|
|
|
- no interface port-channel 20
|
|
|
|
provider: "{{ cli }}"
|
|
|
|
ignore_errors: yes
|
|
|
|
|
|
|
|
- name: teardown(part2)
|
|
|
|
ios_config:
|
|
|
|
lines:
|
|
|
|
- no interface port-channel 5
|
|
|
|
provider: "{{ cli }}"
|
|
|
|
ignore_errors: yes
|
|
|
|
|
|
|
|
- name: teardown(part3)
|
|
|
|
ios_config:
|
|
|
|
lines:
|
|
|
|
- no channel-group 20 mode active
|
|
|
|
provider: "{{ cli }}"
|
|
|
|
parents: "{{ item }}"
|
|
|
|
loop:
|
|
|
|
- interface GigabitEthernet0/1
|
|
|
|
- interface GigabitEthernet0/2
|
|
|
|
|
|
|
|
when: switch_type == 'L2'
|
|
|
|
|
|
|
|
- debug: msg="END cli/common_config.yaml on connection={{ ansible_connection }}"
|