F5Networks / f5-ansible-bigip

Declarative Ansible collection for managing F5 BIG-IP/BIG-IQ.
37 stars 17 forks source link

Runtime errors during FAST application deployment are not caught #55

Closed simonkowallik closed 1 year ago

simonkowallik commented 1 year ago
COMPONENT NAME

f5networks.f5_bigip.bigip_fast_application version 1.12.0

Environment

ANSIBLE VERSION
$ ansible --version
ansible [core 2.14.1]
  config file = /ansible/ansible.cfg
  configured module search path = ['/ansible/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /ansible/.local/lib/python3.10/site-packages/ansible
  ansible collection location = /ansible/collections
  executable location = /usr/local/bin/ansible
  python version = 3.10.6 (main, Aug 23 2022, 08:25:41) [GCC 10.2.1 20210110] (/usr/local/bin/python)
  jinja version = 3.1.2
  libyaml = True
BIGIP VERSION
# cat /VERSION
Product: BIG-IP
Version: 16.1.3.2
Build: 0.0.4
Sequence: 16.1.3.2-0.0.4.0
BaseBuild: 0.0.4
Edition: Point Release 2
Date: Wed Sep 14 08:12:07 PDT 2022
Built: 220914081207
Changelist: 3632323
JobID: 1383561
CONFIGURATION
$ cat ansible.cfg 
[defaults]
collections_paths=./collections
filter_plugins=./filter_plugins
module_utils=./module_utils
roles_path=./roles
inventory=./inventory
# https://stackoverflow.com/questions/61948417/how-to-measure-and-display-time-taken-for-tasks-when-running-ansible-playbook
#callbacks_enabled = profile_tasks
OS / ENVIRONMENT

N/A

SUMMARY
STEPS TO REPRODUCE
---
- name: "Repro"
  hosts: all
  gather_facts: false
  connection: httpapi
  vars:
    provider: &bigip_provider
      server: "10.1.1.4"
      user: "admin"
      password: "Secret_245"
      validate_certs: "no"
      server_port: 443
    ansible_host: "{{ provider.server }}"
    ansible_user: "{{ provider.user }}"
    ansible_httpapi_password: "{{ provider.password }}"
    ansible_httpapi_port: "{{ provider.server_port }}"
    ansible_network_os: "f5networks.f5_bigip.bigip"
    ansible_httpapi_use_ssl: "yes"
    ansible_httpapi_validate_certs: "{{ provider.validate_certs }}"

  tasks:
    - name: "(0) FAST declaration"
      ansible.builtin.set_fact:
        fast_declaration: >-
          {
            "tenant_name": "MyTenantName",
            "application_name": "MyAppName",
            "virtual_port": 443,
            "virtual_address": "192.0.2.202",
            "WAF_policy_path": "/Common/this_waf_policy_does_not_exist",
            "server_port": 80,
            "server_address": [
              "192.0.2.180"
            ],
            "certificate": "-----BEGIN CERTIFICATE-----\nMIIDrjCCApagAwIBAgIEGFse8zANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMC\nVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMRIwEAYDVQQKEwlNeUNv\nbXBhbnkxCzAJBgNVBAsTAklUMR4wHAYDVQQDExVsb2NhbGhvc3QubG9jYWxkb21h\naW4xKTAnBgkqhkiG9w0BCQEWGnJvb3RAbG9jYWxob3N0LmxvY2FsZG9tYWluMB4X\nDTIyMTIxMzE4NTQ0M1oXDTMyMTIxMDE4NTQ0M1owgZgxCzAJBgNVBAYTAlVTMQsw\nCQYDVQQIEwJXQTEQMA4GA1UEBxMHU2VhdHRsZTESMBAGA1UEChMJTXlDb21wYW55\nMQswCQYDVQQLEwJJVDEeMBwGA1UEAxMVbG9jYWxob3N0LmxvY2FsZG9tYWluMSkw\nJwYJKoZIhvcNAQkBFhpyb290QGxvY2FsaG9zdC5sb2NhbGRvbWFpbjCCASIwDQYJ\nKoZIhvcNAQEBBQADggEPADCCAQoCggEBALKLQBSjlGxbtuYPDPW+HCPt7+RjoUGC\nab0bGdEtOUxfCDnKKxT2GBjYrfvH7S/xtbdaI1cJbA0qPEhQljNyPudPoSunQ7D2\nl3ka/27jL/FKHL+/svkgLG4dlMVWpDhYKq8DaYdb6iI5qZFUfy95hn2QjkXm0Vrn\nmo7PiDPbnTVTGU6CsPQzmANdN0J5CR6l30ORMXKBwc9mYLUxHHyHI5HSIKrsrj9B\n4PNKDK7OJaYb0d21uuVNyZ281jbnKJs2W54YbhTGVGKcKRGR9Rbfd4LzcDgBtIt0\nZSPfrPu82s3CydqfqctZbg22NE2CUVzyK9yWM0pghghOUPSI2cIrwEsCAwEAATAN\nBgkqhkiG9w0BAQsFAAOCAQEAGdDW+kZde88JarcMfA/I78eDn9j4szGJn6gvCsHZ\niLJsugOxj6udrNXKn6NuekNoQXMae0kXVqVmGZouX8lzrn0I6+bR1TEkBmc+v9bF\nLXk096iUBaKPSAkoNOFeHQE/XRu4kk6TqedMneZvs2/725um+9kkPZde4luwCfk6\nqrki7MtAL9xhuxUVFpISjvsBQRwCg0ckQ1YvKYf+s7i9/4fBZB25biGzmVK7cEPx\nAPVjOHNlYwHCa9bp7SX4tuUrqGyZ8ib3OHxFdXVZzBKsNe02zldpDQ7ZyPlUzhhh\nwl3HfQXADQYtf5rIwsFxgrSDIS2U7oD39poucodCEzc2PQ==\n-----END CERTIFICATE-----",
            "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCyi0AUo5RsW7bm\nDwz1vhwj7e/kY6FBgmm9GxnRLTlMXwg5yisU9hgY2K37x+0v8bW3WiNXCWwNKjxI\nUJYzcj7nT6Erp0Ow9pd5Gv9u4y/xShy/v7L5ICxuHZTFVqQ4WCqvA2mHW+oiOamR\nVH8veYZ9kI5F5tFa55qOz4gz2501UxlOgrD0M5gDXTdCeQkepd9DkTFygcHPZmC1\nMRx8hyOR0iCq7K4/QeDzSgyuziWmG9HdtbrlTcmdvNY25yibNlueGG4UxlRinCkR\nkfUW33eC83A4AbSLdGUj36z7vNrNwsnan6nLWW4NtjRNglFc8ivcljNKYIYITlD0\niNnCK8BLAgMBAAECggEAMvgnufycwXZJN1HynDDCbcteIXADt+TX9MFI1Hs5kUDL\n41uAgwJiDK3GtUr0viwdeRNFZXJuIy/8d5Rx3Ivvwy7rTr/4RguPYGZBp1E5/YLv\nxBmgqRfzNxhAwTkjtmYNAVtTA+5MX6rganmZuV7S8wOSaggjmfTmHYDHXC6EqZTs\n+BIALRKLYwHzriKM04zDCDcPzG9Wt3ZDLXBBAzWwtMOCDJXRE0PSQXl8C5p6IiLY\najRXXHVqrF4Q10rid6kJKsNKuXMOvoeguAeaPJlY0oOco7hUNmJjf78qKWBM7VuK\nwu0O0FPbRl/oVs9eLzBfEn2lOcjhF9LpyagM4k1fKQKBgQD48OFyk5USjfnmzlQk\nl9wb3/cYyZKpKVIDQ/2qtfRnuYKtSqmayyQwLaxlzbOKKvBenwsTF259Onz0Pt0/\nmJsFWv3DMJDh3QyCrTvoZnnyw3PT3NUN7cGiQQi0SH5M9mvF8gIRZEyG8LmPKJkE\niDW6PC95Y/N1zyaI3tOTnNDrtwKBgQC3m1d80Ce+kJzsz6CP/XD28qi5OeD5HJAp\njzPSRv6dGy1vyiwXv76nN4vQwzZqUo7g+9rJEiec0iDmpMelPkXHJteLZWi3QiN+\nfwqcMj4eYrFVZ2hdkKZhKI99zbAQ8fKJmfB6dVOYjfQOUUpF/tT17ozaAkGe5xHI\nwtuz7354DQKBgQCXIz/tHTb7feFERO6HDP/gmJhfnzoApAqb2vKuaywIsXNqHJNe\nXIkLCx/I6xte/nTTLcI+hBJby1/DtksDanZryPOaRukfh+IpkF132oedYRb4gPGF\nNF1EUjGjqwOrXEzQb/7bakagApTWGrLUMpJUEGhOTeWpF+xwWsCftSyOfwKBgQC3\nkrw9UY17TfFoIAuEC70HWwTw9PqHd1R4CPKiGlN11vdt3vCI6jB/1dyX5KYiVdr+\n/TD5eopalAlLMZNfFs0DWkWF3OV+3MTKM9Dy7JUJIln1bsd9TSPc3oXhHWcc+hsq\nEtzKQ0ZKsBtEuWgOZcSdA16WlkzvyE4SsSijVh/XfQKBgFCGWIJZ+QFw+hFCNbpW\nSKFpVeEQ49DjoiL1k0LjszOFLG6eI1X9MhELV0PgjosoYU4SUTgsnfQBUfxKlGvN\nZoxgntmaI1fk1o86Zw7QLpG5t5RSDde+xscvS1nEDs12zyijw5Me3NG/ShJ4XpIn\ntv20DKWvUIrJD2BhQNTdbWmx\n-----END PRIVATE KEY-----"
          }

    - name: "(1) FAST create application"
      f5networks.f5_bigip.bigip_fast_application:
        template: examples/simple_waf
        content: "{{ fast_declaration }}"
        tenant: MyTenantName
        application: MyAppName
        state: create
      register: f5_fast_response

    - name: "(2) FAST response debug"
      ansible.builtin.debug:
        var: f5_fast_response
EXPECTED RESULTS

f5networks.f5_bigip.bigip_fast_application is expected to catch runtime errors in the FAST task as well.

Therefore it is expected that the above task "(1) FAST create application" will fail.

ACTUAL RESULTS

The playbook tasks succeed.

ansible-playbook -i inventory/repro play-f5fast-issue-repro.yml -vvvv
ansible-playbook [core 2.14.1]
  config file = /ansible/ansible.cfg
  configured module search path = ['/ansible/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /ansible/.local/lib/python3.10/site-packages/ansible
  ansible collection location = /ansible/collections
  executable location = /usr/local/bin/ansible-playbook
  python version = 3.10.6 (main, Aug 23 2022, 08:25:41) [GCC 10.2.1 20210110] (/usr/local/bin/python)
  jinja version = 3.1.2
  libyaml = True
Using /ansible/ansible.cfg as config file
setting up inventory plugins
host_list declined parsing /ansible/inventory/repro/hosts.yml as it did not pass its verify_file() method
script declined parsing /ansible/inventory/repro/hosts.yml as it did not pass its verify_file() method
Parsed /ansible/inventory/repro/hosts.yml inventory source with yaml plugin
Loading collection f5networks.f5_bigip from /ansible/collections/ansible_collections/f5networks/f5_bigip
Loading callback plugin default of type stdout, v2.0 from /ansible/.local/lib/python3.10/site-packages/ansible/plugins/callback/default.py
Skipping callback 'default', as we already have a stdout callback.
Skipping callback 'minimal', as we already have a stdout callback.
Skipping callback 'oneline', as we already have a stdout callback.

PLAYBOOK: play-f5fast-issue-repro.yml *********************************************************************************************************************************************************************************************************************************************************
Positional arguments: play-f5fast-issue-repro.yml
verbosity: 4
connection: smart
timeout: 10
become_method: sudo
tags: ('all',)
inventory: ('/ansible/inventory/repro',)
forks: 5
1 plays in play-f5fast-issue-repro.yml

PLAY [Repro] **********************************************************************************************************************************************************************************************************************************************************************************

TASK [(0) FAST declaration] *******************************************************************************************************************************************************************************************************************************************************************
task path: /ansible/play-f5fast-issue-repro.yml:22
redirecting (type: connection) ansible.builtin.httpapi to ansible.netcommon.httpapi
Loading collection ansible.netcommon from /ansible/collections/ansible_collections/ansible/netcommon
<10.1.1.4> attempting to start connection
<10.1.1.4> using connection plugin ansible.netcommon.httpapi
Found ansible-connection at path /usr/local/bin/ansible-connection
<10.1.1.4> local domain socket does not exist, starting it
<10.1.1.4> control socket path is /ansible/.ansible/pc/2db776cd4c
<10.1.1.4> redirecting (type: connection) ansible.builtin.httpapi to ansible.netcommon.httpapi
<10.1.1.4> Loading collection ansible.netcommon from /ansible/collections/ansible_collections/ansible/netcommon
<10.1.1.4> Loading collection f5networks.f5_bigip from /ansible/collections/ansible_collections/f5networks/f5_bigip
<10.1.1.4> local domain socket listeners started successfully
<10.1.1.4> loaded API plugin ansible_collections.f5networks.f5_bigip.plugins.httpapi.bigip from path /ansible/collections/ansible_collections/f5networks/f5_bigip/plugins/httpapi/bigip.py for platform type f5networks.f5_bigip.bigip
<10.1.1.4> 
<10.1.1.4> local domain socket path is /ansible/.ansible/pc/2db776cd4c
ok: [bigip] => {
    "ansible_facts": {
        "fast_declaration": "{\n  \"tenant_name\": \"MyTenantName\",\n  \"application_name\": \"MyAppName\",\n  \"virtual_port\": 443,\n  \"virtual_address\": \"192.0.2.202\",\n  \"WAF_policy_path\": \"/Common/this_waf_policy_does_not_exist\",\n  \"server_port\": 80,\n  \"server_address\": [\n    \"192.0.2.180\"\n  ],\n  \"certificate\": \"-----BEGIN CERTIFICATE-----\\nMIIDrjCCApagAwIBAgIEGFse8zANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMC\\nVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMRIwEAYDVQQKEwlNeUNv\\nbXBhbnkxCzAJBgNVBAsTAklUMR4wHAYDVQQDExVsb2NhbGhvc3QubG9jYWxkb21h\\naW4xKTAnBgkqhkiG9w0BCQEWGnJvb3RAbG9jYWxob3N0LmxvY2FsZG9tYWluMB4X\\nDTIyMTIxMzE4NTQ0M1oXDTMyMTIxMDE4NTQ0M1owgZgxCzAJBgNVBAYTAlVTMQsw\\nCQYDVQQIEwJXQTEQMA4GA1UEBxMHU2VhdHRsZTESMBAGA1UEChMJTXlDb21wYW55\\nMQswCQYDVQQLEwJJVDEeMBwGA1UEAxMVbG9jYWxob3N0LmxvY2FsZG9tYWluMSkw\\nJwYJKoZIhvcNAQkBFhpyb290QGxvY2FsaG9zdC5sb2NhbGRvbWFpbjCCASIwDQYJ\\nKoZIhvcNAQEBBQADggEPADCCAQoCggEBALKLQBSjlGxbtuYPDPW+HCPt7+RjoUGC\\nab0bGdEtOUxfCDnKKxT2GBjYrfvH7S/xtbdaI1cJbA0qPEhQljNyPudPoSunQ7D2\\nl3ka/27jL/FKHL+/svkgLG4dlMVWpDhYKq8DaYdb6iI5qZFUfy95hn2QjkXm0Vrn\\nmo7PiDPbnTVTGU6CsPQzmANdN0J5CR6l30ORMXKBwc9mYLUxHHyHI5HSIKrsrj9B\\n4PNKDK7OJaYb0d21uuVNyZ281jbnKJs2W54YbhTGVGKcKRGR9Rbfd4LzcDgBtIt0\\nZSPfrPu82s3CydqfqctZbg22NE2CUVzyK9yWM0pghghOUPSI2cIrwEsCAwEAATAN\\nBgkqhkiG9w0BAQsFAAOCAQEAGdDW+kZde88JarcMfA/I78eDn9j4szGJn6gvCsHZ\\niLJsugOxj6udrNXKn6NuekNoQXMae0kXVqVmGZouX8lzrn0I6+bR1TEkBmc+v9bF\\nLXk096iUBaKPSAkoNOFeHQE/XRu4kk6TqedMneZvs2/725um+9kkPZde4luwCfk6\\nqrki7MtAL9xhuxUVFpISjvsBQRwCg0ckQ1YvKYf+s7i9/4fBZB25biGzmVK7cEPx\\nAPVjOHNlYwHCa9bp7SX4tuUrqGyZ8ib3OHxFdXVZzBKsNe02zldpDQ7ZyPlUzhhh\\nwl3HfQXADQYtf5rIwsFxgrSDIS2U7oD39poucodCEzc2PQ==\\n-----END CERTIFICATE-----\",\n  \"private_key\": \"-----BEGIN PRIVATE KEY-----\\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCyi0AUo5RsW7bm\\nDwz1vhwj7e/kY6FBgmm9GxnRLTlMXwg5yisU9hgY2K37x+0v8bW3WiNXCWwNKjxI\\nUJYzcj7nT6Erp0Ow9pd5Gv9u4y/xShy/v7L5ICxuHZTFVqQ4WCqvA2mHW+oiOamR\\nVH8veYZ9kI5F5tFa55qOz4gz2501UxlOgrD0M5gDXTdCeQkepd9DkTFygcHPZmC1\\nMRx8hyOR0iCq7K4/QeDzSgyuziWmG9HdtbrlTcmdvNY25yibNlueGG4UxlRinCkR\\nkfUW33eC83A4AbSLdGUj36z7vNrNwsnan6nLWW4NtjRNglFc8ivcljNKYIYITlD0\\niNnCK8BLAgMBAAECggEAMvgnufycwXZJN1HynDDCbcteIXADt+TX9MFI1Hs5kUDL\\n41uAgwJiDK3GtUr0viwdeRNFZXJuIy/8d5Rx3Ivvwy7rTr/4RguPYGZBp1E5/YLv\\nxBmgqRfzNxhAwTkjtmYNAVtTA+5MX6rganmZuV7S8wOSaggjmfTmHYDHXC6EqZTs\\n+BIALRKLYwHzriKM04zDCDcPzG9Wt3ZDLXBBAzWwtMOCDJXRE0PSQXl8C5p6IiLY\\najRXXHVqrF4Q10rid6kJKsNKuXMOvoeguAeaPJlY0oOco7hUNmJjf78qKWBM7VuK\\nwu0O0FPbRl/oVs9eLzBfEn2lOcjhF9LpyagM4k1fKQKBgQD48OFyk5USjfnmzlQk\\nl9wb3/cYyZKpKVIDQ/2qtfRnuYKtSqmayyQwLaxlzbOKKvBenwsTF259Onz0Pt0/\\nmJsFWv3DMJDh3QyCrTvoZnnyw3PT3NUN7cGiQQi0SH5M9mvF8gIRZEyG8LmPKJkE\\niDW6PC95Y/N1zyaI3tOTnNDrtwKBgQC3m1d80Ce+kJzsz6CP/XD28qi5OeD5HJAp\\njzPSRv6dGy1vyiwXv76nN4vQwzZqUo7g+9rJEiec0iDmpMelPkXHJteLZWi3QiN+\\nfwqcMj4eYrFVZ2hdkKZhKI99zbAQ8fKJmfB6dVOYjfQOUUpF/tT17ozaAkGe5xHI\\nwtuz7354DQKBgQCXIz/tHTb7feFERO6HDP/gmJhfnzoApAqb2vKuaywIsXNqHJNe\\nXIkLCx/I6xte/nTTLcI+hBJby1/DtksDanZryPOaRukfh+IpkF132oedYRb4gPGF\\nNF1EUjGjqwOrXEzQb/7bakagApTWGrLUMpJUEGhOTeWpF+xwWsCftSyOfwKBgQC3\\nkrw9UY17TfFoIAuEC70HWwTw9PqHd1R4CPKiGlN11vdt3vCI6jB/1dyX5KYiVdr+\\n/TD5eopalAlLMZNfFs0DWkWF3OV+3MTKM9Dy7JUJIln1bsd9TSPc3oXhHWcc+hsq\\nEtzKQ0ZKsBtEuWgOZcSdA16WlkzvyE4SsSijVh/XfQKBgFCGWIJZ+QFw+hFCNbpW\\nSKFpVeEQ49DjoiL1k0LjszOFLG6eI1X9MhELV0PgjosoYU4SUTgsnfQBUfxKlGvN\\nZoxgntmaI1fk1o86Zw7QLpG5t5RSDde+xscvS1nEDs12zyijw5Me3NG/ShJ4XpIn\\ntv20DKWvUIrJD2BhQNTdbWmx\\n-----END PRIVATE KEY-----\"\n}"
    },
    "changed": false
}

TASK [(1) FAST create application] ************************************************************************************************************************************************************************************************************************************************************
task path: /ansible/play-f5fast-issue-repro.yml:39
redirecting (type: connection) ansible.builtin.httpapi to ansible.netcommon.httpapi
Loading collection ansible.netcommon from /ansible/collections/ansible_collections/ansible/netcommon
<10.1.1.4> attempting to start connection
<10.1.1.4> using connection plugin ansible.netcommon.httpapi
Found ansible-connection at path /usr/local/bin/ansible-connection
<10.1.1.4> found existing local domain socket, using it!
<10.1.1.4> updating play_context for connection
<10.1.1.4> 
<10.1.1.4> local domain socket path is /ansible/.ansible/pc/2db776cd4c
<10.1.1.4> Using network group action f5networks.f5_bigip.bigip for f5networks.f5_bigip.bigip_fast_application
<{{ provider.server }}> ANSIBLE_NETWORK_IMPORT_MODULES: enabled
<{{ provider.server }}> ANSIBLE_NETWORK_IMPORT_MODULES: found f5networks.f5_bigip.bigip_fast_application  at /ansible/collections/ansible_collections/f5networks/f5_bigip/plugins/modules/bigip_fast_application.py
<{{ provider.server }}> ANSIBLE_NETWORK_IMPORT_MODULES: running f5networks.f5_bigip.bigip_fast_application
<{{ provider.server }}> ANSIBLE_NETWORK_IMPORT_MODULES: complete
ok: [bigip] => {
    "application": "MyAppName",
    "changed": null,
    "content": {
        "WAF_policy_path": "/Common/this_waf_policy_does_not_exist",
        "application_name": "MyAppName",
        "certificate": "-----BEGIN CERTIFICATE-----\nMIIDrjCCApagAwIBAgIEGFse8zANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMC\nVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMRIwEAYDVQQKEwlNeUNv\nbXBhbnkxCzAJBgNVBAsTAklUMR4wHAYDVQQDExVsb2NhbGhvc3QubG9jYWxkb21h\naW4xKTAnBgkqhkiG9w0BCQEWGnJvb3RAbG9jYWxob3N0LmxvY2FsZG9tYWluMB4X\nDTIyMTIxMzE4NTQ0M1oXDTMyMTIxMDE4NTQ0M1owgZgxCzAJBgNVBAYTAlVTMQsw\nCQYDVQQIEwJXQTEQMA4GA1UEBxMHU2VhdHRsZTESMBAGA1UEChMJTXlDb21wYW55\nMQswCQYDVQQLEwJJVDEeMBwGA1UEAxMVbG9jYWxob3N0LmxvY2FsZG9tYWluMSkw\nJwYJKoZIhvcNAQkBFhpyb290QGxvY2FsaG9zdC5sb2NhbGRvbWFpbjCCASIwDQYJ\nKoZIhvcNAQEBBQADggEPADCCAQoCggEBALKLQBSjlGxbtuYPDPW+HCPt7+RjoUGC\nab0bGdEtOUxfCDnKKxT2GBjYrfvH7S/xtbdaI1cJbA0qPEhQljNyPudPoSunQ7D2\nl3ka/27jL/FKHL+/svkgLG4dlMVWpDhYKq8DaYdb6iI5qZFUfy95hn2QjkXm0Vrn\nmo7PiDPbnTVTGU6CsPQzmANdN0J5CR6l30ORMXKBwc9mYLUxHHyHI5HSIKrsrj9B\n4PNKDK7OJaYb0d21uuVNyZ281jbnKJs2W54YbhTGVGKcKRGR9Rbfd4LzcDgBtIt0\nZSPfrPu82s3CydqfqctZbg22NE2CUVzyK9yWM0pghghOUPSI2cIrwEsCAwEAATAN\nBgkqhkiG9w0BAQsFAAOCAQEAGdDW+kZde88JarcMfA/I78eDn9j4szGJn6gvCsHZ\niLJsugOxj6udrNXKn6NuekNoQXMae0kXVqVmGZouX8lzrn0I6+bR1TEkBmc+v9bF\nLXk096iUBaKPSAkoNOFeHQE/XRu4kk6TqedMneZvs2/725um+9kkPZde4luwCfk6\nqrki7MtAL9xhuxUVFpISjvsBQRwCg0ckQ1YvKYf+s7i9/4fBZB25biGzmVK7cEPx\nAPVjOHNlYwHCa9bp7SX4tuUrqGyZ8ib3OHxFdXVZzBKsNe02zldpDQ7ZyPlUzhhh\nwl3HfQXADQYtf5rIwsFxgrSDIS2U7oD39poucodCEzc2PQ==\n-----END CERTIFICATE-----",
        "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCyi0AUo5RsW7bm\nDwz1vhwj7e/kY6FBgmm9GxnRLTlMXwg5yisU9hgY2K37x+0v8bW3WiNXCWwNKjxI\nUJYzcj7nT6Erp0Ow9pd5Gv9u4y/xShy/v7L5ICxuHZTFVqQ4WCqvA2mHW+oiOamR\nVH8veYZ9kI5F5tFa55qOz4gz2501UxlOgrD0M5gDXTdCeQkepd9DkTFygcHPZmC1\nMRx8hyOR0iCq7K4/QeDzSgyuziWmG9HdtbrlTcmdvNY25yibNlueGG4UxlRinCkR\nkfUW33eC83A4AbSLdGUj36z7vNrNwsnan6nLWW4NtjRNglFc8ivcljNKYIYITlD0\niNnCK8BLAgMBAAECggEAMvgnufycwXZJN1HynDDCbcteIXADt+TX9MFI1Hs5kUDL\n41uAgwJiDK3GtUr0viwdeRNFZXJuIy/8d5Rx3Ivvwy7rTr/4RguPYGZBp1E5/YLv\nxBmgqRfzNxhAwTkjtmYNAVtTA+5MX6rganmZuV7S8wOSaggjmfTmHYDHXC6EqZTs\n+BIALRKLYwHzriKM04zDCDcPzG9Wt3ZDLXBBAzWwtMOCDJXRE0PSQXl8C5p6IiLY\najRXXHVqrF4Q10rid6kJKsNKuXMOvoeguAeaPJlY0oOco7hUNmJjf78qKWBM7VuK\nwu0O0FPbRl/oVs9eLzBfEn2lOcjhF9LpyagM4k1fKQKBgQD48OFyk5USjfnmzlQk\nl9wb3/cYyZKpKVIDQ/2qtfRnuYKtSqmayyQwLaxlzbOKKvBenwsTF259Onz0Pt0/\nmJsFWv3DMJDh3QyCrTvoZnnyw3PT3NUN7cGiQQi0SH5M9mvF8gIRZEyG8LmPKJkE\niDW6PC95Y/N1zyaI3tOTnNDrtwKBgQC3m1d80Ce+kJzsz6CP/XD28qi5OeD5HJAp\njzPSRv6dGy1vyiwXv76nN4vQwzZqUo7g+9rJEiec0iDmpMelPkXHJteLZWi3QiN+\nfwqcMj4eYrFVZ2hdkKZhKI99zbAQ8fKJmfB6dVOYjfQOUUpF/tT17ozaAkGe5xHI\nwtuz7354DQKBgQCXIz/tHTb7feFERO6HDP/gmJhfnzoApAqb2vKuaywIsXNqHJNe\nXIkLCx/I6xte/nTTLcI+hBJby1/DtksDanZryPOaRukfh+IpkF132oedYRb4gPGF\nNF1EUjGjqwOrXEzQb/7bakagApTWGrLUMpJUEGhOTeWpF+xwWsCftSyOfwKBgQC3\nkrw9UY17TfFoIAuEC70HWwTw9PqHd1R4CPKiGlN11vdt3vCI6jB/1dyX5KYiVdr+\n/TD5eopalAlLMZNfFs0DWkWF3OV+3MTKM9Dy7JUJIln1bsd9TSPc3oXhHWcc+hsq\nEtzKQ0ZKsBtEuWgOZcSdA16WlkzvyE4SsSijVh/XfQKBgFCGWIJZ+QFw+hFCNbpW\nSKFpVeEQ49DjoiL1k0LjszOFLG6eI1X9MhELV0PgjosoYU4SUTgsnfQBUfxKlGvN\nZoxgntmaI1fk1o86Zw7QLpG5t5RSDde+xscvS1nEDs12zyijw5Me3NG/ShJ4XpIn\ntv20DKWvUIrJD2BhQNTdbWmx\n-----END PRIVATE KEY-----",
        "server_address": [
            "192.0.2.180"
        ],
        "server_port": 80,
        "tenant_name": "MyTenantName",
        "virtual_address": "192.0.2.202",
        "virtual_port": 443
    },
    "invocation": {
        "module_args": {
            "application": "MyAppName",
            "content": {
                "WAF_policy_path": "/Common/this_waf_policy_does_not_exist",
                "application_name": "MyAppName",
                "certificate": "-----BEGIN CERTIFICATE-----\nMIIDrjCCApagAwIBAgIEGFse8zANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMC\nVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMRIwEAYDVQQKEwlNeUNv\nbXBhbnkxCzAJBgNVBAsTAklUMR4wHAYDVQQDExVsb2NhbGhvc3QubG9jYWxkb21h\naW4xKTAnBgkqhkiG9w0BCQEWGnJvb3RAbG9jYWxob3N0LmxvY2FsZG9tYWluMB4X\nDTIyMTIxMzE4NTQ0M1oXDTMyMTIxMDE4NTQ0M1owgZgxCzAJBgNVBAYTAlVTMQsw\nCQYDVQQIEwJXQTEQMA4GA1UEBxMHU2VhdHRsZTESMBAGA1UEChMJTXlDb21wYW55\nMQswCQYDVQQLEwJJVDEeMBwGA1UEAxMVbG9jYWxob3N0LmxvY2FsZG9tYWluMSkw\nJwYJKoZIhvcNAQkBFhpyb290QGxvY2FsaG9zdC5sb2NhbGRvbWFpbjCCASIwDQYJ\nKoZIhvcNAQEBBQADggEPADCCAQoCggEBALKLQBSjlGxbtuYPDPW+HCPt7+RjoUGC\nab0bGdEtOUxfCDnKKxT2GBjYrfvH7S/xtbdaI1cJbA0qPEhQljNyPudPoSunQ7D2\nl3ka/27jL/FKHL+/svkgLG4dlMVWpDhYKq8DaYdb6iI5qZFUfy95hn2QjkXm0Vrn\nmo7PiDPbnTVTGU6CsPQzmANdN0J5CR6l30ORMXKBwc9mYLUxHHyHI5HSIKrsrj9B\n4PNKDK7OJaYb0d21uuVNyZ281jbnKJs2W54YbhTGVGKcKRGR9Rbfd4LzcDgBtIt0\nZSPfrPu82s3CydqfqctZbg22NE2CUVzyK9yWM0pghghOUPSI2cIrwEsCAwEAATAN\nBgkqhkiG9w0BAQsFAAOCAQEAGdDW+kZde88JarcMfA/I78eDn9j4szGJn6gvCsHZ\niLJsugOxj6udrNXKn6NuekNoQXMae0kXVqVmGZouX8lzrn0I6+bR1TEkBmc+v9bF\nLXk096iUBaKPSAkoNOFeHQE/XRu4kk6TqedMneZvs2/725um+9kkPZde4luwCfk6\nqrki7MtAL9xhuxUVFpISjvsBQRwCg0ckQ1YvKYf+s7i9/4fBZB25biGzmVK7cEPx\nAPVjOHNlYwHCa9bp7SX4tuUrqGyZ8ib3OHxFdXVZzBKsNe02zldpDQ7ZyPlUzhhh\nwl3HfQXADQYtf5rIwsFxgrSDIS2U7oD39poucodCEzc2PQ==\n-----END CERTIFICATE-----",
                "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCyi0AUo5RsW7bm\nDwz1vhwj7e/kY6FBgmm9GxnRLTlMXwg5yisU9hgY2K37x+0v8bW3WiNXCWwNKjxI\nUJYzcj7nT6Erp0Ow9pd5Gv9u4y/xShy/v7L5ICxuHZTFVqQ4WCqvA2mHW+oiOamR\nVH8veYZ9kI5F5tFa55qOz4gz2501UxlOgrD0M5gDXTdCeQkepd9DkTFygcHPZmC1\nMRx8hyOR0iCq7K4/QeDzSgyuziWmG9HdtbrlTcmdvNY25yibNlueGG4UxlRinCkR\nkfUW33eC83A4AbSLdGUj36z7vNrNwsnan6nLWW4NtjRNglFc8ivcljNKYIYITlD0\niNnCK8BLAgMBAAECggEAMvgnufycwXZJN1HynDDCbcteIXADt+TX9MFI1Hs5kUDL\n41uAgwJiDK3GtUr0viwdeRNFZXJuIy/8d5Rx3Ivvwy7rTr/4RguPYGZBp1E5/YLv\nxBmgqRfzNxhAwTkjtmYNAVtTA+5MX6rganmZuV7S8wOSaggjmfTmHYDHXC6EqZTs\n+BIALRKLYwHzriKM04zDCDcPzG9Wt3ZDLXBBAzWwtMOCDJXRE0PSQXl8C5p6IiLY\najRXXHVqrF4Q10rid6kJKsNKuXMOvoeguAeaPJlY0oOco7hUNmJjf78qKWBM7VuK\nwu0O0FPbRl/oVs9eLzBfEn2lOcjhF9LpyagM4k1fKQKBgQD48OFyk5USjfnmzlQk\nl9wb3/cYyZKpKVIDQ/2qtfRnuYKtSqmayyQwLaxlzbOKKvBenwsTF259Onz0Pt0/\nmJsFWv3DMJDh3QyCrTvoZnnyw3PT3NUN7cGiQQi0SH5M9mvF8gIRZEyG8LmPKJkE\niDW6PC95Y/N1zyaI3tOTnNDrtwKBgQC3m1d80Ce+kJzsz6CP/XD28qi5OeD5HJAp\njzPSRv6dGy1vyiwXv76nN4vQwzZqUo7g+9rJEiec0iDmpMelPkXHJteLZWi3QiN+\nfwqcMj4eYrFVZ2hdkKZhKI99zbAQ8fKJmfB6dVOYjfQOUUpF/tT17ozaAkGe5xHI\nwtuz7354DQKBgQCXIz/tHTb7feFERO6HDP/gmJhfnzoApAqb2vKuaywIsXNqHJNe\nXIkLCx/I6xte/nTTLcI+hBJby1/DtksDanZryPOaRukfh+IpkF132oedYRb4gPGF\nNF1EUjGjqwOrXEzQb/7bakagApTWGrLUMpJUEGhOTeWpF+xwWsCftSyOfwKBgQC3\nkrw9UY17TfFoIAuEC70HWwTw9PqHd1R4CPKiGlN11vdt3vCI6jB/1dyX5KYiVdr+\n/TD5eopalAlLMZNfFs0DWkWF3OV+3MTKM9Dy7JUJIln1bsd9TSPc3oXhHWcc+hsq\nEtzKQ0ZKsBtEuWgOZcSdA16WlkzvyE4SsSijVh/XfQKBgFCGWIJZ+QFw+hFCNbpW\nSKFpVeEQ49DjoiL1k0LjszOFLG6eI1X9MhELV0PgjosoYU4SUTgsnfQBUfxKlGvN\nZoxgntmaI1fk1o86Zw7QLpG5t5RSDde+xscvS1nEDs12zyijw5Me3NG/ShJ4XpIn\ntv20DKWvUIrJD2BhQNTdbWmx\n-----END PRIVATE KEY-----",
                "server_address": [
                    "192.0.2.180"
                ],
                "server_port": 80,
                "tenant_name": "MyTenantName",
                "virtual_address": "192.0.2.202",
                "virtual_port": 443
            },
            "state": "create",
            "template": "examples/simple_waf",
            "tenant": "MyTenantName",
            "timeout": 300
        }
    },
    "template": "examples/simple_waf",
    "tenant": "MyTenantName"
}

TASK [(2) FAST response debug] ****************************************************************************************************************************************************************************************************************************************************************
task path: /ansible/play-f5fast-issue-repro.yml:48
redirecting (type: connection) ansible.builtin.httpapi to ansible.netcommon.httpapi
Loading collection ansible.netcommon from /ansible/collections/ansible_collections/ansible/netcommon
<10.1.1.4> attempting to start connection
<10.1.1.4> using connection plugin ansible.netcommon.httpapi
Found ansible-connection at path /usr/local/bin/ansible-connection
<10.1.1.4> found existing local domain socket, using it!
<10.1.1.4> ESTABLISH HTTP(S) CONNECTFOR USER: admin TO https://10.1.1.4:443
<10.1.1.4> updating play_context for connection
<10.1.1.4> 
<10.1.1.4> local domain socket path is /ansible/.ansible/pc/2db776cd4c
ok: [bigip] => {
    "f5_fast_response": {
        "application": "MyAppName",
        "changed": null,
        "content": {
            "WAF_policy_path": "/Common/this_waf_policy_does_not_exist",
            "application_name": "MyAppName",
            "certificate": "-----BEGIN CERTIFICATE-----\nMIIDrjCCApagAwIBAgIEGFse8zANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMC\nVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMRIwEAYDVQQKEwlNeUNv\nbXBhbnkxCzAJBgNVBAsTAklUMR4wHAYDVQQDExVsb2NhbGhvc3QubG9jYWxkb21h\naW4xKTAnBgkqhkiG9w0BCQEWGnJvb3RAbG9jYWxob3N0LmxvY2FsZG9tYWluMB4X\nDTIyMTIxMzE4NTQ0M1oXDTMyMTIxMDE4NTQ0M1owgZgxCzAJBgNVBAYTAlVTMQsw\nCQYDVQQIEwJXQTEQMA4GA1UEBxMHU2VhdHRsZTESMBAGA1UEChMJTXlDb21wYW55\nMQswCQYDVQQLEwJJVDEeMBwGA1UEAxMVbG9jYWxob3N0LmxvY2FsZG9tYWluMSkw\nJwYJKoZIhvcNAQkBFhpyb290QGxvY2FsaG9zdC5sb2NhbGRvbWFpbjCCASIwDQYJ\nKoZIhvcNAQEBBQADggEPADCCAQoCggEBALKLQBSjlGxbtuYPDPW+HCPt7+RjoUGC\nab0bGdEtOUxfCDnKKxT2GBjYrfvH7S/xtbdaI1cJbA0qPEhQljNyPudPoSunQ7D2\nl3ka/27jL/FKHL+/svkgLG4dlMVWpDhYKq8DaYdb6iI5qZFUfy95hn2QjkXm0Vrn\nmo7PiDPbnTVTGU6CsPQzmANdN0J5CR6l30ORMXKBwc9mYLUxHHyHI5HSIKrsrj9B\n4PNKDK7OJaYb0d21uuVNyZ281jbnKJs2W54YbhTGVGKcKRGR9Rbfd4LzcDgBtIt0\nZSPfrPu82s3CydqfqctZbg22NE2CUVzyK9yWM0pghghOUPSI2cIrwEsCAwEAATAN\nBgkqhkiG9w0BAQsFAAOCAQEAGdDW+kZde88JarcMfA/I78eDn9j4szGJn6gvCsHZ\niLJsugOxj6udrNXKn6NuekNoQXMae0kXVqVmGZouX8lzrn0I6+bR1TEkBmc+v9bF\nLXk096iUBaKPSAkoNOFeHQE/XRu4kk6TqedMneZvs2/725um+9kkPZde4luwCfk6\nqrki7MtAL9xhuxUVFpISjvsBQRwCg0ckQ1YvKYf+s7i9/4fBZB25biGzmVK7cEPx\nAPVjOHNlYwHCa9bp7SX4tuUrqGyZ8ib3OHxFdXVZzBKsNe02zldpDQ7ZyPlUzhhh\nwl3HfQXADQYtf5rIwsFxgrSDIS2U7oD39poucodCEzc2PQ==\n-----END CERTIFICATE-----",
            "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCyi0AUo5RsW7bm\nDwz1vhwj7e/kY6FBgmm9GxnRLTlMXwg5yisU9hgY2K37x+0v8bW3WiNXCWwNKjxI\nUJYzcj7nT6Erp0Ow9pd5Gv9u4y/xShy/v7L5ICxuHZTFVqQ4WCqvA2mHW+oiOamR\nVH8veYZ9kI5F5tFa55qOz4gz2501UxlOgrD0M5gDXTdCeQkepd9DkTFygcHPZmC1\nMRx8hyOR0iCq7K4/QeDzSgyuziWmG9HdtbrlTcmdvNY25yibNlueGG4UxlRinCkR\nkfUW33eC83A4AbSLdGUj36z7vNrNwsnan6nLWW4NtjRNglFc8ivcljNKYIYITlD0\niNnCK8BLAgMBAAECggEAMvgnufycwXZJN1HynDDCbcteIXADt+TX9MFI1Hs5kUDL\n41uAgwJiDK3GtUr0viwdeRNFZXJuIy/8d5Rx3Ivvwy7rTr/4RguPYGZBp1E5/YLv\nxBmgqRfzNxhAwTkjtmYNAVtTA+5MX6rganmZuV7S8wOSaggjmfTmHYDHXC6EqZTs\n+BIALRKLYwHzriKM04zDCDcPzG9Wt3ZDLXBBAzWwtMOCDJXRE0PSQXl8C5p6IiLY\najRXXHVqrF4Q10rid6kJKsNKuXMOvoeguAeaPJlY0oOco7hUNmJjf78qKWBM7VuK\nwu0O0FPbRl/oVs9eLzBfEn2lOcjhF9LpyagM4k1fKQKBgQD48OFyk5USjfnmzlQk\nl9wb3/cYyZKpKVIDQ/2qtfRnuYKtSqmayyQwLaxlzbOKKvBenwsTF259Onz0Pt0/\nmJsFWv3DMJDh3QyCrTvoZnnyw3PT3NUN7cGiQQi0SH5M9mvF8gIRZEyG8LmPKJkE\niDW6PC95Y/N1zyaI3tOTnNDrtwKBgQC3m1d80Ce+kJzsz6CP/XD28qi5OeD5HJAp\njzPSRv6dGy1vyiwXv76nN4vQwzZqUo7g+9rJEiec0iDmpMelPkXHJteLZWi3QiN+\nfwqcMj4eYrFVZ2hdkKZhKI99zbAQ8fKJmfB6dVOYjfQOUUpF/tT17ozaAkGe5xHI\nwtuz7354DQKBgQCXIz/tHTb7feFERO6HDP/gmJhfnzoApAqb2vKuaywIsXNqHJNe\nXIkLCx/I6xte/nTTLcI+hBJby1/DtksDanZryPOaRukfh+IpkF132oedYRb4gPGF\nNF1EUjGjqwOrXEzQb/7bakagApTWGrLUMpJUEGhOTeWpF+xwWsCftSyOfwKBgQC3\nkrw9UY17TfFoIAuEC70HWwTw9PqHd1R4CPKiGlN11vdt3vCI6jB/1dyX5KYiVdr+\n/TD5eopalAlLMZNfFs0DWkWF3OV+3MTKM9Dy7JUJIln1bsd9TSPc3oXhHWcc+hsq\nEtzKQ0ZKsBtEuWgOZcSdA16WlkzvyE4SsSijVh/XfQKBgFCGWIJZ+QFw+hFCNbpW\nSKFpVeEQ49DjoiL1k0LjszOFLG6eI1X9MhELV0PgjosoYU4SUTgsnfQBUfxKlGvN\nZoxgntmaI1fk1o86Zw7QLpG5t5RSDde+xscvS1nEDs12zyijw5Me3NG/ShJ4XpIn\ntv20DKWvUIrJD2BhQNTdbWmx\n-----END PRIVATE KEY-----",
            "server_address": [
                "192.0.2.180"
            ],
            "server_port": 80,
            "tenant_name": "MyTenantName",
            "virtual_address": "192.0.2.202",
            "virtual_port": 443
        },
        "failed": false,
        "template": "examples/simple_waf",
        "tenant": "MyTenantName"
    }
}

PLAY RECAP ************************************************************************************************************************************************************************************************************************************************************************************
bigip                      : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

Logs on the BIG-IP:

==> /var/log/restnoded/restnoded.log <==
Tue, 03 Jan 2023 19:59:10 GMT - warning: [appsvcs] {"message":"unable to digest declaration. Error: Unable to find specified WAF policy /Common/this_waf_policy_does_not_exist for /MyTenantName/MyAppName/serviceMain/policyWAF","level":"warning"}

...

Tue, 03 Jan 2023 19:59:11 GMT - info: FAST Worker [283]: Exiting gathering a list of tasks from the driver
Tue, 03 Jan 2023 19:59:11 GMT - fine: FAST Worker [283]: gathering a list of tasks from the driver took 1188ms to complete
Tue, 03 Jan 2023 19:59:11 GMT - fine: FAST Worker [283]: sending response after 1190ms
{
  "method": "Get",
  "path": "/shared/fast/tasks/6fa5ba37-8b4b-4ba8-873d-4c197c6aaad9",
  "status": 200
}

Checking the actual task on the BIG-IP provides the relevant details:

# restcurl -s -u admin: https://localhost/mgmt/shared/fast/tasks/6fa5ba37-8b4b-4ba8-873d-4c197c6aaad9
{
  "id": "6fa5ba37-8b4b-4ba8-873d-4c197c6aaad9",
  "code": 422,
  "message": "Unable to find specified WAF policy /Common/this_waf_policy_does_not_exist for /MyTenantName/MyAppName/serviceMain/policyWAF",
  "name": "",
  "parameters": {},
  "tenant": "MyTenantName",
  "application": "MyAppName",
  "operation": "create",
  "timestamp": "",
  "host": "localhost",
  "_links": {
    "self": "/mgmt/shared/fast/tasks/6fa5ba37-8b4b-4ba8-873d-4c197c6aaad9"
  }
}

f5networks.f5_bigip.bigip_fast_application is expected to pickup the error or (at least) provide the task id (6fa5ba37-8b4b-4ba8-873d-4c197c6aaad9) to check for the status manually.

simonkowallik commented 1 year ago

This issue is related / similar to #31

eos500n2000 commented 1 year ago

I sent the case to PE, Will keep you posted.

simonkowallik commented 1 year ago

Thanks, this is probably the best place in the code to deal with errors in the task. It seems that any task with a non 2xx or 0 code should be treated as an error.

https://github.com/F5Networks/f5-ansible-bigip/blob/976d50a8b7a93217f192316fa1c4fee0a8f214e2/ansible_collections/f5networks/f5_bigip/plugins/modules/bigip_fast_application.py#L362-L364

KrithikaChidambaram commented 1 year ago

Hi, tracking this internally at INFRAANO-1030, thanks!

wojtek0806 commented 1 year ago

fixed in 1.13.0