Commit 55ec9aea authored by Sergio Gimenez's avatar Sergio Gimenez
Browse files

FM seems to depoy properly

parent 799b6df2
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -13,26 +13,36 @@ nodes:
          - "127.0.0.1"
          - "10.69.222.3"
    extraPortMappings:
      # API Server
      - containerPort: 6443
        hostPort: 6443
        listenAddress: "0.0.0.0"
        protocol: TCP
      # Prometheus
      - containerPort: 30090
        hostPort: 30090
        listenAddress: "0.0.0.0"
        protocol: TCP
      # Grafana
      - containerPort: 30091
        hostPort: 30091
        listenAddress: "0.0.0.0"
        protocol: TCP
      # Alertmanager
      - containerPort: 30092
        hostPort: 30092
        listenAddress: "0.0.0.0"
        protocol: TCP
      # i2edge
      - containerPort: 30769
        hostPort: 30769
        listenAddress: "0.0.0.0"
        protocol: TCP
      # Federation Manager
      - containerPort: 30081
        hostPort: 30081
        listenAddress: "0.0.0.0"
        protocol: TCP
  - role: worker
  - role: worker
containerdConfigPatches:
+34 −8
Original line number Diff line number Diff line
@@ -27,41 +27,67 @@ harbor_http_nodeport: 30002
harbor_https_nodeport: 30003
i2edge_nodeport: 30769
artefact_manager_nodeport: 30080
federation_manager_nodeport: 30081
keycloak_nodeport: 30082
mongodb_nodeport: 30017

# Port mappings - using parameterized NodePorts to avoid duplication
port_mappings:
  - container_port: "{{ api_server_port }}"
  - name: "API Server"
    container_port: "{{ api_server_port }}"
    host_port: "{{ api_server_port }}"
    listen_address: "{{ api_server_address }}"
    protocol: TCP
  - container_port: "{{ prometheus_nodeport }}"
  - name: "Prometheus"
    container_port: "{{ prometheus_nodeport }}"
    host_port: "{{ prometheus_nodeport }}"
    listen_address: "{{ api_server_address }}"
    protocol: TCP
  - container_port: "{{ grafana_nodeport }}"
  - name: "Grafana"
    container_port: "{{ grafana_nodeport }}"
    host_port: "{{ grafana_nodeport }}"
    listen_address: "{{ api_server_address }}"
    protocol: TCP
  - container_port: "{{ alertmanager_nodeport }}"
  - name: "Alertmanager"
    container_port: "{{ alertmanager_nodeport }}"
    host_port: "{{ alertmanager_nodeport }}"
    listen_address: "{{ api_server_address }}"
    protocol: TCP
  - container_port: "{{ harbor_http_nodeport }}"
  - name: "Harbor HTTP"
    container_port: "{{ harbor_http_nodeport }}"
    host_port: "{{ harbor_http_nodeport }}"
    listen_address: "{{ api_server_address }}"
    protocol: TCP
  - container_port: "{{ harbor_https_nodeport }}"
  - name: "Harbor HTTPS"
    container_port: "{{ harbor_https_nodeport }}"
    host_port: "{{ harbor_https_nodeport }}"
    listen_address: "{{ api_server_address }}"
    protocol: TCP
  - container_port: "{{ i2edge_nodeport }}"
  - name: "i2edge"
    container_port: "{{ i2edge_nodeport }}"
    host_port: "{{ i2edge_nodeport }}"
    listen_address: "{{ api_server_address }}"
    protocol: TCP
  - container_port: "{{ artefact_manager_nodeport }}"
  - name: "Artefact Manager"
    container_port: "{{ artefact_manager_nodeport }}"
    host_port: "{{ artefact_manager_nodeport }}"
    listen_address: "{{ api_server_address }}"
    protocol: TCP
  - name: "Federation Manager"
    container_port: "{{ federation_manager_nodeport }}"
    host_port: "{{ federation_manager_nodeport }}"
    listen_address: "{{ api_server_address }}"
    protocol: TCP
  - name: "Keycloak"
    container_port: "{{ keycloak_nodeport }}"
    host_port: "{{ keycloak_nodeport }}"
    listen_address: "{{ api_server_address }}"
    protocol: TCP
  - name: "MongoDB"
    container_port: "{{ mongodb_nodeport }}"
    host_port: "{{ mongodb_nodeport }}"
    listen_address: "{{ api_server_address }}"
    protocol: TCP

