Loading .ansible/.lock 0 → 100644 +0 −0 Empty file added. ansible/playbooks/02-deploy-i2edge.ymldeleted 100644 → 0 +0 −172 Original line number Diff line number Diff line --- # Playbook: Deploy i2edge Application # Description: Deploys i2edge application to Kind cluster (dependencies must be installed separately) # Usage: ansible-playbook ansible/playbooks/02-deploy-i2edge.yml - name: Deploy i2edge using docker hosts: kind_cluster gather_facts: true vars: i2edge_path: "/home/{{ ansible_user }}/i2edge" 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' - name: Set i2edge paths for deployment mode ansible.builtin.set_fact: local_i2edge_path: "{{ i2edge_base_path }}" remote_i2edge_path: "/home/{{ ansible_user }}/i2edge" - name: Update i2edge_path for remote deployment ansible.builtin.set_fact: i2edge_path: "{{ remote_i2edge_path }}" when: deployment_mode is defined and deployment_mode == 'remote' - name: Display playbook information ansible.builtin.debug: msg: | ========================================== Deploying i2edge Application ========================================== Cluster: {{ kind_cluster_name | default('operator-platform') }} Local i2edge path: {{ local_i2edge_path }} Remote i2edge path: {{ remote_i2edge_path }} Deployment mode: {{ deployment_mode | default('local') }} Note: This playbook only deploys i2edge. Dependencies (Helm, Prometheus, NFD) must be installed separately. ========================================== - name: Verify Kind cluster exists ansible.builtin.command: kubectl --kubeconfig={{ kubeconfig_output_dir }}/{{ kubeconfig_filename }} 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_output_dir }}/{{ kubeconfig_filename }} get nodes register: cluster_nodes changed_when: false changed_when: false - name: Display cluster nodes ansible.builtin.debug: msg: "{{ cluster_nodes.stdout_lines }}" - name: (TMP) Check if rsync is installed ansible.builtin.command: which rsync register: rsync_check failed_when: false changed_when: false - name: (TMP) Install rsync ansible.builtin.apt: name: rsync state: present become: true when: rsync_check.rc != 0 - name: (TMP) Ensure i2edge parent directory exists ansible.builtin.file: path: "{{ remote_i2edge_path | dirname }}" state: directory mode: "0755" owner: "{{ ansible_user }}" group: "{{ ansible_user }}" become: true - name: (TMP) Create archive of i2edge code locally delegate_to: localhost run_once: true ansible.builtin.command: > tar -czf /tmp/i2edge.tar.gz -C {{ local_i2edge_path | dirname }} {{ local_i2edge_path | basename }} changed_when: false # noqa: command-instead-of-module run-once[task] - name: (TMP) Unarchive i2edge code on VM ansible.builtin.unarchive: src: /tmp/i2edge.tar.gz dest: "{{ remote_i2edge_path | dirname }}" mode: "0755" owner: "{{ ansible_user }}" group: "{{ ansible_user }}" roles: - role: i2edge vars: i2edge_state: present tags: ["i2edge", "application"] post_tasks: - name: Get i2edge NodePort ansible.builtin.command: > kubectl get svc -n {{ i2edge_namespace | default('i2edge') }} i2edge -o jsonpath='{.spec.ports[0].nodePort}' register: i2edge_nodeport_final changed_when: false failed_when: false environment: KUBECONFIG: "{{ kubeconfig_output_dir }}/{{ kubeconfig_filename }}" tags: ["i2edge", "application"] - name: Display deployment summary ansible.builtin.debug: msg: | ========================================== ✓ i2edge deployment completed! ========================================== Deployed components: ✓ i2edge Application - Namespace: {{ i2edge_namespace | default('i2edge') }} - NodePort: {{ i2edge_nodeport_final.stdout if i2edge_nodeport_final.rc == 0 else 'N/A' }} Access i2edge: API: http://{{ kubeconfig_server_host }}:{{ i2edge_nodeport_final.stdout }} Swagger UI: http://{{ kubeconfig_server_host }}:{{ i2edge_nodeport_final.stdout }}/docs Access Monitoring (if dependencies installed): Prometheus: http://{{ kubeconfig_server_host }}:{{ prometheus_nodeport | default('30090') }} Grafana: http://{{ kubeconfig_server_host }}:{{ grafana_nodeport | default('30091') }} Alertmanager: http://{{ kubeconfig_server_host }}:{{ alertmanager_nodeport | default('30092') }} Useful commands: # Check i2edge status kubectl get pods -n {{ i2edge_namespace | default('i2edge') }} # View i2edge logs kubectl logs -n {{ i2edge_namespace | default('i2edge') }} deployment/i2edge -f # Access i2edge shell kubectl exec -it -n {{ i2edge_namespace | default('i2edge') }} deployment/i2edge -- /bin/bash Configuration files: Kubeconfig: {{ kubeconfig_output_dir }}/{{ kubeconfig_filename }} ========================================== when: i2edge_nodeport_final.rc == 0 tags: ["always"] - name: Display deployment summary (without i2edge port) ansible.builtin.debug: msg: | ========================================== ✓ Deployment completed! ========================================== Note: i2edge NodePort not yet available Check status with: kubectl get svc -n {{ i2edge_namespace | default('i2edge') }} ========================================== when: i2edge_nodeport_final.rc != 0 tags: ["always"] ansible/playbooks/scenarios/full-deployment.yml 0 → 100644 +13 −0 Original line number Diff line number Diff line --- # Playbook: Full Deployment Scenario # Description: Deploys the complete Operator Platform environment # Usage: ansible-playbook playbooks/scenarios/full-deployment.yml - import_playbook: ../tools/kind-cluster/deploy.yml - import_playbook: ../tools/harbor/deploy.yml - import_playbook: ../tools/i2edge/install-dependencies.yml - import_playbook: ../tools/i2edge/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 ansible/playbooks/scenarios/graceful-full-undeployment.yml 0 → 100644 +12 −0 Original line number Diff line number Diff line --- # Playbook: Graceful Full Undeployment Scenario # Description: Undeploys the complete Operator Platform environment step-by-step # Usage: ansible-playbook playbooks/scenarios/graceful-full-undeployment.yml - import_playbook: ../tools/homer/undeploy.yml - import_playbook: ../tools/federation-manager/undeploy-remote.yml - import_playbook: ../tools/federation-manager/undeploy.yml - import_playbook: ../tools/artefact-manager/undeploy.yml - import_playbook: ../tools/i2edge/undeploy.yml - import_playbook: ../tools/harbor/undeploy.yml - import_playbook: ../tools/kind-cluster/undeploy.yml ansible/playbooks/scenarios/quick-undeployment.yml 0 → 100644 +6 −0 Original line number Diff line number Diff line --- # Playbook: Quick Undeployment Scenario # Description: Quickly destroys the entire environment by deleting the Kind cluster # Usage: ansible-playbook playbooks/scenarios/quick-undeployment.yml - import_playbook: ../tools/kind-cluster/undeploy.yml Loading
ansible/playbooks/02-deploy-i2edge.ymldeleted 100644 → 0 +0 −172 Original line number Diff line number Diff line --- # Playbook: Deploy i2edge Application # Description: Deploys i2edge application to Kind cluster (dependencies must be installed separately) # Usage: ansible-playbook ansible/playbooks/02-deploy-i2edge.yml - name: Deploy i2edge using docker hosts: kind_cluster gather_facts: true vars: i2edge_path: "/home/{{ ansible_user }}/i2edge" 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' - name: Set i2edge paths for deployment mode ansible.builtin.set_fact: local_i2edge_path: "{{ i2edge_base_path }}" remote_i2edge_path: "/home/{{ ansible_user }}/i2edge" - name: Update i2edge_path for remote deployment ansible.builtin.set_fact: i2edge_path: "{{ remote_i2edge_path }}" when: deployment_mode is defined and deployment_mode == 'remote' - name: Display playbook information ansible.builtin.debug: msg: | ========================================== Deploying i2edge Application ========================================== Cluster: {{ kind_cluster_name | default('operator-platform') }} Local i2edge path: {{ local_i2edge_path }} Remote i2edge path: {{ remote_i2edge_path }} Deployment mode: {{ deployment_mode | default('local') }} Note: This playbook only deploys i2edge. Dependencies (Helm, Prometheus, NFD) must be installed separately. ========================================== - name: Verify Kind cluster exists ansible.builtin.command: kubectl --kubeconfig={{ kubeconfig_output_dir }}/{{ kubeconfig_filename }} 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_output_dir }}/{{ kubeconfig_filename }} get nodes register: cluster_nodes changed_when: false changed_when: false - name: Display cluster nodes ansible.builtin.debug: msg: "{{ cluster_nodes.stdout_lines }}" - name: (TMP) Check if rsync is installed ansible.builtin.command: which rsync register: rsync_check failed_when: false changed_when: false - name: (TMP) Install rsync ansible.builtin.apt: name: rsync state: present become: true when: rsync_check.rc != 0 - name: (TMP) Ensure i2edge parent directory exists ansible.builtin.file: path: "{{ remote_i2edge_path | dirname }}" state: directory mode: "0755" owner: "{{ ansible_user }}" group: "{{ ansible_user }}" become: true - name: (TMP) Create archive of i2edge code locally delegate_to: localhost run_once: true ansible.builtin.command: > tar -czf /tmp/i2edge.tar.gz -C {{ local_i2edge_path | dirname }} {{ local_i2edge_path | basename }} changed_when: false # noqa: command-instead-of-module run-once[task] - name: (TMP) Unarchive i2edge code on VM ansible.builtin.unarchive: src: /tmp/i2edge.tar.gz dest: "{{ remote_i2edge_path | dirname }}" mode: "0755" owner: "{{ ansible_user }}" group: "{{ ansible_user }}" roles: - role: i2edge vars: i2edge_state: present tags: ["i2edge", "application"] post_tasks: - name: Get i2edge NodePort ansible.builtin.command: > kubectl get svc -n {{ i2edge_namespace | default('i2edge') }} i2edge -o jsonpath='{.spec.ports[0].nodePort}' register: i2edge_nodeport_final changed_when: false failed_when: false environment: KUBECONFIG: "{{ kubeconfig_output_dir }}/{{ kubeconfig_filename }}" tags: ["i2edge", "application"] - name: Display deployment summary ansible.builtin.debug: msg: | ========================================== ✓ i2edge deployment completed! ========================================== Deployed components: ✓ i2edge Application - Namespace: {{ i2edge_namespace | default('i2edge') }} - NodePort: {{ i2edge_nodeport_final.stdout if i2edge_nodeport_final.rc == 0 else 'N/A' }} Access i2edge: API: http://{{ kubeconfig_server_host }}:{{ i2edge_nodeport_final.stdout }} Swagger UI: http://{{ kubeconfig_server_host }}:{{ i2edge_nodeport_final.stdout }}/docs Access Monitoring (if dependencies installed): Prometheus: http://{{ kubeconfig_server_host }}:{{ prometheus_nodeport | default('30090') }} Grafana: http://{{ kubeconfig_server_host }}:{{ grafana_nodeport | default('30091') }} Alertmanager: http://{{ kubeconfig_server_host }}:{{ alertmanager_nodeport | default('30092') }} Useful commands: # Check i2edge status kubectl get pods -n {{ i2edge_namespace | default('i2edge') }} # View i2edge logs kubectl logs -n {{ i2edge_namespace | default('i2edge') }} deployment/i2edge -f # Access i2edge shell kubectl exec -it -n {{ i2edge_namespace | default('i2edge') }} deployment/i2edge -- /bin/bash Configuration files: Kubeconfig: {{ kubeconfig_output_dir }}/{{ kubeconfig_filename }} ========================================== when: i2edge_nodeport_final.rc == 0 tags: ["always"] - name: Display deployment summary (without i2edge port) ansible.builtin.debug: msg: | ========================================== ✓ Deployment completed! ========================================== Note: i2edge NodePort not yet available Check status with: kubectl get svc -n {{ i2edge_namespace | default('i2edge') }} ========================================== when: i2edge_nodeport_final.rc != 0 tags: ["always"]
ansible/playbooks/scenarios/full-deployment.yml 0 → 100644 +13 −0 Original line number Diff line number Diff line --- # Playbook: Full Deployment Scenario # Description: Deploys the complete Operator Platform environment # Usage: ansible-playbook playbooks/scenarios/full-deployment.yml - import_playbook: ../tools/kind-cluster/deploy.yml - import_playbook: ../tools/harbor/deploy.yml - import_playbook: ../tools/i2edge/install-dependencies.yml - import_playbook: ../tools/i2edge/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
ansible/playbooks/scenarios/graceful-full-undeployment.yml 0 → 100644 +12 −0 Original line number Diff line number Diff line --- # Playbook: Graceful Full Undeployment Scenario # Description: Undeploys the complete Operator Platform environment step-by-step # Usage: ansible-playbook playbooks/scenarios/graceful-full-undeployment.yml - import_playbook: ../tools/homer/undeploy.yml - import_playbook: ../tools/federation-manager/undeploy-remote.yml - import_playbook: ../tools/federation-manager/undeploy.yml - import_playbook: ../tools/artefact-manager/undeploy.yml - import_playbook: ../tools/i2edge/undeploy.yml - import_playbook: ../tools/harbor/undeploy.yml - import_playbook: ../tools/kind-cluster/undeploy.yml
ansible/playbooks/scenarios/quick-undeployment.yml 0 → 100644 +6 −0 Original line number Diff line number Diff line --- # Playbook: Quick Undeployment Scenario # Description: Quickly destroys the entire environment by deleting the Kind cluster # Usage: ansible-playbook playbooks/scenarios/quick-undeployment.yml - import_playbook: ../tools/kind-cluster/undeploy.yml