Commit 800acb66 authored by Sergio Gimenez's avatar Sergio Gimenez
Browse files

Refactor remaining roles to follow standard pattern

Applied standard role pattern to all remaining roles:

**artefact-manager**:
- Added state management (artefact_manager_state)
- Split tasks into main.yml (dispatcher), deploy.yml, undeploy.yml
- Converted kubectl commands to kubernetes.core.k8s module
- Added kubeconfig variable with fallback support
- Organized defaults with clear section headers

**homer**:
- Added state management (homer_state)
- Split tasks into main.yml (dispatcher), deploy.yml, undeploy.yml
- Converted shell commands to kubernetes.core.k8s module
- Added kubeconfig variable with fallback support
- Organized defaults with clear section headers

**zot**:
- Added state management (zot_state)
- Updated main.yml to route to undeploy.yml when absent
- Created undeploy.yml for cleanup tasks
- Converted kubectl namespace creation to kubernetes.core.k8s
- Replaced kind_config_dir with zot_kubeconfig throughout
- Organized defaults with clear section headers

**prometheus**:
- Added undeploy.yml with Helm uninstall and CRD cleanup
- Updated main.yml to route to undeploy.yml when absent
- Replaced kind_config_dir/kubeconfig_output_dir with prometheus_kubeconfig
- Converted kubectl namespace creation to kubernetes.core.k8s
- Organized defaults with clear section headers

**node-feature-discovery**:
- Added undeploy.yml for NFD removal
- Updated main.yml to route to undeploy.yml when absent
- Replaced kind_config_dir with nfd_kubeconfig throughout
- Converted kubectl namespace creation to kubernetes.core.k8s
- Organized defaults with clear section headers

All roles now:
- Support state-based deployment (present/absent)
- Use kubernetes.core.k8s instead of kubectl where possible
- Have consistent kubeconfig variable pattern with fallback
- Follow the standard structure defined in role-template/
- Pass ansible-lint with 0 failures and 0 warnings
parent dd015393
Loading
Loading
Loading
Loading
+19 −1
Original line number Diff line number Diff line
---
# ==========================================
# Artefact Manager Configuration
# ==========================================

# State management (present/absent)
artefact_manager_state: present

# Kubeconfig
# Supports both kind_config_dir (from playbooks) and kubeconfig_output_dir (from scenarios)
artefact_manager_kubeconfig: "{{ kind_config_dir | default(kubeconfig_output_dir) }}/{{ kubeconfig_filename }}"

# ==========================================
# Artefact Manager Image
# ==========================================
artefact_manager_image: "ghcr.io/sergio-gimenez/artefact-manager"
artefact_manager_tag: "main"
artefact_manager_namespace: "artefact-manager"
artefact_manager_replicas: 1
artefact_manager_container_port: 8000
artefact_manager_nodeport: 30080
artefact_manager_image_pull_policy: "Always"

# ==========================================
# Namespace
# ==========================================
artefact_manager_namespace: "artefact-manager"
+50 −0
Original line number Diff line number Diff line
---
# Artefact Manager deployment tasks

# ==========================================
# Namespace Setup
# ==========================================
- name: Create Artefact Manager namespace
  kubernetes.core.k8s:
    state: present
    definition:
      apiVersion: v1
      kind: Namespace
      metadata:
        name: "{{ artefact_manager_namespace }}"
    kubeconfig: "{{ artefact_manager_kubeconfig }}"

# ==========================================
# Artefact Manager Deployment
# ==========================================
- name: Generate Artefact Manager manifest
  ansible.builtin.template:
    src: artefact-manager.yaml.j2
    dest: "/tmp/artefact-manager.yaml"
    mode: '0644'

- name: Apply Artefact Manager manifest
  kubernetes.core.k8s:
    state: present
    src: "/tmp/artefact-manager.yaml"
    kubeconfig: "{{ artefact_manager_kubeconfig }}"

- name: Clean up temporary manifest
  ansible.builtin.file:
    path: "/tmp/artefact-manager.yaml"
    state: absent

# ==========================================
# Verification
# ==========================================
- name: Wait for Artefact Manager to be ready
  kubernetes.core.k8s_info:
    kind: Pod
    namespace: "{{ artefact_manager_namespace }}"
    label_selectors:
      - app=artefact-manager
    kubeconfig: "{{ artefact_manager_kubeconfig }}"
  register: artefact_manager_pods
  until: artefact_manager_pods.resources | length > 0 and artefact_manager_pods.resources[0].status.phase == "Running"
  retries: 30
  delay: 10
