Commit 08de0f42 authored by Sergio Gimenez's avatar Sergio Gimenez
Browse files

Add playbooks for deploying and undeploying Node Feature Discovery and...

Add playbooks for deploying and undeploying Node Feature Discovery and Prometheus Stack; refactor deployment scenarios
parent ae700c11
Loading
Loading
Loading
Loading
+81 −0
Changes for ansible/playbooks/infrastructure/install-node-feature-discovery.yml: 81 added lines, 0 removed lines.
Original line number Diff line number Diff line
---
# Playbook: Install Node Feature Discovery
# Description: Installs Helm and Node Feature Discovery
# Usage: ansible-playbook playbooks/infrastructure/install-node-feature-discovery.yml

- name: Install Node Feature Discovery
  hosts: kind_cluster
  gather_facts: true
  
  pre_tasks:
    - name: Load group variables
      ansible.builtin.include_vars:
        file: "{{ playbook_dir }}/../../group_vars/all.yml"

    - name: Set kubeconfig path for remote deployment
      ansible.builtin.set_fact:
        kubeconfig_output_dir: "/home/{{ ansible_user }}/kind-cluster-config"
        kubeconfig_path: "/home/{{ ansible_user }}/kind-cluster-config/{{ kubeconfig_filename }}"
      when: deployment_mode is defined and deployment_mode == 'remote'

    - name: Set kubeconfig path for local deployment
      ansible.builtin.set_fact:
        kubeconfig_path: "{{ kubeconfig_output_dir }}/{{ kubeconfig_filename }}"
      when: deployment_mode is not defined or deployment_mode != 'remote'

    - name: Display playbook information
      ansible.builtin.debug:
        msg: |
          ==========================================
          Installing Node Feature Discovery
          ==========================================
          Components to install:
            1. Helm 3
            2. Node Feature Discovery
          
          Cluster: {{ kind_cluster_name | default('operator-platform') }}
          Kubeconfig: {{ kubeconfig_path }}
          ==========================================

    - name: Verify Kind cluster exists
      ansible.builtin.command: kubectl --kubeconfig={{ kubeconfig_path }} cluster-info
      changed_when: false
      register: cluster_check
      failed_when: cluster_check.rc != 0

    - name: Display cluster information
      ansible.builtin.debug:
        msg: "✓ Cluster is accessible: {{ cluster_check.stdout_lines[0] }}"

    - name: Get cluster nodes
      ansible.builtin.command: kubectl --kubeconfig={{ kubeconfig_path }} get nodes
      register: cluster_nodes
      changed_when: false

    - name: Display cluster nodes
      ansible.builtin.debug:
        msg: "{{ cluster_nodes.stdout_lines }}"

  roles:
    - role: helm
      tags: ['helm', 'dependencies']
    
    - role: node-feature-discovery
      tags: ['nfd', 'node-feature-discovery', 'dependencies']

  post_tasks:
    - name: Display installation summary
      ansible.builtin.debug:
        msg: |
          ==========================================
          ✓ Node Feature Discovery installed!
          ==========================================
          
          Components installed:
            ✓ Helm 3
            ✓ Node Feature Discovery
              - Custom labels applied
          
          Useful commands:
            # Check NFD labels
            kubectl get nodes --show-labels
+8 −27
Changes for ansible/playbooks/infrastructure/install-prometheus.yml: 8 added lines, 27 removed lines.
Original line number Diff line number Diff line
---
# Playbook: Install i2edge Dependencies
# Description: Installs Helm, Prometheus Stack, and Node Feature Discovery
# Usage: ansible-playbook playbooks/tools/i2edge/install-dependencies.yml
# Playbook: Install Prometheus Stack
# Description: Installs Helm and Prometheus Stack
# Usage: ansible-playbook playbooks/infrastructure/install-prometheus.yml

- name: Install i2edge Dependencies
- name: Install Prometheus Stack
  hosts: kind_cluster
  gather_facts: true
  
  pre_tasks:
    - name: Load group variables
      ansible.builtin.include_vars:
        file: "{{ playbook_dir }}/../../../group_vars/all.yml"
        file: "{{ playbook_dir }}/../../group_vars/all.yml"

    - name: Set kubeconfig path for remote deployment
      ansible.builtin.set_fact:
        kubeconfig_output_dir: "/home/{{ ansible_user }}/kind-cluster-config"
        kubeconfig_path: "/home/{{ ansible_user }}/kind-cluster-config/{{ kubeconfig_filename }}"
      when: deployment_mode is defined and deployment_mode == 'remote'

@@ -26,12 +27,11 @@
      ansible.builtin.debug:
        msg: |
          ==========================================
          Installing i2edge Dependencies
          Installing Prometheus Stack
          ==========================================
          Components to install:
            1. Helm 3
            2. Prometheus Stack (monitoring namespace)
            3. Node Feature Discovery
          
          Cluster: {{ kind_cluster_name | default('operator-platform') }}
          Kubeconfig: {{ kubeconfig_path }}
