--- - block: - set_fact: template_namespace: template-test - name: Ensure namespace exists k8s: definition: apiVersion: v1 kind: Namespace metadata: name: "{{ template_namespace }}" - name: Check if k8s_service does not inherit parameter kubernetes.core.k8s_service: template: "pod_template_one.j2" state: present ignore_errors: yes register: r - name: Check for expected failures in last tasks assert: that: - r.failed - "'is only supported parameter for' in r.msg" - name: Specify both definition and template kubernetes.core.k8s: state: present template: "pod_template_one.j2" definition: apiVersion: apps/v1 kind: Deployment metadata: name: apply-deploy namespace: "{{ template_namespace }}" spec: replicas: 1 selector: matchLabels: app: "{{ k8s_pod_name }}" vars: k8s_pod_name: pod k8s_pod_namespace: "{{ template_namespace }}" register: r ignore_errors: yes - name: Check if definition and template are mutually exclusive assert: that: - r.failed - "'parameters are mutually exclusive' in r.msg" - name: Specify both src and template kubernetes.core.k8s: state: present src: "../templates/pod_template_one.j2" template: "pod_template_one.j2" vars: k8s_pod_name: pod k8s_pod_namespace: "{{ template_namespace }}" register: r ignore_errors: yes - name: Check if src and template are mutually exclusive assert: that: - r.failed - "'parameters are mutually exclusive' in r.msg" - name: Create pod using template (direct specification) kubernetes.core.k8s: template: "pod_template_one.j2" wait: yes vars: k8s_pod_name: pod-1 k8s_pod_namespace: "{{ template_namespace }}" register: r - name: Assert that pod creation succeeded using template assert: that: - r is successful - name: Create pod using template with wrong parameter kubernetes.core.k8s: template: - default wait: yes vars: k8s_pod_name: pod-2 k8s_pod_namespace: "{{ template_namespace }}" register: r ignore_errors: True - name: Assert that pod creation failed using template due to wrong parameter assert: that: - r is failed - "'Error while reading template file' in r.msg" - name: Create pod using template (path parameter) kubernetes.core.k8s: template: path: "pod_template_one.j2" wait: yes vars: k8s_pod_name: pod-3 k8s_pod_namespace: "{{ template_namespace }}" register: r - name: Assert that pod creation succeeded using template assert: that: - r is successful - name: Create pod using template (different variable string) kubernetes.core.k8s: template: path: "pod_template_two.j2" variable_start_string: '[[' variable_end_string: ']]' wait: yes vars: k8s_pod_name: pod-4 k8s_pod_namespace: "[[ template_namespace ]]" ansible_python_interpreter: "[[ ansible_playbook_python ]]" register: r - name: Assert that pod creation succeeded using template assert: that: - r is successful - name: Create pods using multi-resource template kubernetes.core.k8s: template: path: "pod_template_three.j2" wait: yes vars: k8s_pod_name_one: pod-5 k8s_pod_name_two: pod-6 k8s_pod_namespace: "{{ template_namespace }}" register: r - name: Assert that pod creation succeeded using template assert: that: - r is successful - name: Remove Pod (Cleanup) k8s: api_version: v1 kind: Pod name: "pod-{{ item }}" namespace: "{{ template_namespace }}" state: absent wait: yes ignore_errors: yes loop: "{{ range(1, 7) | list }}" always: - name: Remove namespace (Cleanup) k8s: kind: Namespace name: "{{ template_namespace }}" state: absent