SUMMARY
I am creating object-groups on ASA and updating the OGs with merged operation and testing the config by using deleted config, but deleted operation is not working as expected.
ISSUE TYPE
COMPONENT NAME
Before playbook run config on ASA:
iftyasa(config)# sh run object-group
iftyasa(config)#
Here is my merged operation playbook:
After running playbook I can see asa with new ogs
iftyasa(config)# sh run object-group
object-group network test_og_network
description test_og_network
network-object host 192.0.2.1
network-object host 192.0.2.2
network-object 192.0.2.0 255.255.255.0
network-object 198.51.100.0 255.255.255.0
object-group network test_network_og
description test network og
network-object host 192.0.3.1
network-object host 192.0.3.2
group-object test_og_network
Here is my deleted operations playbook
Here is the playbook output:
[WARNING]: You are running the development version of Ansible. You should only run Ansible from "devel" if you are modifying the Ansible engine, or trying out features under development. This is a rapidly
changing source of code and can become unstable at any point.
ansible-playbook 2.10.0.dev0
config file = /etc/ansible/ansible.cfg
configured module search path = [u'/home/ikhan/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /home/ikhan/.local/lib/python2.7/site-packages/ansible
executable location = /home/ikhan/Documents/ansible/bin/ansible-playbook
python version = 2.7.15 (default, Oct 15 2018, 15:24:06) [GCC 8.1.1 20180712 (Red Hat 8.1.1-5)]
Using /etc/ansible/ansible.cfg as config file
setting up inventory plugins
host_list declined parsing /home/ikhan/Documents/inventory.ini as it did not pass its verify_file() method
script declined parsing /home/ikhan/Documents/inventory.ini as it did not pass its verify_file() method
auto declined parsing /home/ikhan/Documents/inventory.ini as it did not pass its verify_file() method
yaml declined parsing /home/ikhan/Documents/inventory.ini as it did not pass its verify_file() method
Parsed /home/ikhan/Documents/inventory.ini inventory source with ini plugin
Loading callback plugin default of type stdout, v2.0 from /home/ikhan/.local/lib/python2.7/site-packages/ansible/plugins/callback/default.pyc
PLAYBOOK: cisco_asa_play2.yml *************************************************************************************************************************************************************************************
Positional arguments: cisco_asa_play2.yml
become_method: sudo
inventory: (u'/home/ikhan/Documents/inventory.ini',)
forks: 5
tags: (u'all',)
verbosity: 5
connection: smart
timeout: 10
1 plays in cisco_asa_play2.yml
PLAY [asa01] ******************************************************************************************************************************************************************************************************
META: ran handlers
TASK [Merge module attributes of given object-group] **************************************************************************************************************************************************************
task path: /home/ikhan/Documents/cisco_asa_play2.yml:20
<192.168.10.1> attempting to start connection
<192.168.10.1> using connection plugin ansible.netcommon.network_cli
Found ansible-connection at path /home/ikhan/Documents/ansible/bin/ansible-connection
<192.168.10.1> local domain socket does not exist, starting it
<192.168.10.1> control socket path is /home/ikhan/.ansible/pc/a5874044ce
<192.168.10.1> local domain socket listeners started successfully
<192.168.10.1> loaded cliconf plugin ansible_collections.cisco.asa.plugins.cliconf.asa from path /home/ikhan/.ansible/collections/ansible_collections/cisco/asa/plugins/cliconf/asa.py for network_os cisco.asa.asa
<192.168.10.1>
<192.168.10.1> local domain socket path is /home/ikhan/.ansible/pc/a5874044ce
<192.168.10.1> ESTABLISH LOCAL CONNECTION FOR USER: ikhan
<192.168.10.1> EXEC /bin/sh -c '( umask 77 && mkdir -p "echo /home/ikhan/.ansible/tmp/ansible-local-19888Raa0mK/ansible-tmp-1586226695.53-12192347931995
" && echo ansible-tmp-1586226695.53-12192347931995="echo /home/ikhan/.ansible/tmp/ansible-local-19888Raa0mK/ansible-tmp-1586226695.53-12192347931995
" ) && sleep 0'
Using module_utils file ansible_collections/cisco/asa/plugins/module_utils
Using module_utils file ansible_collections/cisco/asa
Using module_utils file ansible_collections/cisco/asa/plugins/module_utils/network/asa/config/ogs/ogs
Using module_utils file ansible_collections/cisco/asa/plugins/module_utils/network/asa/argspec/ogs
Using module_utils file ansible_collections/cisco/asa/plugins/module_utils/network/asa/argspec
Using module_utils file ansible_collections/cisco/asa/plugins
Using module_utils file ansible_collections/cisco/asa/plugins/module_utils/network
Using module_utils file ansible_collections/cisco/asa/plugins/module_utils/network/asa/config
Using module_utils file ansible_collections
Using module_utils file /home/ikhan/.local/lib/python2.7/site-packages/ansible/module_utils/basic.py
Using module_utils file ansible_collections/cisco/asa/plugins/module_utils/network/asa
Using module_utils file ansible_collections/cisco/asa/plugins/module_utils/network/asa/argspec/ogs/ogs
Using module_utils file ansible_collections/cisco/asa/plugins/module_utils/network/asa/config/ogs
Using module_utils file ansible_collections/cisco
Using module_utils file ansible_collections/ansible/netcommon/plugins/module_utils/network/common/cfg
Using module_utils file ansible_collections/ansible/netcommon/plugins
Using module_utils file ansible_collections/ansible/netcommon
Using module_utils file ansible_collections/cisco/asa/plugins/module_utils/network/asa/utils
Using module_utils file ansible_collections/cisco/asa/plugins/module_utils/network/asa/utils/utils
Using module_utils file ansible_collections/cisco/asa/plugins/module_utils/network/asa/facts/facts
Using module_utils file ansible_collections/cisco/asa/plugins/module_utils/network/asa/facts
Using module_utils file ansible_collections/ansible/netcommon/plugins/module_utils/network/common/cfg/base
Using module_utils file ansible_collections/ansible
Using module_utils file ansible_collections/ansible/netcommon/plugins/module_utils/network
Using module_utils file ansible_collections/ansible/netcommon/plugins/module_utils/network/common/utils
Using module_utils file /home/ikhan/.local/lib/python2.7/site-packages/ansible/module_utils/six/init.py
Using module_utils file ansible_collections/ansible/netcommon/plugins/module_utils/network/common
Using module_utils file ansible_collections/ansible/netcommon/plugins/module_utils
Using module_utils file ansible_collections/cisco/asa/plugins/module_utils/network/asa/facts/ogs/ogs
Using module_utils file ansible_collections/cisco/asa/plugins/module_utils/network/asa/facts/legacy/base
Using module_utils file ansible_collections/cisco/asa/plugins/module_utils/network/asa/facts/acls/acls
Using module_utils file ansible_collections/ansible/netcommon/plugins/module_utils/network/common/facts/facts
Using module_utils file ansible_collections/ansible/netcommon/plugins/module_utils/network/common/facts
Using module_utils file ansible_collections/cisco/asa/plugins/module_utils/network/asa/facts/ogs
Using module_utils file ansible_collections/cisco/asa/plugins/module_utils/network/asa/facts/acls
Using module_utils file ansible_collections/cisco/asa/plugins/module_utils/network/asa/facts/legacy
Using module_utils file ansible_collections/cisco/asa/plugins/module_utils/network/asa/asa
Using module_utils file /home/ikhan/.local/lib/python2.7/site-packages/ansible/module_utils/_text.py
Using module_utils file /home/ikhan/.local/lib/python2.7/site-packages/ansible/module_utils/connection.py
Using module_utils file /home/ikhan/.local/lib/python2.7/site-packages/ansible/module_utils/common/json.py
Using module_utils file /home/ikhan/.local/lib/python2.7/site-packages/ansible/module_utils/common/init.py
Using module_utils file /home/ikhan/.local/lib/python2.7/site-packages/ansible/module_utils/common/_collections_compat.py
Using module_utils file /home/ikhan/.local/lib/python2.7/site-packages/ansible/module_utils/common/collections.py
Using module_utils file ansible_collections/cisco/asa/plugins/module_utils/network/asa/argspec/acls
Using module_utils file ansible_collections/cisco/asa/plugins/module_utils/network/asa/argspec/acls/acls
Using module_utils file ansible_collections/ansible/netcommon/plugins/module_utils/network/common/network
Using module_utils file ansible_collections/ansible/netcommon/plugins/module_utils/network/common/netconf
Using module_utils file ansible_collections/ansible/netcommon/plugins/module_utils/network/common/parsing
Using module_utils file /home/ikhan/.local/lib/python2.7/site-packages/ansible/module_utils/parsing/init.py
Using module_utils file /home/ikhan/.local/lib/python2.7/site-packages/ansible/module_utils/parsing/convert_bool.py
Using module_utils file /home/ikhan/.local/lib/python2.7/site-packages/ansible/module_utils/common/network.py
Using module_utils file /home/ikhan/.local/lib/python2.7/site-packages/ansible/module_utils/common/text/formatters.py
Using module_utils file /home/ikhan/.local/lib/python2.7/site-packages/ansible/module_utils/common/validation.py
Using module_utils file /home/ikhan/.local/lib/python2.7/site-packages/ansible/module_utils/common/text/converters.py
Using module_utils file /home/ikhan/.local/lib/python2.7/site-packages/ansible/module_utils/pycompat24.py
Using module_utils file /home/ikhan/.local/lib/python2.7/site-packages/ansible/module_utils/common/warnings.py
Using module_utils file /home/ikhan/.local/lib/python2.7/site-packages/ansible/module_utils/common/text/init.py
Using module_utils file /home/ikhan/.local/lib/python2.7/site-packages/ansible/module_utils/common/process.py
Using module_utils file /home/ikhan/.local/lib/python2.7/site-packages/ansible/module_utils/common/_utils.py
Using module_utils file /home/ikhan/.local/lib/python2.7/site-packages/ansible/module_utils/common/parameters.py
Using module_utils file /home/ikhan/.local/lib/python2.7/site-packages/ansible/module_utils/common/_json_compat.py
Using module_utils file /home/ikhan/.local/lib/python2.7/site-packages/ansible/module_utils/common/sys_info.py
Using module_utils file /home/ikhan/.local/lib/python2.7/site-packages/ansible/module_utils/common/file.py
Using module_utils file /home/ikhan/.local/lib/python2.7/site-packages/ansible/module_utils/distro/init.py
Using module_utils file /home/ikhan/.local/lib/python2.7/site-packages/ansible/module_utils/distro/_distro.py
Using module file /home/ikhan/.ansible/collections/ansible_collections/cisco/asa/plugins/modules/asa_ogs.py
<192.168.10.1> PUT /home/ikhan/.ansible/tmp/ansible-local-19888Raa0mK/tmp0ZS8DQ TO /home/ikhan/.ansible/tmp/ansible-local-19888Raa0mK/ansible-tmp-1586226695.53-12192347931995/AnsiballZ_asa_ogs.py
<192.168.10.1> EXEC /bin/sh -c 'chmod u+x /home/ikhan/.ansible/tmp/ansible-local-19888Raa0mK/ansible-tmp-1586226695.53-12192347931995/ /home/ikhan/.ansible/tmp/ansible-local-19888Raa0mK/ansible-tmp-1586226695.53-12192347931995/AnsiballZ_asa_ogs.py && sleep 0'
<192.168.10.1> EXEC /bin/sh -c 'python /home/ikhan/.ansible/tmp/ansible-local-19888Raa0mK/ansible-tmp-1586226695.53-12192347931995/AnsiballZ_asa_ogs.py && sleep 0'
<192.168.10.1> EXEC /bin/sh -c 'rm -f -r /home/ikhan/.ansible/tmp/ansible-local-19888Raa0mK/ansible-tmp-1586226695.53-12192347931995/ > /dev/null 2>&1 && sleep 0'
changed: [192.168.10.1] => {
"after": [
{
"name": "test_og_network",
"network_object": {
"address": [
"192.0.2.0 255.255.255.0",
"198.51.100.0 255.255.255.0"
],
"host": [
"192.0.2.1",
"192.0.2.2"
]
},
"object_type": "network"
},
{
"group_object": "test_og_network",
"name": "test_network_og",
"object_type": "network"
}
],
"before": [
{
"description": "test_og_network",
"name": "test_og_network",
"network_object": {
"address": [
"192.0.2.0 255.255.255.0",
"198.51.100.0 255.255.255.0"
],
"host": [
"192.0.2.1",
"192.0.2.2"
]
},
"object_type": "network"
},
{
"description": "test network og",
"group_object": "test_og_network",
"name": "test_network_og",
"network_object": {
"host": [
"192.0.3.1",
"192.0.3.2"
]
},
"object_type": "network"
}
],
"changed": true,
"commands": [
"object-group network test_og_network",
"no description test_og_network",
"object-group network test_network_og",
"no description test network og",
"no network-object host 192.0.3.1",
"no network-object host 192.0.3.2"
],
"invocation": {
"module_args": {
"config": [
{
"description": "test_og_network",
"group_object": null,
"icmp_object": null,
"name": "test_og_network",
"network_object": {
"address": [
"192.0.2.0 255.255.255.0",
"198.51.100.0 255.255.255.0"
],
"host": [
"192.0.2.1",
"192.0.2.2"
],
"ipv6_address": null,
"object": null
},
"object_type": "network",
"protocol_object": null,
"security_group": null,
"service_object": null,
"user_object": null
},
{
"description": "test network og",
"group_object": "test_og_network",
"icmp_object": null,
"name": "test_network_og",
"network_object": {
"address": null,
"host": [
"192.0.3.1",
"192.0.3.2"
],
"ipv6_address": [
"2001:db8:0:3::/64"
],
"object": null
},
"object_type": "network",
"protocol_object": null,
"security_group": null,
"service_object": null,
"user_object": null
}
],
"running_config": null,
"state": "deleted"
}
}
}
META: ran handlers
META: ran handlers
PLAY RECAP ********************************************************************************************************************************************************************************************************
192.168.10.1 : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Here is the ASA output after deleted operations:
iftyasa(config)# sh run object-group
object-group network test_og_network
network-object host 192.0.2.1
network-object host 192.0.2.2
network-object 192.0.2.0 255.255.255.0
network-object 198.51.100.0 255.255.255.0
object-group network test_network_og
group-object test_og_network
Notice it deleted these two lines from ASA, but not rest:
network-object host 192.0.3.1
network-object host 192.0.3.2
When I run same deleted playbook again
I am left with this config on ASA
iftyasa(config)# sh run object-group
object-group network test_og_network
network-object host 192.0.2.1
network-object host 192.0.2.2
network-object 192.0.2.0 255.255.255.0
network-object 198.51.100.0 255.255.255.0
so deleted operation is deleted one object group this time, but even after running same playbook again it is not deleting the other og. This is a bug and not a consistent behaviour.
ANSIBLE VERSION
CONFIGURATION
OS / ENVIRONMENT
Fedora 30
STEPS TO REPRODUCE
EXPECTED RESULTS
Delete the OGs
ACTUAL RESULTS