kubernetes.core icon indicating copy to clipboard operation
kubernetes.core copied to clipboard

query('kubernetes.core.k8s', kind='Secret', xxx) Does Not Return Results Inside Loop

Open bellds opened this issue 2 years ago • 7 comments

SUMMARY
ISSUE TYPE
  • Bug Report
COMPONENT NAME

Ansible Collection's query/lookup

ANSIBLE VERSION
ansible [core 2.13.4]
  config file = None
  configured module search path = ['/Users/bellds/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/Cellar/ansible/6.4.0/libexec/lib/python3.10/site-packages/ansible
  ansible collection location = /Users/bellds/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/local/bin/ansible
  python version = 3.10.7 (main, Sep 15 2022, 01:51:29) [Clang 14.0.0 (clang-1400.0.29.102)]
  jinja version = 3.1.2
  libyaml = True
COLLECTION VERSION
bellds@bellds ~ % ansible-galaxy collection list kubernetes.core

# /Users/bellds/.ansible/collections/ansible_collections
Collection      Version
--------------- -------
kubernetes.core 2.3.2

# /usr/local/Cellar/ansible/6.4.0/libexec/lib/python3.10/site-packages/ansible_collections
Collection      Version
--------------- -------
kubernetes.core 2.3.2
CONFIGURATION

Nothing printed out

bellds@bellds ~ % ansible-config dump --only-changed
bellds@bellds ~ %
OS / ENVIRONMENT

macOS Montegrey

STEPS TO REPRODUCE

The first query in the block never succeeds (e.g. never find the created OCP Secret). I can make the loop retry 100 times and the query will not find the resource. However, if I add a sleep and then do the query again then query passes on the first execution.

- name: Wait for and Get ftm-ssl-cert-secret-db2u to be Provisioned
    block:
      # For some reason a loop of a hundred will fail but we loop some and then sleep and try again the query will pass.
      - name: 1st Try - Query for ftm-ssl-cert-secret-db2u Secret
        set_fact:
          query_ftm_ssl_cert_secret_db2u: "{{ query('kubernetes.core.k8s', kind='Secret', namespace=k8s_namespace, resource_name='ftm-ssl-cert-secret-db2u') }}"
        until: query_ftm_ssl_cert_secret_db2u | length > 0
        retries: 20
        delay: 10
        ignore_errors: yes
      
      - name: Work around for Query Not Finding Secret
        command: "sleep 10"
        when: query_ftm_ssl_cert_secret_db2u is not defined

      - name: 2nd Try - Query for ftm-ssl-cert-secret-db2u Secret
        when: query_ftm_ssl_cert_secret_db2u is not defined
        set_fact:
          query_ftm_ssl_cert_secret_db2u: "{{ query('kubernetes.core.k8s', kind='Secret', namespace=k8s_namespace, resource_name='ftm-ssl-cert-secret-db2u') }}"
        until: query_ftm_ssl_cert_secret_db2u | length > 0
        retries: 20
        delay: 10

EXPECTED RESULTS

I would expect the query in the loop to find the resource (other kubernetes queries work inside loops). I have only seen the happen with Secrets, but not all Secrets.

ACTUAL RESULTS
TASK [1st Try - Query for ftm-ssl-cert-secret-db2u Secret] ***********************************************************************************************************************
task path: /Users/Shared/workspaces/ftm-v4/crc/ansible/playbooks/provisionFtmBaseSampleApps.yaml:42
FAILED - RETRYING: [localhost]: 1st Try - Query for ftm-ssl-cert-secret-db2u Secret (20 retries left).Result was: {
    "ansible_facts": {
        "query_ftm_ssl_cert_secret_db2u": []
    },
    "attempts": 1,
    "changed": false,
    "retries": 21
}
FAILED - RETRYING: [localhost]: 1st Try - Query for ftm-ssl-cert-secret-db2u Secret (19 retries left).Result was: {
    "ansible_facts": {
        "query_ftm_ssl_cert_secret_db2u": []
    },
    "attempts": 2,
    "changed": false,
    "retries": 21
}
FAILED - RETRYING: [localhost]: 1st Try - Query for ftm-ssl-cert-secret-db2u Secret (18 retries left).Result was: {
    "ansible_facts": {
        "query_ftm_ssl_cert_secret_db2u": []
    },
    "attempts": 3,
    "changed": false,
    "retries": 21
}
FAILED - RETRYING: [localhost]: 1st Try - Query for ftm-ssl-cert-secret-db2u Secret (17 retries left).Result was: {
    "ansible_facts": {
        "query_ftm_ssl_cert_secret_db2u": []
    },
    "attempts": 4,
    "changed": false,
    "retries": 21
}
FAILED - RETRYING: [localhost]: 1st Try - Query for ftm-ssl-cert-secret-db2u Secret (16 retries left).Result was: {
    "ansible_facts": {
        "query_ftm_ssl_cert_secret_db2u": []
    },
    "attempts": 5,
    "changed": false,
    "retries": 21
}
FAILED - RETRYING: [localhost]: 1st Try - Query for ftm-ssl-cert-secret-db2u Secret (15 retries left).Result was: {
    "ansible_facts": {
        "query_ftm_ssl_cert_secret_db2u": []
    },
    "attempts": 6,
    "changed": false,
    "retries": 21
}
FAILED - RETRYING: [localhost]: 1st Try - Query for ftm-ssl-cert-secret-db2u Secret (14 retries left).Result was: {
    "ansible_facts": {
        "query_ftm_ssl_cert_secret_db2u": []
    },
    "attempts": 7,
    "changed": false,
    "retries": 21
}
FAILED - RETRYING: [localhost]: 1st Try - Query for ftm-ssl-cert-secret-db2u Secret (13 retries left).Result was: {
    "ansible_facts": {
        "query_ftm_ssl_cert_secret_db2u": []
    },
    "attempts": 8,
    "changed": false,
    "retries": 21
}
FAILED - RETRYING: [localhost]: 1st Try - Query for ftm-ssl-cert-secret-db2u Secret (12 retries left).Result was: {
    "ansible_facts": {
        "query_ftm_ssl_cert_secret_db2u": []
    },
    "attempts": 9,
    "changed": false,
    "retries": 21
}
FAILED - RETRYING: [localhost]: 1st Try - Query for ftm-ssl-cert-secret-db2u Secret (11 retries left).Result was: {
    "ansible_facts": {
        "query_ftm_ssl_cert_secret_db2u": []
    },
    "attempts": 10,
    "changed": false,
    "retries": 21
}
FAILED - RETRYING: [localhost]: 1st Try - Query for ftm-ssl-cert-secret-db2u Secret (10 retries left).Result was: {
    "ansible_facts": {
        "query_ftm_ssl_cert_secret_db2u": []
    },
    "attempts": 11,
    "changed": false,
    "retries": 21
}
FAILED - RETRYING: [localhost]: 1st Try - Query for ftm-ssl-cert-secret-db2u Secret (9 retries left).Result was: {
    "ansible_facts": {
        "query_ftm_ssl_cert_secret_db2u": []
    },
    "attempts": 12,
    "changed": false,
    "retries": 21
}
FAILED - RETRYING: [localhost]: 1st Try - Query for ftm-ssl-cert-secret-db2u Secret (8 retries left).Result was: {
    "ansible_facts": {
        "query_ftm_ssl_cert_secret_db2u": []
    },
    "attempts": 13,
    "changed": false,
    "retries": 21
}
FAILED - RETRYING: [localhost]: 1st Try - Query for ftm-ssl-cert-secret-db2u Secret (7 retries left).Result was: {
    "ansible_facts": {
        "query_ftm_ssl_cert_secret_db2u": []
    },
    "attempts": 14,
    "changed": false,
    "retries": 21
}
FAILED - RETRYING: [localhost]: 1st Try - Query for ftm-ssl-cert-secret-db2u Secret (6 retries left).Result was: {
    "ansible_facts": {
        "query_ftm_ssl_cert_secret_db2u": []
    },
    "attempts": 15,
    "changed": false,
    "retries": 21
}
FAILED - RETRYING: [localhost]: 1st Try - Query for ftm-ssl-cert-secret-db2u Secret (5 retries left).Result was: {
    "ansible_facts": {
        "query_ftm_ssl_cert_secret_db2u": []
    },
    "attempts": 16,
    "changed": false,
    "retries": 21
}
FAILED - RETRYING: [localhost]: 1st Try - Query for ftm-ssl-cert-secret-db2u Secret (4 retries left).Result was: {
    "ansible_facts": {
        "query_ftm_ssl_cert_secret_db2u": []
    },
    "attempts": 17,
    "changed": false,
    "retries": 21
}
FAILED - RETRYING: [localhost]: 1st Try - Query for ftm-ssl-cert-secret-db2u Secret (3 retries left).Result was: {
    "ansible_facts": {
        "query_ftm_ssl_cert_secret_db2u": []
    },
    "attempts": 18,
    "changed": false,
    "retries": 21
}
FAILED - RETRYING: [localhost]: 1st Try - Query for ftm-ssl-cert-secret-db2u Secret (2 retries left).Result was: {
    "ansible_facts": {
        "query_ftm_ssl_cert_secret_db2u": []
    },
    "attempts": 19,
    "changed": false,
    "retries": 21
}
FAILED - RETRYING: [localhost]: 1st Try - Query for ftm-ssl-cert-secret-db2u Secret (1 retries left).Result was: {
    "ansible_facts": {
        "query_ftm_ssl_cert_secret_db2u": []
    },
    "attempts": 20,
    "changed": false,
    "retries": 21
}
fatal: [localhost]: FAILED! => {
    "ansible_facts": {
        "query_ftm_ssl_cert_secret_db2u": []
    },
    "attempts": 20,
    "changed": false
}
...ignoring
Read vars_file '../variables.yaml'

TASK [Work around for Query Not Finding Secret] **********************************************************************************************************************************
task path: /Users/Shared/workspaces/ftm-v4/crc/ansible/playbooks/provisionFtmBaseSampleApps.yaml:50
<127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: bellds
<127.0.0.1> EXEC /bin/sh -c 'echo ~bellds && sleep 0'
<127.0.0.1> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo /Users/bellds/.ansible/tmp `"&& mkdir "` echo /Users/bellds/.ansible/tmp/ansible-tmp-1666336698.10533-91645-144741221599467 `" && echo ansible-tmp-1666336698.10533-91645-144741221599467="` echo /Users/bellds/.ansible/tmp/ansible-tmp-1666336698.10533-91645-144741221599467 `" ) && sleep 0'
Using module file /usr/local/Cellar/ansible/6.4.0/libexec/lib/python3.10/site-packages/ansible/modules/command.py
<127.0.0.1> PUT /Users/bellds/.ansible/tmp/ansible-local-91307a4nfhq0k/tmph5al7bs8 TO /Users/bellds/.ansible/tmp/ansible-tmp-1666336698.10533-91645-144741221599467/AnsiballZ_command.py
<127.0.0.1> EXEC /bin/sh -c 'chmod u+x /Users/bellds/.ansible/tmp/ansible-tmp-1666336698.10533-91645-144741221599467/ /Users/bellds/.ansible/tmp/ansible-tmp-1666336698.10533-91645-144741221599467/AnsiballZ_command.py && sleep 0'
<127.0.0.1> EXEC /bin/sh -c '/usr/local/Cellar/ansible/6.4.0/libexec/bin/python3.10 /Users/bellds/.ansible/tmp/ansible-tmp-1666336698.10533-91645-144741221599467/AnsiballZ_command.py && sleep 0'
<127.0.0.1> EXEC /bin/sh -c 'rm -f -r /Users/bellds/.ansible/tmp/ansible-tmp-1666336698.10533-91645-144741221599467/ > /dev/null 2>&1 && sleep 0'
changed: [localhost] => {
    "changed": true,
    "cmd": [
        "sleep",
        "10"
    ],
    "delta": "0:00:10.014842",
    "end": "2022-10-21 08:18:28.481048",
    "invocation": {
        "module_args": {
            "_raw_params": "sleep 10",
            "_uses_shell": false,
            "argv": null,
            "chdir": null,
            "creates": null,
            "executable": null,
            "removes": null,
            "stdin": null,
            "stdin_add_newline": true,
            "strip_empty_ends": true,
            "warn": false
        }
    },
    "msg": "",
    "rc": 0,
    "start": "2022-10-21 08:18:18.466206",
    "stderr": "",
    "stderr_lines": [],
    "stdout": "",
    "stdout_lines": []
}
Read vars_file '../variables.yaml'

TASK [2nd Try - Query for ftm-ssl-cert-secret-db2u Secret] ***********************************************************************************************************************
task path: /Users/Shared/workspaces/ftm-v4/crc/ansible/playbooks/provisionFtmBaseSampleApps.yaml:54
ok: [localhost] => {
    "ansible_facts": {
        "query_ftm_ssl_cert_secret_db2u": [
            {
                "apiVersion": "v1",
                "data": {
                       REDACTED
                    },
                "type": "kubernetes.io/tls"
            }
        ]
    },
    "attempts": 1,
    "changed": false
}
Read vars_file '../variables.yaml'

TASK [Work around for Query Not Finding Secret] **********************************************************************************************************************************
task path: /Users/Shared/workspaces/ftm-v4/crc/ansible/playbooks/provisionFtmBaseSampleApps.yaml:63
skipping: [localhost] => {
    "changed": false,
    "skip_reason": "Conditional result was False"
}
Read vars_file '../variables.yaml'

TASK [3rd Try - Query for ftm-ssl-cert-secret-db2u Secret] ***********************************************************************************************************************
task path: /Users/Shared/workspaces/ftm-v4/crc/ansible/playbooks/provisionFtmBaseSampleApps.yaml:67
skipping: [localhost] => {
    "changed": false,
    "skip_reason": "Conditional result was False"
}
Read vars_file '../variables.yaml'

bellds avatar Oct 21 '22 07:10 bellds