mirror of
https://github.com/ansible-collections/kubernetes.core.git
synced 2026-03-29 23:03:02 +00:00
* support diff mode for k8s module * Update and rename 145-k8s-add-support-diff-mode.yml to 146-k8s-add-support-diff-mode.yml * Update 146-k8s-add-support-diff-mode.yml * Update changelogs/fragments/146-k8s-add-support-diff-mode.yml Co-authored-by: Mike Graves <mgraves@redhat.com> * update k8s_scale and k8s_json_patch * diff for k8s_scale and k8s_json_patch Co-authored-by: Mike Graves <mgraves@redhat.com>
174 lines
4.5 KiB
YAML
174 lines
4.5 KiB
YAML
- vars:
|
|
namespace: json-patch
|
|
pod: json-patch
|
|
deployment: json-patch
|
|
|
|
block:
|
|
- name: Ensure namespace exists
|
|
kubernetes.core.k8s:
|
|
kind: namespace
|
|
name: "{{ namespace }}"
|
|
|
|
- name: Create a simple pod
|
|
kubernetes.core.k8s:
|
|
definition:
|
|
apiVersion: v1
|
|
kind: Pod
|
|
metadata:
|
|
namespace: "{{ namespace }}"
|
|
name: "{{ pod }}"
|
|
labels:
|
|
label1: foo
|
|
spec:
|
|
containers:
|
|
- image: busybox:musl
|
|
name: busybox
|
|
command:
|
|
- sh
|
|
- -c
|
|
- while true; do echo $(date); sleep 10; done
|
|
wait: yes
|
|
|
|
- name: Add a label and replace the image in checkmode
|
|
kubernetes.core.k8s_json_patch:
|
|
kind: Pod
|
|
namespace: "{{ namespace }}"
|
|
name: "{{ pod }}"
|
|
patch:
|
|
- op: add
|
|
path: /metadata/labels/label2
|
|
value: bar
|
|
- op: replace
|
|
path: /spec/containers/0/image
|
|
value: busybox:glibc
|
|
check_mode: yes
|
|
register: result
|
|
diff: yes
|
|
|
|
- name: Assert patch was made
|
|
assert:
|
|
that:
|
|
- result.changed
|
|
- result.result.metadata.labels.label2 == "bar"
|
|
- result.result.spec.containers[0].image == "busybox:glibc"
|
|
- result.diff
|
|
|
|
- name: Describe pod
|
|
kubernetes.core.k8s_info:
|
|
kind: Pod
|
|
name: "{{ pod }}"
|
|
namespace: "{{ namespace }}"
|
|
register: result
|
|
|
|
- name: Assert pod has not changed
|
|
assert:
|
|
that:
|
|
- result.resources[0].metadata.labels.label2 is not defined
|
|
- result.resources[0].spec.containers[0].image == "busybox:musl"
|
|
|
|
- name: Add a label and replace the image
|
|
kubernetes.core.k8s_json_patch:
|
|
kind: Pod
|
|
namespace: "{{ namespace }}"
|
|
name: "{{ pod }}"
|
|
patch:
|
|
- op: add
|
|
path: /metadata/labels/label2
|
|
value: bar
|
|
- op: replace
|
|
path: /spec/containers/0/image
|
|
value: busybox:glibc
|
|
register: result
|
|
|
|
- name: Assert patch was made
|
|
assert:
|
|
that:
|
|
- result.changed
|
|
- result.diff is not defined
|
|
|
|
- name: Describe pod
|
|
kubernetes.core.k8s_info:
|
|
kind: Pod
|
|
name: "{{ pod }}"
|
|
namespace: "{{ namespace }}"
|
|
register: result
|
|
|
|
- name: Assert that both patch operations have been applied
|
|
assert:
|
|
that:
|
|
- result.resources[0].metadata.labels.label2 == "bar"
|
|
- result.resources[0].spec.containers[0].image == "busybox:glibc"
|
|
|
|
- name: Apply the same patch to the pod
|
|
kubernetes.core.k8s_json_patch:
|
|
kind: Pod
|
|
namespace: "{{ namespace }}"
|
|
name: "{{ pod }}"
|
|
patch:
|
|
- op: add
|
|
path: /metadata/labels/label2
|
|
value: bar
|
|
- op: replace
|
|
path: /spec/containers/0/image
|
|
value: busybox:glibc
|
|
register: result
|
|
|
|
- name: Assert that no changes were made
|
|
assert:
|
|
that:
|
|
- not result.changed
|
|
|
|
- name: Create a simple deployment
|
|
kubernetes.core.k8s:
|
|
wait: yes
|
|
definition:
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
namespace: "{{ namespace }}"
|
|
name: "{{ deployment }}"
|
|
labels:
|
|
name: "{{ deployment }}"
|
|
spec:
|
|
replicas: 2
|
|
selector:
|
|
matchLabels:
|
|
app: busybox
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: busybox
|
|
spec:
|
|
containers:
|
|
- name: busybox
|
|
image: busybox
|
|
command:
|
|
- sh
|
|
- -c
|
|
- while true; do echo $(date); sleep 10; done
|
|
|
|
- name: Apply patch and wait for deployment to be ready
|
|
kubernetes.core.k8s_json_patch:
|
|
kind: Deployment
|
|
namespace: "{{ namespace }}"
|
|
name: "{{ deployment }}"
|
|
patch:
|
|
- op: replace
|
|
path: /spec/replicas
|
|
value: 3
|
|
wait: yes
|
|
register: result
|
|
|
|
- name: Assert all replicas are available
|
|
assert:
|
|
that:
|
|
- result.result.status.availableReplicas == 3
|
|
|
|
always:
|
|
- name: Ensure namespace has been deleted
|
|
kubernetes.core.k8s:
|
|
kind: Namespace
|
|
name: "{{ namespace }}"
|
|
state: absent
|
|
ignore_errors: yes
|