k8s: add support for template (#230)

Fixes: #37

Signed-off-by: Abhijeet Kasurde <akasurde@redhat.com>
This commit is contained in:
Abhijeet Kasurde
2020-09-28 11:35:26 +05:30
committed by GitHub
parent f03d2ce243
commit 00fa8789a2
7 changed files with 347 additions and 2 deletions

View File

@@ -0,0 +1,155 @@
---
- 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
community.kubernetes.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
community.kubernetes.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
community.kubernetes.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)
community.kubernetes.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
community.kubernetes.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)
community.kubernetes.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)
community.kubernetes.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: Remove Pod (Cleanup)
k8s:
api_version: v1
kind: Pod
name: "{{ item }}"
namespace: "{{ template_namespace }}"
state: absent
wait: yes
ignore_errors: yes
with_items:
- pod-1
- pod-2
- pod-3
- pod-4
always:
- name: Remove namespace (Cleanup)
k8s:
kind: Namespace
name: "{{ template_namespace }}"
state: absent