sync
This commit is contained in:
@@ -0,0 +1,103 @@
|
||||
---
|
||||
# Kubeconfig merging tasks
|
||||
|
||||
- name: Check if main kubeconfig exists
|
||||
delegate_to: localhost
|
||||
ansible.builtin.stat:
|
||||
path: "{{ local_home }}/.kube/config"
|
||||
register: main_kubeconfig
|
||||
|
||||
- name: Create backup of existing kubeconfig
|
||||
delegate_to: localhost
|
||||
ansible.builtin.copy:
|
||||
src: "{{ local_home }}/.kube/config"
|
||||
dest: "{{ local_home }}/.kube/config.backup.{{ ansible_date_time.epoch }}"
|
||||
mode: "0644"
|
||||
when: main_kubeconfig.stat.exists
|
||||
|
||||
- name: Read new cluster kubeconfig
|
||||
delegate_to: localhost
|
||||
ansible.builtin.slurp:
|
||||
src: "{{ local_home }}/.kube/config-{{ cluster_name }}"
|
||||
register: new_kubeconfig_content
|
||||
|
||||
- name: Parse new kubeconfig
|
||||
delegate_to: localhost
|
||||
ansible.builtin.set_fact:
|
||||
new_kubeconfig: "{{ new_kubeconfig_content.content | b64decode | from_yaml }}"
|
||||
|
||||
- name: Update cluster name in kubeconfig
|
||||
delegate_to: localhost
|
||||
ansible.builtin.set_fact:
|
||||
updated_kubeconfig:
|
||||
apiVersion: "{{ new_kubeconfig.apiVersion }}"
|
||||
kind: "{{ new_kubeconfig.kind }}"
|
||||
clusters:
|
||||
- name: "{{ cluster_name }}"
|
||||
cluster: "{{ new_kubeconfig.clusters[0].cluster }}"
|
||||
contexts:
|
||||
- name: "{{ cluster_name }}-admin"
|
||||
context:
|
||||
cluster: "{{ cluster_name }}"
|
||||
user: "{{ cluster_name }}-admin"
|
||||
users:
|
||||
- name: "{{ cluster_name }}-admin"
|
||||
user: "{{ new_kubeconfig.users[0].user }}"
|
||||
current-context: "{{ cluster_name }}-admin"
|
||||
|
||||
- name: Merge with existing kubeconfig or create new one
|
||||
delegate_to: localhost
|
||||
block:
|
||||
- name: Read existing kubeconfig
|
||||
ansible.builtin.slurp:
|
||||
src: "{{ local_home }}/.kube/config"
|
||||
register: existing_kubeconfig_content
|
||||
when: main_kubeconfig.stat.exists
|
||||
|
||||
- name: Parse existing kubeconfig
|
||||
ansible.builtin.set_fact:
|
||||
existing_kubeconfig: "{{ existing_kubeconfig_content.content | b64decode | from_yaml }}"
|
||||
when: main_kubeconfig.stat.exists
|
||||
|
||||
- name: Merge kubeconfigs
|
||||
ansible.builtin.set_fact:
|
||||
merged_kubeconfig:
|
||||
apiVersion: "{{ existing_kubeconfig.apiVersion | default('v1') }}"
|
||||
kind: "{{ existing_kubeconfig.kind | default('Config') }}"
|
||||
clusters: "{{ (existing_kubeconfig.clusters | default([])) + updated_kubeconfig.clusters }}"
|
||||
contexts: "{{ (existing_kubeconfig.contexts | default([])) + updated_kubeconfig.contexts }}"
|
||||
users: "{{ (existing_kubeconfig.users | default([])) + updated_kubeconfig.users }}"
|
||||
current-context: "{{ updated_kubeconfig['current-context'] }}"
|
||||
when: main_kubeconfig.stat.exists
|
||||
|
||||
- name: Use new kubeconfig as merged config
|
||||
ansible.builtin.set_fact:
|
||||
merged_kubeconfig: "{{ updated_kubeconfig }}"
|
||||
when: not main_kubeconfig.stat.exists
|
||||
|
||||
- name: Write merged kubeconfig
|
||||
delegate_to: localhost
|
||||
ansible.builtin.copy:
|
||||
content: "{{ merged_kubeconfig | to_nice_yaml }}"
|
||||
dest: "{{ local_home }}/.kube/config"
|
||||
mode: "0644"
|
||||
owner: "{{ local_user }}"
|
||||
|
||||
- name: Display available contexts
|
||||
delegate_to: localhost
|
||||
ansible.builtin.debug:
|
||||
msg: |
|
||||
Kubeconfig updated successfully!
|
||||
|
||||
Available contexts:
|
||||
{% for context in merged_kubeconfig.contexts %}
|
||||
- {{ context.name }}
|
||||
{% endfor %}
|
||||
|
||||
Current context: {{ merged_kubeconfig['current-context'] }}
|
||||
|
||||
To switch contexts, use:
|
||||
kubectl config use-context <context-name>
|
||||
|
||||
To list all contexts:
|
||||
kubectl config get-contexts
|
||||
Reference in New Issue
Block a user