Commit 4f58ca91 authored by Sergio Gimenez's avatar Sergio Gimenez
Browse files

[WIP] Make playbooks k8s-distro-agnostic

parent e53a79c2
Loading
Loading
Loading
Loading
+15 −7
Original line number Diff line number Diff line
@@ -49,18 +49,26 @@ all:
    op2_nodes:
      hosts:
        openop_2:
    kind_cluster:
    k8s_cluster:
      children:
        openop_dev:
        op1_nodes:
        op2_nodes:
    # Backwards compatibility alias
    kind_cluster:
      children:
        k8s_cluster:

  vars:
    # Kind cluster configuration
    kind_cluster_name: operator-platform
    kind_version: v0.29.0
    kind_config_template: kind-config.yaml.j2
    # Kubernetes distribution (kind, kubespray, kubeadm, existing)
    k8s_distribution: kind
    
    # Kubeconfig settings
    # Generic cluster configuration (distro-agnostic)
    cluster_name: operator-platform
    kubeconfig_output_dir: "{{ inventory_dir }}/../../automation/1-kind-cluster"
    kubeconfig_filename: operator-platform-external-kubeconfig.yaml
    
    # Kind-specific configuration (only used when k8s_distribution=kind)
    kind_cluster_name: "{{ cluster_name }}"  # Backwards compatibility
    kind_version: v0.29.0
    kind_config_template: kind-config.yaml.j2
+22 −9
Original line number Diff line number Diff line
@@ -15,7 +15,7 @@
# All-in-One Deployment (Dual Federation Managers)
# ==========================================
- name: Deploy All-in-One OOP (Dual Federation Managers)
  hosts: kind_cluster
  hosts: k8s_cluster
  gather_facts: true
  
  vars:
@@ -36,6 +36,7 @@
          Scenario: Federation testing on single cluster
          Federation Managers: 2 (local + remote simulation)
          Target Host: {{ inventory_hostname }}
          K8s Distribution: {{ k8s_distribution | default('kind') }}
          
          This scenario deploys:
            - Primary FM (federation-manager namespace)
@@ -45,19 +46,31 @@
    
    - name: Set kubeconfig paths for remote deployment
      ansible.builtin.set_fact:
        kubeconfig_output_dir: "/home/{{ ansible_user }}/kind-cluster-config"
        kind_config_dir: "/home/{{ ansible_user }}/kind-cluster-config"
        kubeconfig_dir: "/home/{{ ansible_user }}/kind-cluster-config"
      when: deployment_mode is defined and deployment_mode == 'remote'
    
    - name: Set kubeconfig paths for local deployment
      ansible.builtin.set_fact:
        kind_config_dir: "{{ kubeconfig_output_dir }}"
        kubeconfig_dir: "{{ kubeconfig_output_dir }}"
      when: deployment_mode is not defined or deployment_mode != 'remote'
  
  roles:
    # Infrastructure
    # Infrastructure - Kubernetes Cluster Provisioning (conditional)
    - role: kind-cluster
      tags: [infrastructure, kind-cluster]
      when: k8s_distribution | default('kind') == 'kind'
      tags: [infrastructure, k8s, kind-cluster]
    
    # TODO: Add kubespray role when ready
    # - role: kubespray-cluster
    #   when: k8s_distribution == 'kubespray'
    #   tags: [infrastructure, k8s, kubespray-cluster]
    
    # TODO: Add kubeadm role when ready
    # - role: kubeadm-cluster
    #   when: k8s_distribution == 'kubeadm'
    #   tags: [infrastructure, k8s, kubeadm-cluster]
    
    # Note: When k8s_distribution == 'existing', skip cluster provisioning
    
    - role: helm
      tags: [infrastructure, helm]
@@ -109,7 +122,7 @@
          ==========================================
          
          Components Deployed:
            ✓ Kind Cluster ({{ kind_cluster_name }})
            ✓ K8s Cluster ({{ cluster_name }}) - {{ k8s_distribution | default('kind') }}
            ✓ Prometheus Monitoring
            ✓ Node Feature Discovery
            ✓ Zot Registry
@@ -122,7 +135,7 @@
            ✓ Lite2Edge Platform (shared)
          
          Access Points:
            Kubeconfig: {{ kind_config_dir }}/{{ kubeconfig_filename }}
            Kubeconfig: {{ kubeconfig_dir | default(kubeconfig_output_dir) }}/{{ kubeconfig_filename }}
            Prometheus: http://{{ host_ip | default('localhost') }}:30090
            Grafana: http://{{ host_ip | default('localhost') }}:30091
            Homer: http://{{ host_ip | default('localhost') }}:{{ homer_nodeport }}
+2 −2
Original line number Diff line number Diff line
@@ -11,8 +11,8 @@ remote_federation_manager_state: present
remote_federation_manager_namespace: "federation-manager-remote"

# Kubeconfig
# Supports both kind_config_dir (from playbooks) and kubeconfig_output_dir (from scenarios)
remote_federation_manager_kubeconfig: "{{ kind_config_dir | default(kubeconfig_output_dir) }}/{{ kubeconfig_filename }}"
# Supports both kubeconfig_dir (generic) and legacy variables for backwards compatibility
remote_federation_manager_kubeconfig: "{{ kubeconfig_dir | default(kind_config_dir) | default(kubeconfig_output_dir) }}/{{ kubeconfig_filename }}"

# ==========================================
# Remote Federation Manager Image
+2 −2
Original line number Diff line number Diff line
@@ -10,8 +10,8 @@ federation_manager_state: present
federation_manager_namespace: "federation-manager"

# Kubeconfig
# Supports both kind_config_dir (from playbooks) and kubeconfig_output_dir (from scenarios)
federation_manager_kubeconfig: "{{ kind_config_dir | default(kubeconfig_output_dir) }}/{{ kubeconfig_filename }}"
# Supports both kubeconfig_dir (generic) and legacy variables for backwards compatibility
federation_manager_kubeconfig: "{{ kubeconfig_dir | default(kind_config_dir) | default(kubeconfig_output_dir) }}/{{ kubeconfig_filename }}"

# ==========================================
# Federation Manager Image
+2 −0
Original line number Diff line number Diff line
@@ -81,11 +81,13 @@
- name: Set config directory for remote deployment
  ansible.builtin.set_fact:
    kind_config_dir: "/home/{{ ansible_user }}/kind-cluster-config"
    kubeconfig_dir: "/home/{{ ansible_user }}/kind-cluster-config"  # Generic variable
  when: deployment_mode is defined and deployment_mode == 'remote'

- name: Set config directory for local deployment
  ansible.builtin.set_fact:
    kind_config_dir: "{{ kubeconfig_output_dir }}"
    kubeconfig_dir: "{{ kubeconfig_output_dir }}"  # Generic variable
  when: deployment_mode is not defined or deployment_mode != 'remote'

- name: Ensure Kind config directory exists
Loading