f5-ansible icon indicating copy to clipboard operation
f5-ansible copied to clipboard

bigip_device_info with gather_subset: client-ssl-profiles does not report client SSL profile "option" details

Open aye-git-aye opened this issue 3 months ago • 3 comments

COMPONENT NAME

bigip_device_info

Environment

ANSIBLE VERSION
$ ansible --version
ansible [core 2.18.6]
  config file = None
  configured module search path = ['/home/user/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /home/user/.pyenv/versions/3.13.5/envs/virtualenv-python-3.13.5/lib/python3.13/site-packages/ansible
  ansible collection location = /home/user/.ansible/collections:/usr/share/ansible/collections
  executable location = /home/mwadm/.pyenv/versions/virtualenv-python-3.13.5/bin/ansible
  python version = 3.13.5 (main, Jul  3 2025, 10:51:45) [GCC 11.5.0 20240719 (Red Hat 11.5.0-5)] (/home/mwadm/.pyenv/versions/3.13.5/envs/virtualenv-python-3.13.5/bin/python)
  jinja version = 3.1.6
  libyaml = True
BIGIP VERSION
(tmos)# show sys version
Sys::Version
Main Package
  Product     BIG-IP
  Version     17.1.2.2
  Build       0.0.12
  Edition     Point Release 2
  Date        Wed Apr  2 04:30:11 PDT 2025
CONFIGURATION

N/A

OS / ENVIRONMENT

$ cat /etc/release NAME="Red Hat Enterprise Linux" VERSION="9.5 (Plow)" ID="rhel" ID_LIKE="fedora" VERSION_ID="9.5" PLATFORM_ID="platform:el9" PRETTY_NAME="Red Hat Enterprise Linux 9.5 (Plow)" ANSI_COLOR="0;31" LOGO="fedora-logo-icon" CPE_NAME="cpe:/o:redhat:enterprise_linux:9::baseos" HOME_URL="https://www.redhat.com/" DOCUMENTATION_URL="https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9" BUG_REPORT_URL="https://issues.redhat.com/"

REDHAT_BUGZILLA_PRODUCT="Red Hat Enterprise Linux 9" REDHAT_BUGZILLA_PRODUCT_VERSION=9.5 REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux" REDHAT_SUPPORT_PRODUCT_VERSION="9.5" Red Hat Enterprise Linux release 9.5 (Plow) Red Hat Enterprise Linux release 9.5 (Plow) cpe:/o:redhat:enterprise_linux:9::baseos

SUMMARY

I'm using the bigip_device_info module from the f5networks.f5_modules Ansible collection to gather information about server and client ssl profiles.

The module successfully returns data for client SSL profiles, but it does not include option-level details

However, when I query the same profile directly using iControl REST, the full details do appear including the options information as seen from example below. Sample command: curl -sku https:///mgmt/tm/ltm/profile/client-ssl/~~<profile name>

Sample options details included: "tmOptions":"{ dont-insert-empty-fragments no-tlsv1.1 single-dh-use no-sslv3 no-tlsv1 }"

This behavior is inconsistent with what I see for server-ssl-profiles, where the module does return details including the options.

STEPS TO REPRODUCE

Sample playbook below always demonstrates the missing options issue for client ssl profile.

---

- name: F5 Gather profile information
  hosts: "{{ variable_host }}"
  gather_facts: false

  tasks:
    - name: Gather F5 facts
      bigip_device_info:
        gather_subset:
          - server-ssl-profiles
          - client-ssl-profiles
        partition: partition1
        provider: "{{ provider }}"
      delegate_to: localhost
      register: facts_result

    - name: Display the gathered facts
      debug:
        var: facts_result
EXPECTED RESULTS

I'm expecting "options" details be displayed similar to the line below.

                "options": "{ dont-insert-empty-fragments no-tlsv1.1 single-dh-use no-sslv3 no-tlsv1 }",
ACTUAL RESULTS

The playbook runs fine but it's just missing "options" information for client ssl profile but it does exist for server ssl profile

SAMPLE OUTPUT FRAGMENT for client ssl profile where "options" info is missing.
            {
                "alert_timeout": 10,
                "allow_non_ssl": "no",
                "authenticate_depth": 9,
                "authenticate_frequency": "once",
                "cache_size": 262144,
                "cache_timeout": 3600,
                "certificate_file": "/partition1/cert_2025",
                "chain_file": "/partition1/Chain_2025",
                "ciphers": "none",
                "description": "none",
                "forward_proxy_ca_passphrase": "****",
                "forward_proxy_certificate_extension_include": [
                    "basic-constraints",
                    "subject-alternative-name"
                ],
                "forward_proxy_certificate_lifespan": 30,
                "forward_proxy_enabled": "no",
                "forward_proxy_lookup_by_ipaddr_port": "no",
                "full_path": "/partition1/sample_clientssl",
                "handshake_timeout": 10,
                "key_file": "/partition1/cert_2025",
                "modssl_methods": "no",
                "name": "sample_clientssl",
                "parent": "/partition1/parent_clientssl",
                "peer_certification_mode": "ignore",
                "profile_mode_enabled": "yes",
                "renegotiation": "yes",
                "renegotiation_maximum_record_delay": 0,
                "renegotiation_period": 0,
                "retain_certificate": "yes",
                "secure_renegotiation_mode": "require",
                "session_ticket": "no",
                "sni_default": "no",
                "sni_require": "no",
                "strict_resume": "no",
                "unclean_shutdown": "yes"
            },    

SAMPLE OUTPUT FRAGMENT for server ssl profile where "options" info is present.

                {
                    "alert_timeout": "indefinite",
                    "allow_expired_crl": "no",
                    "authenticate_depth": 9,
                    "authentication_frequency": "once",
                    "bypass_on_client_cert_fail": "no",
                    "bypass_on_handshake_alert": "no",
                    "c3d_cert_extension_includes": [
                        "basic-constraints",
                        "extended-key-usage",
                        "key-usage",
                        "subject-alternative-name"
                    ],
                    "c3d_cert_lifespan": 24,
                    "cache_size": 262144,
                    "cache_timeout": 3600,
                    "cert": "none",
                    "chain": "none",
                    "cipher_group": "/partition1/TLS12andTLS13",
                    "ciphers": "none",
                    "expire_cert_response_control": "drop",
                    "full_path": "/partition1/sample_serverssl",
                    "generic_alert": "yes",
                    "handshake_timeout": "10",
                    "key": "none",
                    "max_active_handshakes": "indefinite",
                    "mod_ssl_methods": "no",
                    "mode": "yes",
                    "name": "sample_serverssl",
                    "options": "{ dont-insert-empty-fragments no-tlsv1.1 single-dh-use no-sslv3 no-tlsv1 }",
                    "parent": "/Common/serverssl",
                    "peer_cert_mode": "ignore",
                    "proxy_ssl": "no",
                    "proxy_ssl_passthrough": "no",
                    "renegotiate_period": "indefinite",
                    "renegotiate_size": "indefinite",
                    "renegotiation": "yes",
                    "retain_certificate": "yes",
                    "secure_renegotiation": "require-strict",
                    "session_mirroring": "no",
                    "session_ticket": "no",
                    "sni_default": "no",
                    "sni_require": "no",
                    "ssl_c3d": "no",
                    "ssl_forward_proxy_bypass": "no",
                    "ssl_forward_proxy_enabled": "no",
                    "ssl_sign_hash": "any",
                    "strict_resume": "no",
                    "unclean_shutdown": "yes",
                    "untrusted_cert_response_control": "drop"
                },

aye-git-aye avatar Sep 15 '25 02:09 aye-git-aye

Thank you for reaching out, I have created an internal backlog INFRAANO-2027 to add options for client SSL profile.

sunitharonan avatar Oct 15 '25 18:10 sunitharonan

Hi, Is there a plan yet to apply the fix so we can finally have a reliable way to compare the client ssl profile configurations before and after a change is made using gathered facts? Thanks.

aye-git-aye avatar Dec 02 '25 05:12 aye-git-aye

Hi @aye-git-aye, it is in our backlog and waiting for it to be picked up in sprint. Please reach out to us [email protected] in order for us to understand and prioritize.

sunitharonan avatar Dec 02 '25 14:12 sunitharonan