+8 −32
Original line number Diff line number Diff line
---
- name: Create Artefact Manager namespace
  ansible.builtin.command: "kubectl create namespace {{ artefact_manager_namespace }} --dry-run=client -o yaml"
  register: ns_manifest
  environment:
    KUBECONFIG: "{{ kind_config_dir }}/{{ kubeconfig_filename }}"
  changed_when: false
# Artefact Manager role entry point
# Routes to deploy or undeploy based on state

- name: Apply Artefact Manager namespace
  ansible.builtin.command: "kubectl apply -f -"
  args:
    stdin: "{{ ns_manifest.stdout }}"
  register: apply_ns
  changed_when: "'created' in apply_ns.stdout"
  environment:
    KUBECONFIG: "{{ kind_config_dir }}/{{ kubeconfig_filename }}"
- name: Deploy Artefact Manager
  ansible.builtin.include_tasks: deploy.yml
  when: artefact_manager_state == 'present'

- name: Generate Artefact Manager manifest
  ansible.builtin.template:
    src: artefact-manager.yaml.j2
    dest: "/tmp/artefact-manager.yaml"
    mode: '0644'

- name: Apply Artefact Manager manifest
  ansible.builtin.command: "kubectl apply -f /tmp/artefact-manager.yaml"
  register: apply_manifest
  changed_when: "'created' in apply_manifest.stdout or 'configured' in apply_manifest.stdout"
  environment:
    KUBECONFIG: "{{ kind_config_dir }}/{{ kubeconfig_filename }}"

- name: Wait for Artefact Manager to be ready
  ansible.builtin.command: "kubectl wait --namespace {{ artefact_manager_namespace }} --for=condition=ready pod --selector=app=artefact-manager --timeout=300s"
  changed_when: false
  environment:
    KUBECONFIG: "{{ kind_config_dir }}/{{ kubeconfig_filename }}"
- name: Undeploy Artefact Manager
  ansible.builtin.include_tasks: undeploy.yml
  when: artefact_manager_state == 'absent'
+33 −0
Original line number Diff line number Diff line
---
# Artefact Manager undeployment tasks

# ==========================================
# Remove Artefact Manager Resources
# ==========================================
- name: Get Artefact Manager manifest template
  ansible.builtin.template:
    src: artefact-manager.yaml.j2
    dest: "/tmp/artefact-manager.yaml"
    mode: '0644'

- name: Remove Artefact Manager deployment
  kubernetes.core.k8s:
    state: absent
    src: "/tmp/artefact-manager.yaml"
    kubeconfig: "{{ artefact_manager_kubeconfig }}"

- name: Clean up temporary manifest
  ansible.builtin.file:
    path: "/tmp/artefact-manager.yaml"
    state: absent

# ==========================================
# Remove Namespace
# ==========================================
- name: Remove Artefact Manager namespace
  kubernetes.core.k8s:
    state: absent
    kind: Namespace
    name: "{{ artefact_manager_namespace }}"
    kubeconfig: "{{ artefact_manager_kubeconfig }}"
  when: artefact_manager_remove_namespace | default(true)
+26 −2
Original line number Diff line number Diff line
---
# ==========================================
# Homer Dashboard Configuration
# ==========================================

# State management (present/absent)
homer_state: present

# Kubeconfig
# Supports both kind_config_dir (from playbooks) and kubeconfig_output_dir (from scenarios)
homer_kubeconfig: "{{ kind_config_dir | default(kubeconfig_output_dir) }}/{{ kubeconfig_filename }}"

# ==========================================
# Homer Image
# ==========================================
homer_image: "b4bz/homer"
homer_tag: "latest"
homer_namespace: "homer"
homer_replicas: 1
homer_container_port: 8080
homer_nodeport: 30088

# ==========================================
# Namespace
# ==========================================
homer_namespace: "homer"

# ==========================================
# Dashboard Content
# ==========================================
homer_title: "i2CAT Operator Platform"
homer_subtitle: "OOP Federation Manager & Services"

# Homer Theme Settings
# ==========================================
# Theme Settings
# ==========================================
homer_logo: "https://i2cat.net/wp-content/uploads/2020/05/logo-i2cat.png"
homer_color_primary: "#3f51b5"
homer_color_secondary: "#303f9f"
Loading