# Cluster nodes configuration
control_plane_nodes: 1
+21 −0
Original line number Diff line number Diff line
---
# Playbook: Deploy Federation Manager
# Description: Deploys Federation Manager to the Kind cluster
# Usage: ansible-playbook playbooks/04-deploy-federation-manager.yml

- name: Deploy Federation Manager to Kind Cluster
  hosts: kind_cluster
  gather_facts: true

  pre_tasks:
    - name: Load group variables
      ansible.builtin.include_vars:
        file: "{{ playbook_dir }}/../group_vars/all.yml"

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

  roles:
    - role: federation-manager
+48 −0
Original line number Diff line number Diff line
---
federation_manager_image: "labs.etsi.org:5050/oop/code/federation-manager/federation-manager"
federation_manager_tag: "latest"
federation_manager_namespace: "federation-manager"
federation_manager_replicas: 1
federation_manager_container_port: 8989
federation_manager_nodeport: 30081

# Keycloak Configuration
keycloak_image: "quay.io/keycloak/keycloak"
keycloak_tag: "26.1.4"
keycloak_nodeport: 30082
federation_manager_keycloak_host: "keycloak"
federation_manager_keycloak_port: 8080
federation_manager_keycloak_client1_id: "originating-op-1"
federation_manager_keycloak_client1_secret: "dd7vNwFqjNpYwaghlEwMbw10g0klWDHb"
federation_manager_keycloak_client2_id: "originating-op-2"
federation_manager_keycloak_client2_secret: "2mhznERfWclLDuVojY77Lp4Qd2r4e8Ms"
federation_manager_keycloak_scope: "fed-mgmt"
keycloak_admin_user: "admin"
keycloak_admin_password: "admin"

# MongoDB Configuration
mongodb_image: "mongo"
mongodb_tag: "6.0"
mongodb_nodeport: 30017
federation_manager_mongodb_host: "mongodb"
federation_manager_mongodb_port: 27017
mongodb_data_dir: "/tmp/db"

# Operator Platform Data
federation_manager_op_id: "i2cat"
federation_manager_op_country_code: "ES"
federation_manager_op_mcc: "001"
federation_manager_op_mnc: "01"
federation_manager_op_fixed_network_code: "34"
federation_manager_op_platform_caps: "homeRouting"

# Edge Cloud Platform (i2edge)
federation_manager_ecp_host: "i2edge"
federation_manager_ecp_port: 30769
federation_manager_ecp_client_name: "i2edge"
federation_manager_ecp_flavour_id: "default-flavour"

# Artefact Manager
federation_manager_am_host: "artefact-manager"
federation_manager_am_port: 8000
federation_manager_am_enabled: "true"
+107 −0
Original line number Diff line number Diff line
---
- name: Pull Federation Manager Docker image
  ansible.builtin.command: "docker pull --platform linux/amd64 {{ federation_manager_image }}:{{ federation_manager_tag }}"
  register: docker_pull
  changed_when: "'Downloaded newer image' in docker_pull.stdout"

- name: Load Federation Manager image into Kind cluster
  ansible.builtin.command: "kind load docker-image {{ federation_manager_image }}:{{ federation_manager_tag }} --name {{ kind_cluster_name }}"
  register: kind_load
  changed_when: "'Image loaded' in kind_load.stdout"

# - name: Pull MongoDB Docker image
#   ansible.builtin.command: "docker pull --platform linux/amd64 {{ mongodb_image }}:{{ mongodb_tag }}"
#   register: docker_pull_mongo
#   changed_when: "'Downloaded newer image' in docker_pull_mongo.stdout"

# - name: Save MongoDB image to archive
#   ansible.builtin.command: "docker save -o /tmp/mongo.tar {{ mongodb_image }}:{{ mongodb_tag }}"
#   changed_when: false

