maxhoesel-ansible/ansible-collection-smallstep

"Cannot recover from stack overflow."

strarsis opened this issue · 3 comments

When applying this ansible role a python error occurs:

setup_smallstep (v0.4.7) was installed successfully
    localca: Running ansible-playbook...
Fatal Python error: Cannot recover from stack overflow.
Python runtime state: initialized

Current thread 0x00007fdbb2742740 (most recent call first):
  File "<frozen importlib._bootstrap>", line 174 in _get_module_lock
  File "<frozen importlib._bootstrap>", line 148 in __enter__
  File "<frozen importlib._bootstrap>", line 988 in _find_and_load
  File "<frozen importlib._bootstrap>", line 1014 in _gcd_import
  File "<frozen importlib._bootstrap>", line 219 in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 961 in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 991 in _find_and_load
  File "<frozen importlib._bootstrap>", line 1014 in _gcd_import
  File "<frozen importlib._bootstrap>", line 219 in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 961 in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 991 in _find_and_load
  File "<frozen importlib._bootstrap>", line 1014 in _gcd_import
  File "/usr/lib/python3.8/importlib/__init__.py", line 127 in import_module
  File "/usr/local/lib/python3.8/dist-packages/ansible/utils/collection_loader.py", line 512 in get_collection_role_path
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/definition.py", line 158 in _load_role_path
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/definition.py", line 94 in preprocess_data
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/base.py", line 222 in load_data
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/include.py", line 60 in load
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/helpers.py", line 390 in load_list_of_roles
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/metadata.py", line 105 in _load_dependencies
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/base.py", line 235 in load_data
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/metadata.py", line 59 in load
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 223 in _load_role_data
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 172 in load
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 308 in _load_dependencies
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 224 in _load_role_data
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 172 in load
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 308 in _load_dependencies
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 224 in _load_role_data
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 172 in load
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 308 in _load_dependencies
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 224 in _load_role_data
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 172 in load
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 308 in _load_dependencies
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 224 in _load_role_data
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 172 in load
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 308 in _load_dependencies
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 224 in _load_role_data
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 172 in load
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 308 in _load_dependencies
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 224 in _load_role_data
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 172 in load
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 308 in _load_dependencies
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 224 in _load_role_data
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 172 in load
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 308 in _load_dependencies
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 224 in _load_role_data
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 172 in load
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 308 in _load_dependencies
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 224 in _load_role_data
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 172 in load
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 308 in _load_dependencies
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 224 in _load_role_data
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 172 in load
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 308 in _load_dependencies
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 224 in _load_role_data
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 172 in load
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 308 in _load_dependencies
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 224 in _load_role_data
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 172 in load
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 308 in _load_dependencies
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 224 in _load_role_data
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 172 in load
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 308 in _load_dependencies
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 224 in _load_role_data
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 172 in load
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 308 in _load_dependencies
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 224 in _load_role_data
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 172 in load
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 308 in _load_dependencies
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 224 in _load_role_data
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 172 in load
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 308 in _load_dependencies
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 224 in _load_role_data
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 172 in load
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 308 in _load_dependencies
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 224 in _load_role_data
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 172 in load
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 308 in _load_dependencies
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 224 in _load_role_data
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 172 in load
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 308 in _load_dependencies
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 224 in _load_role_data
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 172 in load
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 308 in _load_dependencies
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 224 in _load_role_data
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 172 in load
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 308 in _load_dependencies
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 224 in _load_role_data
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 172 in load
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 308 in _load_dependencies
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 224 in _load_role_data
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 172 in load
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 308 in _load_dependencies
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 224 in _load_role_data
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 172 in load
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 308 in _load_dependencies
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 224 in _load_role_data
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 172 in load
  File "/usr/local/lib/python3.8/dist-packages/ansible/playbook/role/__init__.py", line 308 in _load_dependencies
  ...
Ansible failed to complete successfully. Any error output should be
visible above. Please fix these errors and try again.

System is CentOS 7.x.

Apparently this happens when this role is also explicitly added using roles (recursive loop?).

Hm, what role are you calling specifically? I can see setup_smallstep mentioned in the log - that's an integration target used for testing the collection modules. Not sure why ansible is loading that at all here.

Could you maybe share the playbook where you are calling the role? This does look like a recursive loop to me, but I'm not sure why it's happening (and why it only happens with the static roles: import).

Yes, this is caused by including the role and also including it in a task - which results in this error.

- hosts: localca
  become: yes

  roles:
    # triggers the error:
    - maxhoesel.smallstep.step_ca

  tasks:

    # Install and initialize the CA server.
    # There are a lot of configuration options, see the step_ca README for details
    - name: Install step-ca
      include_role:
        name: maxhoesel.smallstep.step_ca
      vars:
        step_ca_name: Test
        step_ca_root_password: "test"
        step_ca_intermediate_password: "test"

    # The CA root cert fingerprint is used by clients to verify the authenticity of your CA.
    # You can save the output of this task and then pass it on to any client that you want to trust the CA.
    - name: Get root CA fingerprint
      command: 'step-cli certificate fingerprint /etc/step-ca/certs/root_ca.crt'
      register: root_ca_fp
    - name: Show root CA fingerprint
      debug:
        msg: "Fingerprint of root cert: {{ root_ca_fp.stdout }}"