ansible-collections / community.kubernetes

Kubernetes Collection for Ansible
https://galaxy.ansible.com/community/kubernetes
GNU General Public License v3.0
265 stars 106 forks source link

k8s_scale does not work for Statefulset #422

Closed tchellomello closed 3 years ago

tchellomello commented 3 years ago
SUMMARY

k8s_scale does not work for Statefulset

ISSUE TYPE
COMPONENT NAME

k8s_scale

ANSIBLE VERSION
ansible 2.9.20
CONFIGURATION
DEFAULT_GATHERING(env: ANSIBLE_GATHERING) = explicit
DEFAULT_MODULE_PATH(/etc/ansible/ansible.cfg) = ['/usr/share/ansible/openshift']
DEFAULT_ROLES_PATH(/etc/ansible/ansible.cfg) = ['/opt/ansible/roles']
OS / ENVIRONMENT

Fedora 34

STEPS TO REPRODUCE
  1. Run playbook below
---
- name: test
  hosts: localhost
  tasks:
    - name: Scale down PostgreSQL statefulset
      k8s_scale:
        api_version: apps/v1
        kind: StatefulSet
        name: awx-redeployit-a-postgres
        namespace: default
        replicas: 0
EXPECTED RESULTS

Statefulset to be scaled down

ACTUAL RESULTS

Error!

