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

@@ -28,6 +28,7 @@
- include_tasks: tasks/exec.yml
- include_tasks: tasks/log.yml
- include_tasks: tasks/info.yml
- include_tasks: tasks/template.yml
roles:
- helm

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

View File

@@ -0,0 +1,16 @@
apiVersion: v1
kind: Pod
metadata:
labels:
app: "{{ k8s_pod_name }}"
name: '{{ k8s_pod_name }}'
namespace: '{{ k8s_pod_namespace }}'
spec:
containers:
- args:
- /bin/sh
- -c
- while true; do echo $(date); sleep 10; done
image: python:3.7-alpine
imagePullPolicy: Always
name: '{{ k8s_pod_name }}'

View File

@@ -0,0 +1,16 @@
apiVersion: v1
kind: Pod
metadata:
labels:
app: '[[ k8s_pod_name ]]'
name: '[[ k8s_pod_name ]]'
namespace: '[[ k8s_pod_namespace ]]'
spec:
containers:
- args:
- /bin/sh
- -c
- while true; do echo $(date); sleep 10; done
image: python:3.7-alpine
imagePullPolicy: Always
name: '[[ k8s_pod_name ]]'