@@ -63,15 +63,12 @@
    - role: prometheus
      tags: ['prometheus', 'monitoring', 'dependencies']

    - role: node-feature-discovery
      tags: ['nfd', 'node-feature-discovery', 'dependencies']

  post_tasks:
    - name: Display installation summary
      ansible.builtin.debug:
        msg: |
          ==========================================
          ✓ i2edge dependencies installed!
          ✓ Prometheus Stack installed!
          ==========================================
          
          Components installed:
@@ -82,8 +79,6 @@
              - Grafana: {{ grafana_nodeport | default('30091') }}
              - Alertmanager: {{ alertmanager_nodeport | default('30092') }}
              - Grafana credentials: admin/{{ grafana_admin_password | default('admin') }}
            ✓ Node Feature Discovery
              - Custom labels applied
          
          Access Prometheus Stack:
            Prometheus: http://{{ kubeconfig_server_host }}:{{ prometheus_nodeport | default('30090') }}
@@ -93,17 +88,3 @@
          Useful commands:
            # Check Prometheus pods
            kubectl get pods -n {{ prometheus_namespace | default('monitoring') }}
            
            # Check NFD labels
            kubectl get nodes --show-labels
          
          Configuration files:
            Kubeconfig: {{ kubeconfig_output_dir }}/{{ kubeconfig_filename }}
            Prometheus values: {{ kubeconfig_output_dir }}/prometheus-values.yaml
            NFD labels: {{ kubeconfig_output_dir }}/nfd-node-labels.yaml
          
          Next step:
            Deploy i2edge application with:
            ansible-playbook playbooks/tools/i2edge/deploy.yml
          ==========================================
      tags: ['always']
+3 −2
Changes for ansible/playbooks/infrastructure/kind-cluster/deploy.yml: 3 added lines, 2 removed lines.
Original line number Diff line number Diff line
---
# Playbook: Deploy Kind Cluster
# Description: Creates a Kind cluster for the Operator Platform
# Usage: ansible-playbook playbooks/tools/kind-cluster/deploy.yml
# Usage: ansible-playbook playbooks/infrastructure/kind-cluster/deploy.yml

- name: Deploy Kind Cluster for Operator Platform
  hosts: kind_cluster
@@ -97,7 +97,8 @@
             kubectl cluster-info
          
          4. Install dependencies (Prometheus, NFD):
             ansible-playbook playbooks/tools/i2edge/install-dependencies.yml
             ansible-playbook playbooks/infrastructure/install-prometheus.yml
             ansible-playbook playbooks/infrastructure/install-node-feature-discovery.yml
          
          5. Deploy i2edge:
             ansible-playbook playbooks/tools/i2edge/deploy.yml
+1 −1
Changes for ansible/playbooks/infrastructure/kind-cluster/undeploy.yml: 1 added line, 1 removed line.
Original line number Diff line number Diff line
---
# Playbook: Undeploy Kind Cluster
# Description: Removes the Kind cluster and cleans up resources
# Usage: ansible-playbook playbooks/tools/kind-cluster/undeploy.yml
# Usage: ansible-playbook playbooks/infrastructure/kind-cluster/undeploy.yml

- name: Undeploy Kind Cluster for Operator Platform
  hosts: kind_cluster
+31 −0
Changes for ansible/playbooks/scenarios/deploy_single_oop.yml: 31 added lines, 0 removed lines.
Original line number Diff line number Diff line
---
# Playbook: Single OOP Deployment Scenario
# Description: Deploys the complete Operator Platform environment using lite2edge
# Usage: ansible-playbook playbooks/scenarios/deploy_single_oop.yml

- name: Configure Scenario Variables
  hosts: kind_cluster
  gather_facts: false
  tasks:
    - name: Load group variables
      ansible.builtin.include_vars:
        file: "{{ playbook_dir }}/../../group_vars/all.yml"
    
    # TODO Make this pluggable for different edgecloud adapters
    - name: Set Federation Manager to use lite2edge
      ansible.builtin.set_fact:
        federation_manager_ecp_port: "{{ lite2edge_nodeport }}"
        federation_manager_ecp_client_name: "lite2edge"
        remote_federation_manager_ecp_port: "{{ lite2edge_nodeport }}"
        remote_federation_manager_ecp_client_name: "lite2edge"

- import_playbook: ../infrastructure/kind-cluster/deploy.yml
- import_playbook: ../infrastructure/install-prometheus.yml
- import_playbook: ../infrastructure/install-node-feature-discovery.yml
- import_playbook: ../tools/harbor/deploy.yml
- import_playbook: ../tools/artefact-manager/deploy.yml
- import_playbook: ../tools/federation-manager/deploy.yml
- import_playbook: ../tools/federation-manager/deploy-remote.yml
- import_playbook: ../tools/homer/deploy.yml
- import_playbook: ../tools/lite2edge/deploy.yml
Loading