Skip to content

Instantly share code, notes, and snippets.

@fischerdr
Last active December 10, 2024 15:22
Show Gist options
  • Select an option

  • Save fischerdr/7291aac59f1113f48cb4cbb29a5671e1 to your computer and use it in GitHub Desktop.

Select an option

Save fischerdr/7291aac59f1113f48cb4cbb29a5671e1 to your computer and use it in GitHub Desktop.
ansible playbook to look for namespace default label and assigns extra labels for backup schedules
---
- name: Check_and_update
hosts: localhost
gather_facts: false
vars:
inital_label: "label_a"
storage: "label_b"
resrcs_only: "label_c"
full_namespace: "label_d"
schedule_names:
- "schedule1"
- "schedule2"
- "schedule3"
- "schedule4"
- "schedule5"
- "schedule6"
namespaces_missing_labels: []
namespace_label_map: {}
environment:
KUBECONFIG: ""
tasks:
- name: Get all namespaces
kubernetes.core.k8s_info:
api_version: v1
kind: Namespace
register: namespaces_info
- name: Filter with inital label
ansible.builtin.set_fact:
namespaces_with_inital_label: "{{ namespaces_info.resources | selectattr('metadata.labels', 'defined') | selectattr('metadata.labels.' + inital_label, 'defined') | list }}"
- name: Initialize namespaces_missing_labels
ansible.builtin.set_fact:
namespaces_missing_labels: []
- name: Check each namespace for missing labels
ansible.builtin.set_fact:
namespaces_missing_labels: >-
{{
namespaces_missing_labels +
[namespace.metadata.name]
}}
loop: "{{ namespaces_with_inital_label }}"
loop_control:
loop_var: namespace
when: not (namespace.metadata.labels[storage] or (namespace.metadata.labels[resrcs_only] or namespace.metadata.labels[full_namespace]))
- name: Assign random values to schedule_names for missing namespaces
ansible.builtin.set_fact:
namespace_label_map: "{{ namespace_label_map | combine({item: (schedule_names | random)}) }}"
loop: "{{ namespaces_missing_labels }}"
loop_control:
label: "{{ item }}"
- name: Patch_with_schedules
kubernetes.core.k8s:
api_version: v1
kind: Namespace
name: "{{ item }}"
merge_type: "merge"
definition:
metadata:
labels:
full_namespace: "{{ namespace_label_map[item] }}"
loop: "{{ namespaces_missing_labels }}"
- name: Display_results
ansible.builtin.debug:
msg: >-
Updated namespaces with schedules: {{ namespace_label_map }}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment