From 79f6cd774a4d66ebe909bddf3aca93c377f45c42 Mon Sep 17 00:00:00 2001 From: Robin Wallace Date: Mon, 20 Jun 2022 09:34:31 +0200 Subject: [PATCH] create snapshot-controller only if needed --- library/kube.py | 7 ++++++- .../snapshots/snapshot-controller/tasks/main.yml | 16 ++++++++++++++-- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/library/kube.py b/library/kube.py index 8fc47bbc6..cb9f4f0cf 100644 --- a/library/kube.py +++ b/library/kube.py @@ -314,7 +314,7 @@ def main(): wait=dict(default=False, type='bool'), all=dict(default=False, type='bool'), log_level=dict(default=0, type='int'), - state=dict(default='present', choices=['present', 'absent', 'latest', 'reloaded', 'stopped']), + state=dict(default='present', choices=['present', 'absent', 'latest', 'reloaded', 'stopped', 'exists']), recursive=dict(default=False, type='bool'), ), mutually_exclusive=[['filename', 'list']] @@ -339,6 +339,11 @@ def main(): elif state == 'latest': result = manager.replace() + elif state == 'exists': + result = manager.exists() + module.exit_json(changed=changed, + msg='%s' % result) + else: module.fail_json(msg='Unrecognized state %s.' % state) diff --git a/roles/kubernetes-apps/snapshots/snapshot-controller/tasks/main.yml b/roles/kubernetes-apps/snapshots/snapshot-controller/tasks/main.yml index 9b25c721e..8663e8a24 100644 --- a/roles/kubernetes-apps/snapshots/snapshot-controller/tasks/main.yml +++ b/roles/kubernetes-apps/snapshots/snapshot-controller/tasks/main.yml @@ -1,15 +1,27 @@ --- +- name: check if snapshot namespace exists + register: snapshot_namespace_exists + kube: + kubectl: "{{ bin_dir }}/kubectl" + name: "{{ snapshot_controller_namespace }}" + resource: "namespace" + state: "exists" + when: inventory_hostname == groups['kube_control_plane'][0] + tags: snapshot-controller + - name: Snapshot Controller | Generate Manifests template: src: "{{ item.file }}.j2" dest: "{{ kube_config_dir }}/{{ item.file }}" mode: 0644 with_items: - - {name: snapshot-ns, file: snapshot-ns.yml} + - {name: snapshot-ns, file: snapshot-ns.yml, apply: not snapshot_namespace_exists} - {name: rbac-snapshot-controller, file: rbac-snapshot-controller.yml} - {name: snapshot-controller, file: snapshot-controller.yml} register: snapshot_controller_manifests - when: inventory_hostname == groups['kube_control_plane'][0] + when: + - inventory_hostname == groups['kube_control_plane'][0] + - item.apply | default(True) | bool tags: snapshot-controller - name: Snapshot Controller | Apply Manifests