mirror of
https://github.com/ansible-collections/kubernetes.core.git
synced 2026-03-26 21:33:02 +00:00
* Fix apply on Ansible 2.9 For some reason the apply function can't be correctly imported in Ansible 2.9. This just renames it to get it to import. I've also added molecule testing on multiple Ansible versions. * Add changelog fragment
259 lines
7.1 KiB
YAML
259 lines
7.1 KiB
YAML
---
|
|
- 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_one }}"
|
|
vars:
|
|
k8s_pod_name_one: 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_one: 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_one: 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_one: 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
|
|
|
|
- name: Create pod using template (path parameter)
|
|
kubernetes.core.k8s:
|
|
template:
|
|
path: "pod_template_one.j2"
|
|
wait: yes
|
|
vars:
|
|
k8s_pod_name_one: 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_two: 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_three_one: pod-5
|
|
k8s_pod_name_three_two: pod-6
|
|
k8s_pod_namespace: "{{ template_namespace }}"
|
|
register: r
|
|
|
|
- name: Assert that pod creation succeeded using template
|
|
assert:
|
|
that:
|
|
- r is successful
|
|
|
|
- name: Create pods using list of template
|
|
kubernetes.core.k8s:
|
|
template:
|
|
- pod_template_one.j2
|
|
- path: "pod_template_two.j2"
|
|
variable_start_string: '[['
|
|
variable_end_string: ']]'
|
|
- path: "pod_template_three.j2"
|
|
wait: yes
|
|
vars:
|
|
k8s_pod_name_one: pod-7
|
|
k8s_pod_name_two: pod-8
|
|
k8s_pod_name_three_one: pod-9
|
|
k8s_pod_name_three_two: pod-10
|
|
k8s_pod_namespace: "template-test"
|
|
register: r
|
|
|
|
- name: Assert that pod creation succeeded using template
|
|
assert:
|
|
that:
|
|
- r is successful
|
|
|
|
# continue_on_error
|
|
- name: define variable for test
|
|
set_fact:
|
|
k8s_pod_name_one: pod-11
|
|
k8s_pod_bad_name: pod-12
|
|
k8s_pod_namespace: "{{ template_namespace }}"
|
|
k8s_pod_bad_namespace: "dummy-namespace-012345"
|
|
|
|
- name: delete pod if it exists
|
|
kubernetes.core.k8s:
|
|
template: pod_template_one.j2
|
|
wait: true
|
|
state: absent
|
|
|
|
- name: create pod on bad namespace ( continue_on_error set to default(false) )
|
|
kubernetes.core.k8s:
|
|
template:
|
|
- pod_with_bad_namespace.j2
|
|
- pod_template_one.j2
|
|
register: resource
|
|
ignore_errors: true
|
|
|
|
- name: validate that creation failed
|
|
assert:
|
|
that:
|
|
- resource is failed
|
|
- '"Failed to create object" in resource.msg'
|
|
|
|
- name: assert pod has not been created
|
|
kubernetes.core.k8s_info:
|
|
kind: "{{ item.kind }}"
|
|
namespace: "{{ item.namespace }}"
|
|
name: "{{ item.name }}"
|
|
with_items:
|
|
- kind: pod
|
|
namespace: "{{ k8s_pod_bad_namespace }}"
|
|
name: "{{ k8s_pod_bad_name }}"
|
|
- kind: pod
|
|
namespace: "{{ k8s_pod_name_one }}"
|
|
name: "{{ k8s_pod_namespace }}"
|
|
register: resource
|
|
|
|
- name: check that resources creation failed
|
|
assert:
|
|
that:
|
|
- '{{ resource.results[0].resources | length == 0 }}'
|
|
- '{{ resource.results[1].resources | length == 0 }}'
|
|
|
|
- name: create pod without namespace (continue_on_error = true)
|
|
kubernetes.core.k8s:
|
|
template:
|
|
- pod_with_bad_namespace.j2
|
|
- pod_template_one.j2
|
|
continue_on_error: true
|
|
wait: true
|
|
register: resource
|
|
ignore_errors: true
|
|
|
|
- name: validate that creation succeeded
|
|
assert:
|
|
that:
|
|
- resource is successful
|
|
|
|
- name: validate resource creation succeeded for some and failed for others
|
|
assert:
|
|
that:
|
|
- resource is successful
|
|
- resource.result.results | selectattr('changed') | list | length == 1
|
|
- resource.result.results | selectattr('error', 'defined') | list | length == 1
|
|
|
|
- name: Remove Pod (Cleanup)
|
|
kubernetes.core.k8s:
|
|
api_version: v1
|
|
kind: Pod
|
|
name: "pod-{{ item }}"
|
|
namespace: "{{ template_namespace }}"
|
|
state: absent
|
|
wait: yes
|
|
ignore_errors: yes
|
|
loop: "{{ range(1, 12) | list }}"
|
|
|
|
always:
|
|
- name: Remove namespace (Cleanup)
|
|
kubernetes.core.k8s:
|
|
kind: Namespace
|
|
name: "{{ template_namespace }}"
|
|
state: absent
|