# - name: Load MongoDB image into Kind cluster
#   ansible.builtin.command: "kind load image-archive /tmp/mongo.tar --name {{ kind_cluster_name }}"
#   register: kind_load_mongo
#   changed_when: "'Image loaded' in kind_load_mongo.stdout"

# - name: Remove MongoDB archive
#   ansible.builtin.file:
#     path: /tmp/mongo.tar
#     state: absent

# - name: Pull Keycloak Docker image
#   ansible.builtin.command: "docker pull --platform linux/amd64 {{ keycloak_image }}:{{ keycloak_tag }}"
#   register: docker_pull_keycloak
#   changed_when: "'Downloaded newer image' in docker_pull_keycloak.stdout"

# - name: Load Keycloak image into Kind cluster
#   ansible.builtin.command: "kind load docker-image {{ keycloak_image }}:{{ keycloak_tag }} --name {{ kind_cluster_name }}"
#   register: kind_load_keycloak
#   changed_when: "'Image loaded' in kind_load_keycloak.stdout"

- name: Create Federation Manager namespace
  ansible.builtin.command: "kubectl create namespace {{ federation_manager_namespace }} --dry-run=client -o yaml"
  register: ns_manifest
  environment:
    KUBECONFIG: "{{ kubeconfig_output_dir }}/{{ kubeconfig_filename }}"

- name: Apply Federation Manager namespace
  ansible.builtin.command: "kubectl apply -f -"
  args:
    stdin: "{{ ns_manifest.stdout }}"
  changed_when: "'created' in ns_manifest.stdout"
  environment:
    KUBECONFIG: "{{ kubeconfig_output_dir }}/{{ kubeconfig_filename }}"

- name: Generate MongoDB manifest
  ansible.builtin.template:
    src: mongo-db.yaml.j2
    dest: "/tmp/mongo-db.yaml"

- name: Apply MongoDB manifest
  ansible.builtin.command: "kubectl apply -f /tmp/mongo-db.yaml"
  register: apply_mongo
  changed_when: "'created' in apply_mongo.stdout or 'configured' in apply_mongo.stdout"
  environment:
    KUBECONFIG: "{{ kubeconfig_output_dir }}/{{ kubeconfig_filename }}"

- name: Generate Keycloak manifest
  ansible.builtin.template:
    src: keycloak.yaml.j2
    dest: "/tmp/keycloak.yaml"

- name: Apply Keycloak manifest
  ansible.builtin.command: "kubectl apply -f /tmp/keycloak.yaml"
  register: apply_keycloak
  changed_when: "'created' in apply_keycloak.stdout or 'configured' in apply_keycloak.stdout"
  environment:
    KUBECONFIG: "{{ kubeconfig_output_dir }}/{{ kubeconfig_filename }}"

- name: Generate Federation Manager manifest
  ansible.builtin.template:
    src: federation-manager.yaml.j2
    dest: "/tmp/federation-manager.yaml"

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

- name: Wait for MongoDB to be ready
  ansible.builtin.command: "kubectl wait --namespace {{ federation_manager_namespace }} --for=condition=ready pod --selector=app=mongodb --timeout=300s"
  changed_when: false
  environment:
    KUBECONFIG: "{{ kubeconfig_output_dir }}/{{ kubeconfig_filename }}"

- name: Wait for Keycloak to be ready
  ansible.builtin.command: "kubectl wait --namespace {{ federation_manager_namespace }} --for=condition=ready pod --selector=app=keycloak --timeout=300s"
  changed_when: false
  environment:
    KUBECONFIG: "{{ kubeconfig_output_dir }}/{{ kubeconfig_filename }}"

- name: Wait for Federation Manager to be ready
  ansible.builtin.command: "kubectl wait --namespace {{ federation_manager_namespace }} --for=condition=ready pod --selector=app=federation-manager --timeout=300s"
  changed_when: false
  environment:
    KUBECONFIG: "{{ kubeconfig_output_dir }}/{{ kubeconfig_filename }}"
Loading