--- - name: Deploy example block: - name: "Create namespace: {{ testing_namespace }}" kubernetes.core.k8s: api_version: v1 kind: Namespace name: "{{ testing_namespace }}" state: present wait: true kubeconfig: "{{ kubecfg_path }}" - name: Apply example manifests kubernetes.core.k8s: src: "{{ example_manifests_path }}/{{ item }}" namespace: "{{ testing_namespace }}" state: present wait: true kubeconfig: "{{ kubecfg_path }}" with_items: - deployment.yml - service.yml - name: Get info about nginx service kubernetes.core.k8s_info: kind: service name: nginx namespace: "{{ testing_namespace }}" kubeconfig: "{{ kubecfg_path }}" vars: &load_balancer_metadata metallb_ip: status.loadBalancer.ingress[0].ip metallb_port: spec.ports[0].port register: nginx_services - name: Assert that the nginx welcome page is available ansible.builtin.uri: url: http://{{ ip | ansible.utils.ipwrap }}:{{ port_ }}/ return_content: true register: result failed_when: "'Welcome to nginx!' not in result.content" vars: ip: >- {{ nginx_services.resources[0].status.loadBalancer.ingress[0].ip }} port_: >- {{ nginx_services.resources[0].spec.ports[0].port }} # Deactivated linter rules: # - jinja[invalid]: As of version 6.6.0, ansible-lint complains that the input to ipwrap # would be undefined. This will not be the case during playbook execution. # noqa jinja[invalid] always: - name: "Remove namespace: {{ testing_namespace }}" kubernetes.core.k8s: api_version: v1 kind: Namespace name: "{{ testing_namespace }}" state: absent kubeconfig: "{{ kubecfg_path }}"