ansible-playbook  k8s.yaml -vvvv                                      15:59:38
ansible-playbook 2.9.20
  config file = /home/mdemello/.ansible.cfg
  configured module search path = ['/home/mdemello/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /home/mdemello/.virtualenvs/py39/lib64/python3.9/site-packages/ansible
  executable location = /home/mdemello/.virtualenvs/py39/bin/ansible-playbook
  python version = 3.9.4 (default, Apr  6 2021, 00:00:00) [GCC 11.0.1 20210324 (Red Hat 11.0.1-0)]
Using /home/mdemello/.ansible.cfg as config file
setting up inventory plugins
host_list declined parsing /home/mdemello/ansible/inventory as it did not pass its verify_file() method
script declined parsing /home/mdemello/ansible/inventory as it did not pass its verify_file() method
auto declined parsing /home/mdemello/ansible/inventory as it did not pass its verify_file() method
Set default localhost to localhost
Parsed /home/mdemello/ansible/inventory inventory source with ini plugin
Loading callback plugin default of type stdout, v2.0 from /home/mdemello/.virtualenvs/py39/lib64/python3.9/site-packages/ansible/plugins/callback/default.py
Skipping callback 'actionable', as we already have a stdout callback.
Skipping callback 'counter_enabled', as we already have a stdout callback.
Skipping callback 'debug', as we already have a stdout callback.
Skipping callback 'dense', as we already have a stdout callback.
Skipping callback 'dense', as we already have a stdout callback.
Skipping callback 'full_skip', as we already have a stdout callback.
Skipping callback 'json', as we already have a stdout callback.
Skipping callback 'minimal', as we already have a stdout callback.
Skipping callback 'null', as we already have a stdout callback.
Skipping callback 'oneline', as we already have a stdout callback.
Skipping callback 'selective', as we already have a stdout callback.
Skipping callback 'skippy', as we already have a stdout callback.
Skipping callback 'stderr', as we already have a stdout callback.
Skipping callback 'unixy', as we already have a stdout callback.
Skipping callback 'yaml', as we already have a stdout callback.
Loading callback plugin ansible.posix.profile_tasks of type aggregate, v2.0 from /home/mdemello/ansible/collections/ansible_collections/ansible/posix/plugins/callback/profile_tasks.py

PLAYBOOK: k8s.yaml ************************************************************************************************************************
Positional arguments: k8s.yaml
verbosity: 4
remote_user: root
connection: smart
timeout: 10
become: True
become_method: sudo
tags: ('all',)
inventory: ('/home/mdemello/ansible/inventory',)
forks: 50
1 plays in k8s.yaml

PLAY [test] *******************************************************************************************************************************
Tuesday 27 April 2021  16:02:43 -0400 (0:00:00.013)       0:00:00.013 ********* 
Using module file /home/mdemello/.virtualenvs/py39/lib64/python3.9/site-packages/ansible/modules/system/setup.py
Pipelining is enabled.
<localhost> ESTABLISH LOCAL CONNECTION FOR USER: mdemello
<localhost> EXEC /bin/sh -c '/home/mdemello/.virtualenvs/py39/bin/python && sleep 0'

TASK [Gathering Facts] ********************************************************************************************************************
task path: /home/mdemello/devel/PERSONAL/toca_ansible_playbooks/k8s.yaml:2
ok: [localhost]
META: ran handlers
Tuesday 27 April 2021  16:02:44 -0400 (0:00:00.743)       0:00:00.756 ********* 
Using module file /home/mdemello/.virtualenvs/py39/lib64/python3.9/site-packages/ansible/modules/clustering/k8s/k8s_scale.py
Pipelining is enabled.
<localhost> ESTABLISH LOCAL CONNECTION FOR USER: mdemello
<localhost> EXEC /bin/sh -c '/home/mdemello/.virtualenvs/py39/bin/python && sleep 0'

TASK [Scale down PostgreSQL statefulset] **************************************************************************************************
task path: /home/mdemello/devel/PERSONAL/toca_ansible_playbooks/k8s.yaml:12
The full traceback is:
Traceback (most recent call last):
  File "<stdin>", line 102, in <module>
  File "<stdin>", line 94, in _ansiballz_main
  File "<stdin>", line 40, in invoke_module
  File "/usr/lib64/python3.9/runpy.py", line 210, in run_module
    return _run_module_code(code, init_globals, run_name, mod_spec)
  File "/usr/lib64/python3.9/runpy.py", line 97, in _run_module_code
    _run_code(code, mod_globals, init_globals,
  File "/usr/lib64/python3.9/runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "/tmp/ansible_k8s_scale_payload_amu03bnn/ansible_k8s_scale_payload.zip/ansible/modules/clustering/k8s/k8s_scale.py", line 129, in <module>
  File "/tmp/ansible_k8s_scale_payload_amu03bnn/ansible_k8s_scale_payload.zip/ansible/modules/clustering/k8s/k8s_scale.py", line 125, in main
  File "/tmp/ansible_k8s_scale_payload_amu03bnn/ansible_k8s_scale_payload.zip/ansible/module_utils/k8s/scale.py", line 141, in execute_module
  File "/tmp/ansible_k8s_scale_payload_amu03bnn/ansible_k8s_scale_payload.zip/ansible/module_utils/k8s/scale.py", line 170, in scale
  File "/tmp/ansible_k8s_scale_payload_amu03bnn/ansible_k8s_scale_payload.zip/ansible/module_utils/k8s/scale.py", line 192, in _create_stream
NameError: name 'watch' is not defined
fatal: [localhost]: FAILED! => {
    "changed": false,
    "module_stderr": "Traceback (most recent call last):\n  File \"<stdin>\", line 102, in <module>\n  File \"<stdin>\", line 94, in _ansiballz_main\n  File \"<stdin>\", line 40, in invoke_module\n  File \"/usr/lib64/python3.9/runpy.py\", line 210, in run_module\n    return _run_module_code(code, init_globals, run_name, mod_spec)\n  File \"/usr/lib64/python3.9/runpy.py\", line 97, in _run_module_code\n    _run_code(code, mod_globals, init_globals,\n  File \"/usr/lib64/python3.9/runpy.py\", line 87, in _run_code\n    exec(code, run_globals)\n  File \"/tmp/ansible_k8s_scale_payload_amu03bnn/ansible_k8s_scale_payload.zip/ansible/modules/clustering/k8s/k8s_scale.py\", line 129, in <module>\n  File \"/tmp/ansible_k8s_scale_payload_amu03bnn/ansible_k8s_scale_payload.zip/ansible/modules/clustering/k8s/k8s_scale.py\", line 125, in main\n  File \"/tmp/ansible_k8s_scale_payload_amu03bnn/ansible_k8s_scale_payload.zip/ansible/module_utils/k8s/scale.py\", line 141, in execute_module\n  File \"/tmp/ansible_k8s_scale_payload_amu03bnn/ansible_k8s_scale_payload.zip/ansible/module_utils/k8s/scale.py\", line 170, in scale\n  File \"/tmp/ansible_k8s_scale_payload_amu03bnn/ansible_k8s_scale_payload.zip/ansible/module_utils/k8s/scale.py\", line 192, in _create_stream\nNameError: name 'watch' is not defined\n",
    "module_stdout": "",
    "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error",
    "rc": 1
}

PLAY RECAP ********************************************************************************************************************************
localhost                  : ok=1    changed=0    unreachable=0    failed=1    skipped=0    rescued=0    ignored=0   

Tuesday 27 April 2021  16:02:44 -0400 (0:00:00.610)       0:00:01.367 ********* 
=============================================================================== 
Gathering Facts -------------------------------------------------------------------------------------------------------------------- 0.74s
/home/mdemello/devel/PERSONAL/toca_ansible_playbooks/k8s.yaml:2 --------------------------------------------------------------------------
Scale down PostgreSQL statefulset -------------------------------------------------------------------------------------------------- 0.61s
/home/mdemello/devel/PERSONAL/toca_ansible_playbooks/k8s.yaml:12 -------------------------------------------------------------------------

NOTE Statefulset is present and exits

# kubectl get statefulset awx-redeployit-a-postgres -o yaml | head16:02:44
apiVersion: apps/v1
kind: StatefulSet
metadata:
  annotations:
.....
tchellomello commented 3 years ago

Closing as it worked using the collection community.kubernetes.k8s_scale