Kubernetes Ansible Operators - Patch an Existing Kubernetes Resource
Yes, you can provide just a patch and if the resource already exists it should send a strategic-merge-patch (or just a merge-patch if it's a custom resource). Here's an example playbook that creates and modifies a configmap:
--- - hosts: localhost connection: local gather_facts: no vars: cm: "{{ lookup('k8s', api_version='v1', kind='ConfigMap', namespace='default', resource_name='test') }}" tasks: - name: Create the ConfigMap k8s: definition: apiVersion: v1 kind: ConfigMap metadata: name: test namespace: default data: hello: world - name: We will see the ConfigMap defined above debug: var: cm - name: Add a field to the ConfigMap (this will be a PATCH request) k8s: definition: apiVersion: v1 kind: ConfigMap metadata: name: test namespace: default data: added: field - name: The same ConfigMap as before, but with an extra field in data debug: var: cm - name: Change a field in the ConfigMap (this will be a PATCH request) k8s: definition: apiVersion: v1 kind: ConfigMap metadata: name: test namespace: default data: hello: everyone - name: The added field is unchanged, but the hello field has a new value debug: var: cm - name: Delete the added field in the ConfigMap (this will be a PATCH request) k8s: definition: apiVersion: v1 kind: ConfigMap metadata: name: test namespace: default data: added: null - name: The hello field is unchanged, but the added field is now gone debug: var: cm