--- - name: "Create pod" tags: create hosts: localhost vars: pod_count: 10 loop_count: 5 gather_facts: no tasks: - name: Create a test pod k8s: state: present definition: apiVersion: v1 kind: Pod metadata: name: test-pod-{{item}} namespace: default spec: containers: - name: python2 image: python:2 args: [ "sleep", "100000" ] - name: python3 image: python:3 args: [ "sleep", "100000" ] loop: "{{ range(pod_count|int)|list }}" - name: "Wait pod to be running" debug: { msg: "pod is running" } # status and availableReplicas might not be there. Using default value (d(default_value)) until: "pod_def.status.containerStatuses[0].ready" # Waiting 100 s retries: 50 delay: 2 vars: pod_def: "{{lookup('k8s', kind='Pod', namespace='default', resource_name='test-pod-' ~ item)}}" loop: "{{ range(pod_count|int)|list }}" - name: "Add pod to pods group" add_host: name: "test-pod-{{item}}" groups: [ "pods" ] ansible_connection: "kubectl" changed_when: no tags: "always" loop: "{{ range(pod_count|int)|list }}" - name: "Test kubectl connection (default strategy)" tags: default hosts: pods strategy: "linear" vars: pod_count: 10 loop_count: 5 gather_facts: no tasks: - name: "Simple shell with linear" shell: ls /tmp loop: "{{ range(loop_count|int)|list }}" - name: "Simple file with linear" file: path: "/etc" state: directory loop: "{{ range(loop_count|int)|list }}" - block: - name: "Check python version on python3 container" command: python --version vars: ansible_kubectl_container: python3 register: _ - assert: { that: "'Python 3' in _.stdout" } fail_msg: | _={{ _ }} - debug: var=_.stdout,_.stderr run_once: yes - name: "Check python version on default container" command: python --version register: _ - assert: { that: "'Python 2' in _.stderr" } fail_msg: | _={{ _ }} - debug: var=_.stdout,_.stderr run_once: yes - name: "Test kubectl connection (mitogen strategy)" tags: mitogen hosts: pods strategy: "mitogen_linear" vars: pod_count: 10 loop_count: 5 gather_facts: no tasks: - name: "Simple shell with mitogen" shell: ls /tmp loop: "{{ range(loop_count|int)|list }}" - name: "Simple file with mitogen" file: path: "/etc" state: directory loop: "{{ range(loop_count|int)|list }}" - block: - name: "Check python version on python3 container" command: python --version vars: ansible_kubectl_container: python3 register: _ - assert: that: "'Python 3' in _.stdout" fail_msg: | _={{ _ }} - debug: var=_.stdout,_.stderr run_once: yes - name: "Check python version on default container" command: python --version register: _ - assert: that: "'Python 2' in _.stderr" fail_msg: | _={{ _ }} - debug: var=_.stdout,_.stderr run_once: yes tags: check - name: "Destroy pod" tags: cleanup hosts: pods gather_facts: no vars: ansible_connection: "local" tasks: - name: Destroy pod k8s: state: absent definition: apiVersion: v1 kind: Pod metadata: name: "{{inventory_hostname}}" namespace: default