Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 2ede262abe |
31
README.md
31
README.md
@@ -1,34 +1,3 @@
|
|||||||
# RUN DOCKER DEMO
|
|
||||||
|
|
||||||
ADD a clean argo
|
|
||||||
```
|
|
||||||
./run_argo.sh
|
|
||||||
```
|
|
||||||
Verify with `kubectl get pods -n argo -w` -> all server are running and 1/1
|
|
||||||
Any problem with this, can be a top problem from your k3s or k8s (FIX IT BEFORE)
|
|
||||||
|
|
||||||
```
|
|
||||||
sudo ./clone_opencloud_microservices.sh demo-alpr
|
|
||||||
cd ./docker
|
|
||||||
./start-demo.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
GO on localhost:8000, prefer a "chromium-browser --disable-web-security" chrome no CORS session to reach img.
|
|
||||||
|
|
||||||
Before launch or to stop properly
|
|
||||||
|
|
||||||
```
|
|
||||||
cd ./docker
|
|
||||||
./stop.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
if you want a linux app :
|
|
||||||
|
|
||||||
```
|
|
||||||
cd ../oc-front
|
|
||||||
./local_run_traefik.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
# Purpose of this component
|
# Purpose of this component
|
||||||
|
|
||||||
The purpose of oc-deploy, is to deploy all the OC components over a Kubernetes cluster.
|
The purpose of oc-deploy, is to deploy all the OC components over a Kubernetes cluster.
|
||||||
|
|||||||
6
ansible/.gitignore
vendored
Normal file
6
ansible/.gitignore
vendored
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
create_kvm/
|
||||||
|
alpr_with_argo.yml
|
||||||
|
*.qcow*
|
||||||
|
OpenPGP*
|
||||||
|
my_hosts.yaml
|
||||||
|
Admiraltyworker_kubeconfig/*
|
||||||
95
ansible/Admiralty/README.md
Normal file
95
ansible/Admiralty/README.md
Normal file
@@ -0,0 +1,95 @@
|
|||||||
|
# README
|
||||||
|
|
||||||
|
## Ansible Playbooks for Admiralty Worker Setup with Argo Workflows
|
||||||
|
|
||||||
|
These Ansible playbooks help configure an existing Kubernetes (K8s) cluster as an Admiralty worker for Argo Workflows. The process consists of two main steps:
|
||||||
|
|
||||||
|
1. **Setting up a worker node**: This playbook prepares the worker cluster and generates the necessary kubeconfig.
|
||||||
|
2. **Adding the worker to the source cluster**: This playbook registers the worker cluster with the source Kubernetes cluster.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Prerequisites
|
||||||
|
|
||||||
|
- Ansible installed on the control machine.
|
||||||
|
- Kubernetes cluster(s) with `kubectl` and `kubernetes.core` collection installed.
|
||||||
|
- Necessary permissions to create ServiceAccounts, Roles, RoleBindings, Secrets, and Custom Resources.
|
||||||
|
- `jq` installed on worker nodes.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Playbook 1: Setting Up a Worker Node
|
||||||
|
|
||||||
|
This playbook configures a Kubernetes cluster to become an Admiralty worker for Argo Workflows.
|
||||||
|
|
||||||
|
### Variables (Pass through `--extra-vars`)
|
||||||
|
|
||||||
|
| Variable | Description |
|
||||||
|
|----------|-------------|
|
||||||
|
| `user_prompt` | The user running the Ansible playbook |
|
||||||
|
| `namespace_prompt` | Kubernetes namespace where resources are created |
|
||||||
|
| `source_prompt` | The name of the source cluster |
|
||||||
|
|
||||||
|
### Actions Performed
|
||||||
|
|
||||||
|
1. Installs required dependencies (`python3`, `python3-yaml`, `python3-kubernetes`, `jq`).
|
||||||
|
2. Creates a service account for the source cluster.
|
||||||
|
3. Grants patch permissions for pods to the `argo-role`.
|
||||||
|
4. Adds the service account to `argo-rolebinding`.
|
||||||
|
5. Creates a token for the service account.
|
||||||
|
6. Creates a `Source` resource for Admiralty.
|
||||||
|
7. Retrieves the worker cluster's kubeconfig and modifies it.
|
||||||
|
8. Stores the kubeconfig locally.
|
||||||
|
9. Displays the command needed to register this worker in the source cluster.
|
||||||
|
|
||||||
|
### Running the Playbook
|
||||||
|
|
||||||
|
```sh
|
||||||
|
ansible-playbook setup_worker.yml -i <WORKER_HOST_IP>, --extra-vars "user_prompt=<YOUR_USER> namespace_prompt=<NAMESPACE> source_prompt=<SOURCE_NAME>"
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Playbook 2: Adding Worker to Source Cluster
|
||||||
|
|
||||||
|
This playbook registers the configured worker cluster as an Admiralty target in the source Kubernetes cluster.
|
||||||
|
|
||||||
|
### Variables (Pass through `--extra-vars`)
|
||||||
|
|
||||||
|
| Variable | Description |
|
||||||
|
|----------|-------------|
|
||||||
|
| `user_prompt` | The user running the Ansible playbook |
|
||||||
|
| `target_name` | The name of the worker cluster in the source setup |
|
||||||
|
| `target_ip` | IP of the worker cluster |
|
||||||
|
| `namespace_source` | Namespace where the target is registered |
|
||||||
|
| `serviceaccount_prompt` | The service account used in the worker |
|
||||||
|
|
||||||
|
### Actions Performed
|
||||||
|
|
||||||
|
1. Retrieves the stored kubeconfig from the worker setup.
|
||||||
|
2. Creates a ServiceAccount in the target namespace.
|
||||||
|
3. Stores the kubeconfig in a Kubernetes Secret.
|
||||||
|
4. Creates an Admiralty `Target` resource in the source cluster.
|
||||||
|
|
||||||
|
### Running the Playbook
|
||||||
|
|
||||||
|
```sh
|
||||||
|
ansible-playbook add_admiralty_target.yml -i <SOURCE_HOST_IP>, --extra-vars "user_prompt=<YOUR_USER> target_name=<TARGET_NAME_IN_KUBE> target_ip=<WORKER_IP> namespace_source=<NAMESPACE> serviceaccount_prompt=<SERVICE_ACCOUNT_NAME>"
|
||||||
|
```
|
||||||
|
|
||||||
|
# Post Playbook
|
||||||
|
|
||||||
|
Don't forget to give the patching rights to the `serviceAccount` on the control node :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
kubectl patch role argo-role -n argo --type='json' -p '[{"op": "add", "path": "/rules/-", "value": {"apiGroups":[""],"resources":["pods"],"verbs":["patch"]}}]'
|
||||||
|
```
|
||||||
|
|
||||||
|
Add the name of the `serviceAccount` in the following command
|
||||||
|
|
||||||
|
```bash
|
||||||
|
kubectl patch rolebinding argo-binding -n argo --type='json' -p '[{"op": "add", "path": "/subjects/-", "value": {"kind": "ServiceAccount", "name": "<NAME OF THE USER ACCOUNT>", "namespace": "argo"}}]'
|
||||||
|
```
|
||||||
|
|
||||||
|
Maybe we could add a play/playbook to sync the roles and rolesbinding between all nodes.
|
||||||
|
|
||||||
49
ansible/Admiralty/add_admiralty_target.yml
Normal file
49
ansible/Admiralty/add_admiralty_target.yml
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
- name: Setup an exsiting k8s cluster to become an admiralty worker for Argo Workflows
|
||||||
|
hosts: all:!localhost
|
||||||
|
user: "{{ user_prompt }}"
|
||||||
|
vars:
|
||||||
|
- service_account_name: "{{ serviceaccount_prompt }}"
|
||||||
|
- namespace: "{{ namespace_source }}"
|
||||||
|
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
|
||||||
|
- name: Store kubeconfig value
|
||||||
|
ansible.builtin.set_fact:
|
||||||
|
kubeconfig: "{{ lookup('file','worker_kubeconfig/{{ target_ip }}_kubeconfig.json') | trim }}"
|
||||||
|
|
||||||
|
- name: Create the serviceAccount that will execute in the target
|
||||||
|
kubernetes.core.k8s:
|
||||||
|
state: present
|
||||||
|
definition:
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: '{{ service_account_name }}'
|
||||||
|
namespace: '{{ namespace }}'
|
||||||
|
|
||||||
|
- name: Create the token to authentify source
|
||||||
|
kubernetes.core.k8s:
|
||||||
|
state: present
|
||||||
|
definition:
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Secret
|
||||||
|
type: Opaque
|
||||||
|
metadata:
|
||||||
|
name: admiralty-secret-{{ target_name }}
|
||||||
|
namespace: "{{ namespace_source }}"
|
||||||
|
data:
|
||||||
|
config: "{{ kubeconfig | tojson | b64encode }}"
|
||||||
|
|
||||||
|
- name: Create the target ressource
|
||||||
|
kubernetes.core.k8s:
|
||||||
|
state: present
|
||||||
|
definition:
|
||||||
|
apiVersion: multicluster.admiralty.io/v1alpha1
|
||||||
|
kind: Target
|
||||||
|
metadata:
|
||||||
|
name: target-{{ target_name }}
|
||||||
|
namespace: '{{ namespace_source }}'
|
||||||
|
spec:
|
||||||
|
kubeconfigSecret:
|
||||||
|
name: admiralty-secret-{{ target_name }}
|
||||||
2
ansible/Admiralty/ansible.cfg
Normal file
2
ansible/Admiralty/ansible.cfg
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
[defaults]
|
||||||
|
result_format=default
|
||||||
75
ansible/Admiralty/deploy_admiralty.yml
Normal file
75
ansible/Admiralty/deploy_admiralty.yml
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
- name: Install Helm
|
||||||
|
hosts: all:!localhost
|
||||||
|
user: "{{ user_prompt }}"
|
||||||
|
become: true
|
||||||
|
# become_method: su
|
||||||
|
vars:
|
||||||
|
arch_mapping: # Map ansible architecture {{ ansible_architecture }} names to Docker's architecture names
|
||||||
|
x86_64: amd64
|
||||||
|
aarch64: arm64
|
||||||
|
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
- name: Check if Helm does exist
|
||||||
|
ansible.builtin.command:
|
||||||
|
cmd: which helm
|
||||||
|
register: result_which
|
||||||
|
failed_when: result_which.rc not in [ 0, 1 ]
|
||||||
|
|
||||||
|
- name: Install helm
|
||||||
|
when: result_which.rc == 1
|
||||||
|
block:
|
||||||
|
- name: download helm from source
|
||||||
|
ansible.builtin.get_url:
|
||||||
|
url: https://get.helm.sh/helm-v3.15.0-linux-amd64.tar.gz
|
||||||
|
dest: ./
|
||||||
|
|
||||||
|
- name: unpack helm
|
||||||
|
ansible.builtin.unarchive:
|
||||||
|
remote_src: true
|
||||||
|
src: helm-v3.15.0-linux-amd64.tar.gz
|
||||||
|
dest: ./
|
||||||
|
|
||||||
|
- name: copy helm to path
|
||||||
|
ansible.builtin.command:
|
||||||
|
cmd: mv linux-amd64/helm /usr/local/bin/helm
|
||||||
|
|
||||||
|
- name: Install admiralty
|
||||||
|
hosts: all:!localhost
|
||||||
|
user: "{{ user_prompt }}"
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
- name: Install required python libraries
|
||||||
|
become: true
|
||||||
|
# become_method: su
|
||||||
|
package:
|
||||||
|
name:
|
||||||
|
- python3
|
||||||
|
- python3-yaml
|
||||||
|
state: present
|
||||||
|
|
||||||
|
- name: Add jetstack repo
|
||||||
|
ansible.builtin.shell:
|
||||||
|
cmd: |
|
||||||
|
helm repo add jetstack https://charts.jetstack.io && \
|
||||||
|
helm repo update
|
||||||
|
|
||||||
|
- name: Install cert-manager
|
||||||
|
kubernetes.core.helm:
|
||||||
|
chart_ref: jetstack/cert-manager
|
||||||
|
release_name: cert-manager
|
||||||
|
context: default
|
||||||
|
namespace: cert-manager
|
||||||
|
create_namespace: true
|
||||||
|
wait: true
|
||||||
|
set_values:
|
||||||
|
- value: installCRDs=true
|
||||||
|
|
||||||
|
- name: Install admiralty
|
||||||
|
kubernetes.core.helm:
|
||||||
|
name: admiralty
|
||||||
|
chart_ref: oci://public.ecr.aws/admiralty/admiralty
|
||||||
|
namespace: admiralty
|
||||||
|
create_namespace: true
|
||||||
|
chart_version: 0.16.0
|
||||||
|
wait: true
|
||||||
21
ansible/Admiralty/notes_admiralty.md
Normal file
21
ansible/Admiralty/notes_admiralty.md
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
Target
|
||||||
|
---
|
||||||
|
- Creer service account
|
||||||
|
- Creer token pour service account (sa sur control == sa sur target, montre nom du sa + token pour accéder à target)
|
||||||
|
- Créer fichier kubeconfig avec token et @IP (visible pour le controler/publique) et le récupérer pour le passer au controler
|
||||||
|
- Créer une ressource source sur la target : dire qui va nous contacter
|
||||||
|
- Rajouter les mêmes roles/droits que le sa "argo" au sa du controler
|
||||||
|
- Dans authorization rajouter le verbe Patch sur la ressource pods
|
||||||
|
- Rajouter le sa controler dans le rolebinding
|
||||||
|
|
||||||
|
Controler
|
||||||
|
---
|
||||||
|
- Créer le serviceAccount avec le même nom que sur la target
|
||||||
|
- Récuperer le kubeconfig de la target
|
||||||
|
- Creer un secret à partir du kubeconfig target
|
||||||
|
- Creer la resource target à laquelle on associe le secret
|
||||||
|
|
||||||
|
Schema
|
||||||
|
---
|
||||||
|
Lorsqu'un ressource tagguée avec admiralty est exécutée sur le controller il va voir les targets en s'authentifiant avec le secret pour créer des pods avec le service account commun.
|
||||||
|
|
||||||
8
ansible/Admiralty/old/admiralty_inventory.yml
Normal file
8
ansible/Admiralty/old/admiralty_inventory.yml
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
myhosts:
|
||||||
|
hosts:
|
||||||
|
control:
|
||||||
|
ansible_host: 172.16.0.184
|
||||||
|
dc01: #oc-dev
|
||||||
|
ansible_host: 172.16.0.187
|
||||||
|
dc02:
|
||||||
|
ansible_host:
|
||||||
115
ansible/Admiralty/old/create_secrets.yml
Normal file
115
ansible/Admiralty/old/create_secrets.yml
Normal file
@@ -0,0 +1,115 @@
|
|||||||
|
- name: Create secret from Workload
|
||||||
|
hosts: "{{ host_prompt }}"
|
||||||
|
user: "{{ user_prompt }}"
|
||||||
|
vars:
|
||||||
|
secret_exists: false
|
||||||
|
control_ip: 192.168.122.70
|
||||||
|
user_prompt: admrescue
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
- name: Can management cluster be reached
|
||||||
|
ansible.builtin.command:
|
||||||
|
cmd: ping -c 5 "{{ control_ip }}"
|
||||||
|
|
||||||
|
- name: Install needed packages
|
||||||
|
become: true
|
||||||
|
ansible.builtin.package:
|
||||||
|
name:
|
||||||
|
- jq
|
||||||
|
- python3-yaml
|
||||||
|
- python3-kubernetes
|
||||||
|
state: present
|
||||||
|
|
||||||
|
- name: Get the list of existing secrets
|
||||||
|
kubernetes.core.k8s_info:
|
||||||
|
api_version: v1
|
||||||
|
kind: Secret
|
||||||
|
name: "{{ inventory_hostname | lower }}"
|
||||||
|
namespace: default
|
||||||
|
register: list_secrets
|
||||||
|
failed_when: false
|
||||||
|
|
||||||
|
- name: Create token
|
||||||
|
ansible.builtin.command:
|
||||||
|
cmd: kubectl create token admiralty-control
|
||||||
|
register: cd_token
|
||||||
|
|
||||||
|
- name: Retrieve config
|
||||||
|
ansible.builtin.command:
|
||||||
|
cmd: kubectl config view --minify --raw --output json
|
||||||
|
register: config_info
|
||||||
|
|
||||||
|
- name: Display config
|
||||||
|
ansible.builtin.shell:
|
||||||
|
cmd: |
|
||||||
|
echo > config_info.json
|
||||||
|
|
||||||
|
- name: Edit the config json with jq
|
||||||
|
ansible.builtin.shell:
|
||||||
|
cmd: |
|
||||||
|
CD_TOKEN="{{ cd_token.stdout }}" && \
|
||||||
|
CD_IP="{{ control_ip }}" && \
|
||||||
|
kubectl config view --minify --raw --output json | jq '.users[0].user={token:"'$CD_TOKEN'"} | .clusters[0].cluster.server="https://'$CD_IP':6443"'
|
||||||
|
register: edited_config
|
||||||
|
# failed_when: edited_config.skipped == true
|
||||||
|
|
||||||
|
- name: Set fact for secret
|
||||||
|
set_fact:
|
||||||
|
secret: "{{ edited_config.stdout }}"
|
||||||
|
cacheable: true
|
||||||
|
|
||||||
|
- name: Create the source for controller
|
||||||
|
kubernetes.core.k8s:
|
||||||
|
state: present
|
||||||
|
definition:
|
||||||
|
apiVersion: multicluster.admiralty.io/v1alpha1
|
||||||
|
kind: Source
|
||||||
|
metadata:
|
||||||
|
name: admiralty-control
|
||||||
|
namespace: default
|
||||||
|
spec:
|
||||||
|
serviceAccountName: admiralty-control
|
||||||
|
|
||||||
|
|
||||||
|
- name: Create secret from Workload
|
||||||
|
hosts: "{{ control_host }}"
|
||||||
|
user: "{{ user_prompt }}"
|
||||||
|
gather_facts: true
|
||||||
|
vars:
|
||||||
|
secret: "{{ hostvars[host_prompt]['secret'] }}"
|
||||||
|
user_prompt: admrescue
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
|
||||||
|
- name: Get the list of existing secrets
|
||||||
|
kubernetes.core.k8s_info:
|
||||||
|
api_version: v1
|
||||||
|
kind: Secret
|
||||||
|
name: "{{ host_prompt | lower }}-secret"
|
||||||
|
namespace: default
|
||||||
|
register: list_secrets
|
||||||
|
failed_when: false
|
||||||
|
|
||||||
|
- name: Test wether secret exists
|
||||||
|
failed_when: secret == ''
|
||||||
|
debug:
|
||||||
|
msg: "Secret '{{ secret }}' "
|
||||||
|
|
||||||
|
- name: Create secret with new config
|
||||||
|
ansible.builtin.command:
|
||||||
|
cmd: kubectl create secret generic "{{ host_prompt | lower }}"-secret --from-literal=config='{{ secret }}'
|
||||||
|
when: list_secrets.resources | length == 0
|
||||||
|
|
||||||
|
- name: Create target for the workload cluster
|
||||||
|
kubernetes.core.k8s:
|
||||||
|
state: present
|
||||||
|
definition:
|
||||||
|
apiVersion: multicluster.admiralty.io/v1alpha1
|
||||||
|
kind: Target
|
||||||
|
metadata:
|
||||||
|
name: '{{ host_prompt | lower }}'
|
||||||
|
namespace: default
|
||||||
|
spec:
|
||||||
|
kubeconfigSecret:
|
||||||
|
name: $'{{ host_prompt | lower }}'-secret
|
||||||
|
|
||||||
33
ansible/Admiralty/sequence_diagram.puml
Normal file
33
ansible/Admiralty/sequence_diagram.puml
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
@startuml
|
||||||
|
|
||||||
|
actor User
|
||||||
|
participant "Ansible Playbook" as Playbook
|
||||||
|
participant "Target Node" as K8s
|
||||||
|
participant "Control Node" as ControlNode
|
||||||
|
|
||||||
|
User -> Playbook: Start Playbook Execution
|
||||||
|
Playbook -> Playbook: Save Target IP
|
||||||
|
Playbook -> K8s: Install Required Packages
|
||||||
|
Playbook -> K8s: Create Service Account
|
||||||
|
Playbook -> K8s: Patch Role argo-role (Add pod patch permission)
|
||||||
|
Playbook -> K8s: Patch RoleBinding argo-binding (Add service account)
|
||||||
|
Playbook -> K8s: Create Token for Service Account
|
||||||
|
Playbook -> K8s: Create Source Resource
|
||||||
|
Playbook -> K8s: Retrieve Current Kubeconfig
|
||||||
|
Playbook -> K8s: Convert Kubeconfig to JSON
|
||||||
|
Playbook -> User: Display Worker Kubeconfig
|
||||||
|
Playbook -> Playbook: Save Temporary Kubeconfig File
|
||||||
|
Playbook -> Playbook: Modify Kubeconfig JSON (Replace user token, set server IP)
|
||||||
|
Playbook -> User: Save Updated Kubeconfig File
|
||||||
|
Playbook -> User: Display Instructions for Adding Target
|
||||||
|
|
||||||
|
User -> Playbook: Start Additional Playbook Execution
|
||||||
|
Playbook -> Playbook: Store Kubeconfig Value
|
||||||
|
Playbook -> User: Display Kubeconfig
|
||||||
|
Playbook -> ControlNode : Copy Kubeconfig
|
||||||
|
Playbook -> ControlNode: Create Service Account on Target
|
||||||
|
Playbook -> ControlNode: Create Authentication Token for Source
|
||||||
|
Playbook -> ControlNode: Create Target Resource
|
||||||
|
|
||||||
|
@enduml
|
||||||
|
|
||||||
110
ansible/Admiralty/setup_admiralty_target.yml
Normal file
110
ansible/Admiralty/setup_admiralty_target.yml
Normal file
@@ -0,0 +1,110 @@
|
|||||||
|
- name: Setup an exsiting k8s cluster to become an admiralty worker for Argo Workflows
|
||||||
|
hosts: all:!localhost
|
||||||
|
user: "{{ user_prompt }}"
|
||||||
|
# Pass these through --extr-vars
|
||||||
|
vars:
|
||||||
|
- namespace: "{{ namespace_prompt }}"
|
||||||
|
- source_name: "{{ source_prompt }}"
|
||||||
|
- service_account_name : "admiralty-{{ source_prompt }}"
|
||||||
|
environment:
|
||||||
|
KUBECONFIG: /home/{{ user_prompt }}/.kube/config
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
- name: Save target IP
|
||||||
|
set_fact:
|
||||||
|
target_ip : "{{ ansible_host }}"
|
||||||
|
|
||||||
|
- name: Install the appropriates packages
|
||||||
|
become: true
|
||||||
|
become_method: sudo
|
||||||
|
package:
|
||||||
|
name:
|
||||||
|
- python3
|
||||||
|
- python3-yaml
|
||||||
|
- python3-kubernetes
|
||||||
|
- jq
|
||||||
|
state: present
|
||||||
|
|
||||||
|
# We need to provide the source name in the command line through --extr-vars
|
||||||
|
- name: Create a service account for the source
|
||||||
|
kubernetes.core.k8s:
|
||||||
|
state: present
|
||||||
|
definition:
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: '{{ service_account_name }}'
|
||||||
|
namespace: '{{ namespace }}'
|
||||||
|
|
||||||
|
- name: Add patch permission for pods to argo-role
|
||||||
|
command: >
|
||||||
|
kubectl patch role argo-role -n {{ namespace }} --type='json'
|
||||||
|
-p '[{"op": "add", "path": "/rules/-", "value": {"apiGroups":[""],"resources":["pods"],"verbs":["patch"]}}]'
|
||||||
|
register: patch_result
|
||||||
|
changed_when: "'patched' in patch_result.stdout"
|
||||||
|
|
||||||
|
- name: Add service account to argo-rolebinding
|
||||||
|
ansible.builtin.command: >
|
||||||
|
kubectl patch rolebinding argo-role-binding -n {{ namespace }} --type='json'
|
||||||
|
-p '[{"op": "add", "path": "/subjects/-", "value": {"kind": "ServiceAccount", "name": "{{ service_account_name }}", "namespace": "{{ namespace }}"}}]'
|
||||||
|
register: patch_result
|
||||||
|
changed_when: "'patched' in patch_result.stdout"
|
||||||
|
|
||||||
|
- name: Create a token for the created serivce account
|
||||||
|
ansible.builtin.command:
|
||||||
|
cmd: |
|
||||||
|
kubectl create token '{{ service_account_name }}' -n {{ namespace }}
|
||||||
|
register: token_source
|
||||||
|
|
||||||
|
- name: Create the source ressource
|
||||||
|
kubernetes.core.k8s:
|
||||||
|
state: present
|
||||||
|
definition:
|
||||||
|
apiVersion: multicluster.admiralty.io/v1alpha1
|
||||||
|
kind: Source
|
||||||
|
metadata:
|
||||||
|
name: source-{{ source_name }}
|
||||||
|
namespace: '{{ namespace }}'
|
||||||
|
spec:
|
||||||
|
serviceAccountName: "{{ service_account_name }}"
|
||||||
|
|
||||||
|
- name: Retrieve the current kubeconfig as json
|
||||||
|
ansible.builtin.shell:
|
||||||
|
cmd: |
|
||||||
|
kubectl config view --minify --raw --output json
|
||||||
|
register: worker_kubeconfig
|
||||||
|
|
||||||
|
|
||||||
|
- name: Convert kubeconfig to JSON
|
||||||
|
set_fact:
|
||||||
|
kubeconfig_json: "{{ worker_kubeconfig.stdout | trim | from_json }}"
|
||||||
|
|
||||||
|
- name: View worker kubeconfig
|
||||||
|
ansible.builtin.debug:
|
||||||
|
msg: '{{ kubeconfig_json }}'
|
||||||
|
|
||||||
|
- name: Temporary kubeconfig file
|
||||||
|
ansible.builtin.copy:
|
||||||
|
content: "{{ kubeconfig_json }}"
|
||||||
|
dest: "{{ target_ip }}_kubeconfig.json"
|
||||||
|
|
||||||
|
- name: Modify kubeconfig JSON
|
||||||
|
ansible.builtin.shell:
|
||||||
|
cmd: |
|
||||||
|
jq '.users[0].user={token:"'{{ token_source.stdout }}'"} | .clusters[0].cluster.server="https://'{{ target_ip }}':6443"' {{ target_ip }}_kubeconfig.json
|
||||||
|
register: kubeconfig_json
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
- name: Save updated kubeconfig
|
||||||
|
ansible.builtin.copy:
|
||||||
|
content: "{{ kubeconfig_json.stdout | trim | from_json | to_nice_json }}"
|
||||||
|
dest: ./worker_kubeconfig/{{ target_ip }}_kubeconfig.json
|
||||||
|
delegate_to: localhost
|
||||||
|
|
||||||
|
- name: Display informations for the creation of the target on the source host
|
||||||
|
ansible.builtin.debug:
|
||||||
|
msg: >
|
||||||
|
- To add this host as a target in an Admiralty network use the following command line :
|
||||||
|
- ansible-playbook add_admiralty_target.yml -i <SOURCE HOST IP>, --extra-vars "user_prompt=<YOUR USER> target_name=<TARGET NAME IN KUBE> target_ip={{ ansible_host }} namespace_source={{ namespace }} serviceaccount_prompt={{ service_account_name }}"
|
||||||
|
- Don't forget to give {{ service_account_name }} the appropriate role in namespace {{ namespace }}
|
||||||
121
ansible/Admiralty/setup_minio_argo_admiralty.yml
Normal file
121
ansible/Admiralty/setup_minio_argo_admiralty.yml
Normal file
@@ -0,0 +1,121 @@
|
|||||||
|
- name: Setup MinIO ressources for argo workflows/admiralty
|
||||||
|
hosts: all:!localhost
|
||||||
|
user: "{{ user_prompt }}"
|
||||||
|
gather_facts: true
|
||||||
|
become_method: sudo
|
||||||
|
vars:
|
||||||
|
- argo_namespace: "argo"
|
||||||
|
- uuid: "{{ uuid_prompt }}"
|
||||||
|
tasks:
|
||||||
|
|
||||||
|
- name: Install necessary packages
|
||||||
|
become: true
|
||||||
|
package:
|
||||||
|
name:
|
||||||
|
- python3-kubernetes
|
||||||
|
state: present
|
||||||
|
|
||||||
|
- name: Create destination directory
|
||||||
|
file:
|
||||||
|
path: $HOME/minio-binaries
|
||||||
|
state: directory
|
||||||
|
mode: '0755'
|
||||||
|
|
||||||
|
- name: Install mc
|
||||||
|
ansible.builtin.get_url:
|
||||||
|
url: "https://dl.min.io/client/mc/release/linux-amd64/mc"
|
||||||
|
dest: $HOME/minio-binaries/
|
||||||
|
mode: +x
|
||||||
|
headers:
|
||||||
|
Content-Type: "application/json"
|
||||||
|
|
||||||
|
- name: Add mc to path
|
||||||
|
ansible.builtin.shell:
|
||||||
|
cmd: |
|
||||||
|
grep -qxF 'export PATH=$PATH:$HOME/minio-binaries' $HOME/.bashrc || echo 'export PATH=$PATH:$HOME/minio-binaries' >> $HOME/.bashrc
|
||||||
|
|
||||||
|
- name: Test bashrc
|
||||||
|
ansible.builtin.shell:
|
||||||
|
cmd : |
|
||||||
|
tail -n 5 $HOME/.bashrc
|
||||||
|
|
||||||
|
- name: Retrieve root user
|
||||||
|
ansible.builtin.shell:
|
||||||
|
cmd: |
|
||||||
|
kubectl get secrets argo-artifacts -o jsonpath="{.data.rootUser}" | base64 -d -
|
||||||
|
register: user
|
||||||
|
|
||||||
|
- name: Retrieve root password
|
||||||
|
ansible.builtin.shell:
|
||||||
|
cmd: |
|
||||||
|
kubectl get secret argo-artifacts --namespace default -o jsonpath="{.data.rootPassword}" | base64 -d -
|
||||||
|
register : password
|
||||||
|
|
||||||
|
- name: Set up MinIO host in mc
|
||||||
|
ansible.builtin.shell:
|
||||||
|
cmd: |
|
||||||
|
$HOME/minio-binaries/mc alias set my-minio http://127.0.0.1:9000 '{{ user.stdout }}' '{{ password.stdout }}'
|
||||||
|
|
||||||
|
- name: Create oc-bucket
|
||||||
|
ansible.builtin.shell:
|
||||||
|
cmd: |
|
||||||
|
$HOME/minio-binaries/mc mb oc-bucket
|
||||||
|
|
||||||
|
- name: Run mc admin accesskey create command
|
||||||
|
command: $HOME/minio-binaries/mc admin accesskey create --json my-minio
|
||||||
|
register: minio_output
|
||||||
|
changed_when: false # Avoid marking the task as changed every time
|
||||||
|
|
||||||
|
- name: Parse JSON output
|
||||||
|
set_fact:
|
||||||
|
access_key: "{{ minio_output.stdout | from_json | json_query('accessKey') }}"
|
||||||
|
secret_key: "{{ minio_output.stdout | from_json | json_query('secretKey') }}"
|
||||||
|
|
||||||
|
- name: Retrieve cluster IP for minio API
|
||||||
|
ansible.builtin.shell:
|
||||||
|
cmd: |
|
||||||
|
kubectl get service argo-artifacts -o jsonpath="{.spec.clusterIP}"
|
||||||
|
register: minio_cluster_ip
|
||||||
|
|
||||||
|
- name: Create the minio secret in argo namespace
|
||||||
|
kubernetes.core.k8s:
|
||||||
|
state: present
|
||||||
|
namespace: '{{ argo_namespace }}'
|
||||||
|
name: "{{ uuuid }}-argo-artifact-secret"
|
||||||
|
definition:
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Secret
|
||||||
|
type: Opaque
|
||||||
|
stringData:
|
||||||
|
access-key: '{{ access_key}}'
|
||||||
|
secret-key: '{{ secret_key }}'
|
||||||
|
|
||||||
|
|
||||||
|
- name: Create the minio secret in argo namespace
|
||||||
|
kubernetes.core.k8s:
|
||||||
|
state: present
|
||||||
|
namespace: '{{ argo_namespace }}'
|
||||||
|
definition:
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: artifact-repositories
|
||||||
|
data:
|
||||||
|
oc-s3-artifact-repository: |
|
||||||
|
s3:
|
||||||
|
bucket: oc-bucket
|
||||||
|
endpoint: {{ minio_cluster_ip.stdout }}:9000
|
||||||
|
insecure: true
|
||||||
|
accessKeySecret:
|
||||||
|
name: "{{ uuuid }}-argo-artifact-secret"
|
||||||
|
key: access-key
|
||||||
|
secretKeySecret:
|
||||||
|
name: "{{ uuuid }}-argo-artifact-secret"
|
||||||
|
key: secret-key
|
||||||
|
|
||||||
|
|
||||||
|
# ansible.builtin.shell:
|
||||||
|
# cmd: |
|
||||||
|
# kubectl create secret -n '{{ argo_namespace }}' generic argo-artifact-secret \
|
||||||
|
# --from-literal=access-key='{{ access_key }}' \
|
||||||
|
# --from-literal=secret-key='{{ secret_key }}'
|
||||||
149
ansible/Admiralty/weather_test_admiralty.yml
Normal file
149
ansible/Admiralty/weather_test_admiralty.yml
Normal file
@@ -0,0 +1,149 @@
|
|||||||
|
|
||||||
|
apiVersion: argoproj.io/v1alpha1
|
||||||
|
kind: Workflow
|
||||||
|
metadata:
|
||||||
|
generateName: harvesting-
|
||||||
|
labels:
|
||||||
|
example: 'true'
|
||||||
|
workflows.argoproj.io/creator: 0d47b046-a09e-4bed-b10a-ec26783d4fe7
|
||||||
|
workflows.argoproj.io/creator-email: pierre.bayle.at.irt-stexupery.com
|
||||||
|
workflows.argoproj.io/creator-preferred-username: pbayle
|
||||||
|
spec:
|
||||||
|
templates:
|
||||||
|
- name: busybox
|
||||||
|
inputs:
|
||||||
|
parameters:
|
||||||
|
- name: model
|
||||||
|
- name: output-dir
|
||||||
|
- name: output-file
|
||||||
|
- name: clustername
|
||||||
|
outputs:
|
||||||
|
parameters:
|
||||||
|
- name: outfile
|
||||||
|
value: '{{inputs.parameters.output-file}}.tgz'
|
||||||
|
artifacts:
|
||||||
|
- name: outputs
|
||||||
|
path: '{{inputs.parameters.output-dir}}/{{inputs.parameters.output-file}}.tgz'
|
||||||
|
s3:
|
||||||
|
key: '{{workflow.name}}/{{inputs.parameters.output-file}}.tgz'
|
||||||
|
container:
|
||||||
|
image: busybox
|
||||||
|
command: ["/bin/sh", "-c"]
|
||||||
|
args:
|
||||||
|
- |
|
||||||
|
echo "Creating tarball for model: {{inputs.parameters.model}}";
|
||||||
|
mkdir -p {{inputs.parameters.output-dir}};
|
||||||
|
echo $(ping 8.8.8.8 -c 4) > $(date +%Y-%m-%d__%H-%M-%S)_{{inputs.parameters.output-file}}.txt
|
||||||
|
tar -czf {{inputs.parameters.output-dir}}/{{inputs.parameters.output-file}}.tgz *_{{inputs.parameters.output-file}}.txt;
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
multicluster.admiralty.io/elect: ""
|
||||||
|
multicluster.admiralty.io/clustername: "{{inputs.parameters.clustername}}"
|
||||||
|
|
||||||
|
- name: weather-container
|
||||||
|
inputs:
|
||||||
|
parameters:
|
||||||
|
- name: output-dir
|
||||||
|
- name: output-file
|
||||||
|
- name: clustername
|
||||||
|
outputs:
|
||||||
|
parameters:
|
||||||
|
- name: outfile
|
||||||
|
value: '{{inputs.parameters.output-file}}.tgz'
|
||||||
|
artifacts:
|
||||||
|
- name: outputs
|
||||||
|
path: '{{inputs.parameters.output-dir}}/{{inputs.parameters.output-file}}.tgz'
|
||||||
|
s3:
|
||||||
|
insecure: true
|
||||||
|
key: '{{workflow.name}}/{{inputs.parameters.output-file}}'
|
||||||
|
container:
|
||||||
|
name: weather-container
|
||||||
|
image: pierrebirt/weather_container:latest
|
||||||
|
#imagePullPolicy: IfNotPresent
|
||||||
|
env:
|
||||||
|
- name: API_KEY
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: cnes-secrets
|
||||||
|
key: weather-api
|
||||||
|
args:
|
||||||
|
- '--key'
|
||||||
|
- "$(API_KEY)"
|
||||||
|
- '--dir'
|
||||||
|
- '{{inputs.parameters.output-dir}}'
|
||||||
|
- '--file'
|
||||||
|
- '{{inputs.parameters.output-file}}'
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
multicluster.admiralty.io/elect: ""
|
||||||
|
multicluster.admiralty.io/clustername: "{{inputs.parameters.clustername}}"
|
||||||
|
|
||||||
|
- name: bucket-reader
|
||||||
|
inputs:
|
||||||
|
parameters:
|
||||||
|
- name: bucket-path
|
||||||
|
- name: logs-path
|
||||||
|
artifacts:
|
||||||
|
- name: retrieved-logs
|
||||||
|
path: '{{inputs.parameters.logs-path}}'
|
||||||
|
s3:
|
||||||
|
key: '{{inputs.parameters.bucket-path}}'
|
||||||
|
outputs:
|
||||||
|
artifacts:
|
||||||
|
- name: logs_for_test
|
||||||
|
path: /tmp/empty_log_for_test.log
|
||||||
|
s3:
|
||||||
|
key: '{{workflow.name}}/log_test.log'
|
||||||
|
container:
|
||||||
|
image: busybox
|
||||||
|
command: ["/bin/sh", "-c"]
|
||||||
|
args:
|
||||||
|
- |
|
||||||
|
tar -xvf '{{inputs.parameters.logs-path}}'
|
||||||
|
ls -la
|
||||||
|
cat *.txt
|
||||||
|
touch /tmp/empty_log_for_test.log
|
||||||
|
|
||||||
|
- name: harvesting-test
|
||||||
|
inputs: {}
|
||||||
|
outputs: {}
|
||||||
|
metadata: {}
|
||||||
|
dag:
|
||||||
|
tasks:
|
||||||
|
- name: busybox-dc02
|
||||||
|
template: busybox
|
||||||
|
arguments:
|
||||||
|
parameters:
|
||||||
|
- name: model
|
||||||
|
value: era-pressure-levels
|
||||||
|
- name: output-dir
|
||||||
|
value: /app/data/output
|
||||||
|
- name: output-file
|
||||||
|
value: fake_logs
|
||||||
|
- name: clustername
|
||||||
|
value: target-dc02
|
||||||
|
- name: weather-container-dc03
|
||||||
|
template: weather-container
|
||||||
|
arguments:
|
||||||
|
parameters:
|
||||||
|
- name: output-dir
|
||||||
|
value: /app/results
|
||||||
|
- name: output-file
|
||||||
|
value: weather_results_23_01
|
||||||
|
- name: clustername
|
||||||
|
value: target-dc03
|
||||||
|
- name: bucket-reader
|
||||||
|
template: bucket-reader
|
||||||
|
dependencies: [busybox-dc02,weather-container-dc03]
|
||||||
|
arguments:
|
||||||
|
parameters:
|
||||||
|
- name: bucket-path
|
||||||
|
value: '{{workflow.name}}/fake_logs.tgz'
|
||||||
|
- name: logs-path
|
||||||
|
value: /tmp/logs.tgz
|
||||||
|
|
||||||
|
entrypoint: harvesting-test
|
||||||
|
serviceAccountName: argo-agregateur-workflow-controller
|
||||||
|
artifactRepositoryRef: # https://argo-workflows.readthedocs.io/en/latest/fields/#s3artifactrepository
|
||||||
|
key: admiralty-s3-artifact-repository # Choose the artifact repository with the public IP/url
|
||||||
|
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
{
|
||||||
|
"apiVersion": "v1",
|
||||||
|
"clusters": [
|
||||||
|
{
|
||||||
|
"cluster": {
|
||||||
|
"certificate-authority-data": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJkekNDQVIyZ0F3SUJBZ0lCQURBS0JnZ3Foa2pPUFFRREFqQWpNU0V3SHdZRFZRUUREQmhyTTNNdGMyVnkKZG1WeUxXTmhRREUzTXpneE5EVTNNekl3SGhjTk1qVXdNVEk1TVRBeE5UTXlXaGNOTXpVd01USTNNVEF4TlRNeQpXakFqTVNFd0h3WURWUVFEREJock0zTXRjMlZ5ZG1WeUxXTmhRREUzTXpneE5EVTNNekl3V1RBVEJnY3Foa2pPClBRSUJCZ2dxaGtqT1BRTUJCd05DQUFSWHFiRHBmcUtwWVAzaTFObVpCdEZ3RzNCZCtOY0RwenJKS01qOWFETlUKTUVYZmpRM3VrbzVISDVHdTFzNDRZY0p6Y29rVEFmb090QVhWS1pNMUs3YWVvMEl3UURBT0JnTlZIUThCQWY4RQpCQU1DQXFRd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBZEJnTlZIUTRFRmdRVWM5MW5TYi9kaU1pbHVqR3RENjFRClc0djVKVmN3Q2dZSUtvWkl6ajBFQXdJRFNBQXdSUUlnV05uSzlsU1lDY044VEFFODcwUnNOMEgwWFR6UndMNlAKOEF4Q0xwa3pDYkFDSVFDRW1LSkhveXFZRW5iZWZFU3VOYkthTHdtRkMrTE5lUHloOWxQUmhCVHdsQT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K",
|
||||||
|
"server": "https://172.16.0.181:6443"
|
||||||
|
},
|
||||||
|
"name": "default"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"contexts": [
|
||||||
|
{
|
||||||
|
"context": {
|
||||||
|
"cluster": "default",
|
||||||
|
"user": "default"
|
||||||
|
},
|
||||||
|
"name": "default"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"current-context": "default",
|
||||||
|
"kind": "Config",
|
||||||
|
"preferences": {},
|
||||||
|
"users": [
|
||||||
|
{
|
||||||
|
"name": "default",
|
||||||
|
"user": {
|
||||||
|
"token": "eyJhbGciOiJSUzI1NiIsImtpZCI6Ik5nT1p0NVVMUVllYko1MVhLdVIyMW01MzJjY25NdTluZ3VNQ1RmMnNTUHcifQ.eyJhdWQiOlsiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwiLCJrM3MiXSwiZXhwIjoxNzM4Njg1NzM2LCJpYXQiOjE3Mzg2ODIxMzYsImlzcyI6Imh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2Yy5jbHVzdGVyLmxvY2FsIiwianRpIjoiNTNkNzU4YmMtMGUwMC00YTU5LTgzZTUtYjkyYjZmODg2NWE2Iiwia3ViZXJuZXRlcy5pbyI6eyJuYW1lc3BhY2UiOiJhcmdvIiwic2VydmljZWFjY291bnQiOnsibmFtZSI6ImFkbWlyYWx0eS1jb250cm9sIiwidWlkIjoiMWQ1NmEzMzktMTM0MC00NDY0LTg3OGYtMmIxY2ZiZDU1ZGJhIn19LCJuYmYiOjE3Mzg2ODIxMzYsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDphcmdvOmFkbWlyYWx0eS1jb250cm9sIn0.WMqmDvp8WZHEiupJewo2BplD0xu6yWhlgZkG4q_PpVCbHKd7cKYWnpTi_Ojmabvvw-VC5sZFZAaxZUnqdZNGf_RMrJ5pJ9B5cYtD_gsa7AGhrSz03nd5zPKvujT7-gzWmfHTpZOvWky00A2ykKLflibhJgft4FmFMxQ6rR3MWmtqeAo82wevF47ggdOiJz3kksFJPfEpk1bflumbUCk-fv76k6EljPEcFijsRur-CI4uuXdmTKb7G2TDmTMcFs9X4eGbBO2ZYOAVEw_Xafru6D-V8hWBTm-NWQiyyhdxlVdQg7BNnXJ_26GsJg4ql4Rg-Q-tXB5nGvd68g2MnGTWwg"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
{
|
||||||
|
"apiVersion": "v1",
|
||||||
|
"clusters": [
|
||||||
|
{
|
||||||
|
"cluster": {
|
||||||
|
"certificate-authority-data": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJkekNDQVIyZ0F3SUJBZ0lCQURBS0JnZ3Foa2pPUFFRREFqQWpNU0V3SHdZRFZRUUREQmhyTTNNdGMyVnkKZG1WeUxXTmhRREUzTXpnd09ESTVNRFF3SGhjTk1qVXdNVEk0TVRZME9ESTBXaGNOTXpVd01USTJNVFkwT0RJMApXakFqTVNFd0h3WURWUVFEREJock0zTXRjMlZ5ZG1WeUxXTmhRREUzTXpnd09ESTVNRFF3V1RBVEJnY3Foa2pPClBRSUJCZ2dxaGtqT1BRTUJCd05DQUFSdUV0Y2lRS3VaZUpEV214TlJBUzM3TlFib3czSkpxMWJQSjdsdTN2eEgKR2czS1hGdFVHZWNGUjQzL1Rjd0pmanQ3WFpsVm9PUldtOFozYWp3OEJPS0ZvMEl3UURBT0JnTlZIUThCQWY4RQpCQU1DQXFRd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBZEJnTlZIUTRFRmdRVTB3NG1uSlUrbkU3SnpxOHExRWdWCmFUNU1mMmd3Q2dZSUtvWkl6ajBFQXdJRFNBQXdSUUloQU9JTUtsZHk0Y044a3JmVnQyUFpLQi80eXhpOGRzM0wKaHR0b2ZrSEZtRnlsQWlCMWUraE5BamVUdVNCQjBDLzZvQnA2c21xUDBOaytrdGFtOW9EM3pvSSs0Zz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K",
|
||||||
|
"server": "https://172.16.0.184:6443"
|
||||||
|
},
|
||||||
|
"name": "default"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"contexts": [
|
||||||
|
{
|
||||||
|
"context": {
|
||||||
|
"cluster": "default",
|
||||||
|
"user": "default"
|
||||||
|
},
|
||||||
|
"name": "default"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"current-context": "default",
|
||||||
|
"kind": "Config",
|
||||||
|
"preferences": {},
|
||||||
|
"users": [
|
||||||
|
{
|
||||||
|
"name": "default",
|
||||||
|
"user": {
|
||||||
|
"token": "eyJhbGciOiJSUzI1NiIsImtpZCI6InUzaGF0T1RuSkdHck1sbURrQm0waDdDeDFSS3pxZ3FVQ25aX1VrOEkzdFkifQ.eyJhdWQiOlsiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwiLCJrM3MiXSwiZXhwIjoxNzM4Njg1NzM2LCJpYXQiOjE3Mzg2ODIxMzYsImlzcyI6Imh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2Yy5jbHVzdGVyLmxvY2FsIiwianRpIjoiZDFmNzQ2NmQtN2MyOS00MGNkLTg1ZTgtMjZmMzFkYWU5Nzg4Iiwia3ViZXJuZXRlcy5pbyI6eyJuYW1lc3BhY2UiOiJhcmdvIiwic2VydmljZWFjY291bnQiOnsibmFtZSI6ImFkbWlyYWx0eS1jb250cm9sIiwidWlkIjoiNTc0Y2E1OTQtY2IxZi00N2FiLTkxZGEtMDI0NDEwNjhjZjQwIn19LCJuYmYiOjE3Mzg2ODIxMzYsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDphcmdvOmFkbWlyYWx0eS1jb250cm9sIn0.ZJvTJawg73k5SEOG6357iYq_-w-7V4BqciURYJao_dtP_zDpcXyZ1Xw-sxNKITgLjByTkGaCJRjDtR2QdZumKtb8cl6ayv0UZMHHnFft4gtQi-ttjj69rQ5RTNA3dviPaQOQgWNAwPkUPryAM0Sjsd5pRWzXXe-NVpWQZ6ooNZeRBHyjT1Km1JoprB7i55vRJEbBnoK0laJUtHCNmLoxK5kJYQqeAtA-_ugdSJbnyTFQAG14vonZSyLWAQR-Hzw9QiqIkSEW1-fcvrrZbrVUZsl_i7tkrXSSY9EYwjrZlqIu79uToEa1oWvulGFEN6u6YGUydj9nXQJX_eDpaWvuOA"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
{
|
||||||
|
"apiVersion": "v1",
|
||||||
|
"clusters": [
|
||||||
|
{
|
||||||
|
"cluster": {
|
||||||
|
"certificate-authority-data": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJkekNDQVIyZ0F3SUJBZ0lCQURBS0JnZ3Foa2pPUFFRREFqQWpNU0V3SHdZRFZRUUREQmhyTTNNdGMyVnkKZG1WeUxXTmhRREUzTXpnd09ESTVNRFF3SGhjTk1qVXdNVEk0TVRZME9ESTBXaGNOTXpVd01USTJNVFkwT0RJMApXakFqTVNFd0h3WURWUVFEREJock0zTXRjMlZ5ZG1WeUxXTmhRREUzTXpnd09ESTVNRFF3V1RBVEJnY3Foa2pPClBRSUJCZ2dxaGtqT1BRTUJCd05DQUFSdUV0Y2lRS3VaZUpEV214TlJBUzM3TlFib3czSkpxMWJQSjdsdTN2eEgKR2czS1hGdFVHZWNGUjQzL1Rjd0pmanQ3WFpsVm9PUldtOFozYWp3OEJPS0ZvMEl3UURBT0JnTlZIUThCQWY4RQpCQU1DQXFRd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBZEJnTlZIUTRFRmdRVTB3NG1uSlUrbkU3SnpxOHExRWdWCmFUNU1mMmd3Q2dZSUtvWkl6ajBFQXdJRFNBQXdSUUloQU9JTUtsZHk0Y044a3JmVnQyUFpLQi80eXhpOGRzM0wKaHR0b2ZrSEZtRnlsQWlCMWUraE5BamVUdVNCQjBDLzZvQnA2c21xUDBOaytrdGFtOW9EM3pvSSs0Zz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K",
|
||||||
|
"server": "https://172.16.0.185:6443"
|
||||||
|
},
|
||||||
|
"name": "default"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"contexts": [
|
||||||
|
{
|
||||||
|
"context": {
|
||||||
|
"cluster": "default",
|
||||||
|
"user": "default"
|
||||||
|
},
|
||||||
|
"name": "default"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"current-context": "default",
|
||||||
|
"kind": "Config",
|
||||||
|
"preferences": {},
|
||||||
|
"users": [
|
||||||
|
{
|
||||||
|
"name": "default",
|
||||||
|
"user": {
|
||||||
|
"token": "eyJhbGciOiJSUzI1NiIsImtpZCI6InUzaGF0T1RuSkdHck1sbURrQm0waDdDeDFSS3pxZ3FVQ25aX1VrOEkzdFkifQ.eyJhdWQiOlsiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwiLCJrM3MiXSwiZXhwIjoxNzM4Njg1NzM2LCJpYXQiOjE3Mzg2ODIxMzYsImlzcyI6Imh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2Yy5jbHVzdGVyLmxvY2FsIiwianRpIjoiODdlYjVkYTYtYWNlMi00YzFhLTg1YjctYWY1NDI2MjA1ZWY1Iiwia3ViZXJuZXRlcy5pbyI6eyJuYW1lc3BhY2UiOiJhcmdvIiwic2VydmljZWFjY291bnQiOnsibmFtZSI6ImFkbWlyYWx0eS1jb250cm9sIiwidWlkIjoiZjFjNjViNDQtYmZmMC00Y2NlLTk4ZGQtMTU0YTFiYTk0YTU2In19LCJuYmYiOjE3Mzg2ODIxMzYsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDphcmdvOmFkbWlyYWx0eS1jb250cm9sIn0.SkpDamOWdyvTUk8MIMDMhuKD8qvJPpX-tjXPWX9XsfpMyjcB02kI-Cn9b8w1TnYpGJ_u3qyLzO7RlXOgSHtm7TKHOCoYudj4jNwRWqIcThxzAeTm53nlZirUU0E0eJU8cnWHGO3McAGOgkStpfVwHaTQHq2oMZ6jayQU_HuButGEvpFt2FMFEwY9pOjabYHPPOkY9ruswzNhGBRShxWxfOgCWIt8UmbrryrNeNd_kZlB0_vahuQkAskeJZd3f_hp7qnSyLd-YZa5hUrruLJBPQZRw2sPrZe0ukvdpuz7MCfE-CQzUDn6i3G6FCKzYfd-gHFIYNUowS0APHLcC-yWSQ"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
{
|
||||||
|
"apiVersion": "v1",
|
||||||
|
"clusters": [
|
||||||
|
{
|
||||||
|
"cluster": {
|
||||||
|
"certificate-authority-data": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJkakNDQVIyZ0F3SUJBZ0lCQURBS0JnZ3Foa2pPUFFRREFqQWpNU0V3SHdZRFZRUUREQmhyTTNNdGMyVnkKZG1WeUxXTmhRREUzTlRJM05EVTROVE13SGhjTk1qVXdOekUzTURrMU1EVXpXaGNOTXpVd056RTFNRGsxTURVegpXakFqTVNFd0h3WURWUVFEREJock0zTXRjMlZ5ZG1WeUxXTmhRREUzTlRJM05EVTROVE13V1RBVEJnY3Foa2pPClBRSUJCZ2dxaGtqT1BRTUJCd05DQUFUTzJzVWE4MTVDTmVxWUNPdCthREoreG5hWHRZNng3R096a0c1U1U0TEEKRE1talExRVQwZi96OG9oVU55L1JneUt0bmtqb2JnZVJhOExTdDAwc3NrMDNvMEl3UURBT0JnTlZIUThCQWY4RQpCQU1DQXFRd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBZEJnTlZIUTRFRmdRVW1zeUVyWkQvbmxtNVJReUUwR0NICk1FWlU0ZWd3Q2dZSUtvWkl6ajBFQXdJRFJ3QXdSQUlnVXJsR3ZGZy9FVzhXdU1Nc3JmZkZTTHdmYm1saFI5MDYKYjdHaWhUNHdFRzBDSUVsb2FvWGdwNnM5c055eE1iSUwxKzNlVUtFc0k2Y2dDdldFVEZmRWtQTUIKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=",
|
||||||
|
"server": "https://172.16.0.191:6443"
|
||||||
|
},
|
||||||
|
"name": "default"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"contexts": [
|
||||||
|
{
|
||||||
|
"context": {
|
||||||
|
"cluster": "default",
|
||||||
|
"user": "default"
|
||||||
|
},
|
||||||
|
"name": "default"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"current-context": "default",
|
||||||
|
"kind": "Config",
|
||||||
|
"preferences": {},
|
||||||
|
"users": [
|
||||||
|
{
|
||||||
|
"name": "default",
|
||||||
|
"user": {
|
||||||
|
"token": "eyJhbGciOiJSUzI1NiIsImtpZCI6IlZCTkEyUVJKeE9XblNpeUI1QUlMdWtLZmVpbGQ1LUpRTExvNWhkVjlEV2MifQ.eyJhdWQiOlsiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwiLCJrM3MiXSwiZXhwIjoxNzUzMTk0MjMxLCJpYXQiOjE3NTMxOTA2MzEsImlzcyI6Imh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2Yy5jbHVzdGVyLmxvY2FsIiwianRpIjoiYTMyOTY0OTktNzhiZS00MzE0LTkyYjctMDQ1NTBkY2JjMGUyIiwia3ViZXJuZXRlcy5pbyI6eyJuYW1lc3BhY2UiOiJ0ZXN0LWFkbWlyYWx0eS1hbnNpYmxlIiwic2VydmljZWFjY291bnQiOnsibmFtZSI6ImFkbWlyYWx0eS1zb3VyY2UiLCJ1aWQiOiI4YmJhMTA3Mi0wYjZiLTQwYjUtYWI4Mi04OWQ1MTkyOGIwOTIifX0sIm5iZiI6MTc1MzE5MDYzMSwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50OnRlc3QtYWRtaXJhbHR5LWFuc2libGU6YWRtaXJhbHR5LXNvdXJjZSJ9.A0UJLoui_SX4dCgUZIo4kprZ3kb2WBkigvyy1e55qQMFZxRoAed6ZvR95XbHYNUoiHR-HZE04QO0QcOnFaaQDTA6fS9HHtjfPKAoqbXrpShyoHNciiQnhkwYvtEpG4bvDf0JMB9qbWGMrBoouHwx-JoQG0JeoQq-idMGiDeHhqVc86-Uy_angvRoAZGF5xmYgMPcw5-vZPGfgk1mHYx5vXNofCcmF4OqMvQaWyYmH82L5SYAYLTV39Z1aCKkDGGHt5y9dVJ0udA4E5Cx3gO2cLLLWxf8n7uFSUx8sHgFtZOGgXwN8DIrTe3Y95p09f3H7nTxjnmQ-Nce2hofLC2_ng"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
32
ansible/Admiralty/worker_kubeconfig/target01_kubeconfig.json
Normal file
32
ansible/Admiralty/worker_kubeconfig/target01_kubeconfig.json
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
{
|
||||||
|
"apiVersion": "v1",
|
||||||
|
"clusters": [
|
||||||
|
{
|
||||||
|
"cluster": {
|
||||||
|
"certificate-authority-data": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJlRENDQVIyZ0F3SUJBZ0lCQURBS0JnZ3Foa2pPUFFRREFqQWpNU0V3SHdZRFZRUUREQmhyTTNNdGMyVnkKZG1WeUxXTmhRREUzTXpnNU1Ua3pPRFF3SGhjTk1qVXdNakEzTURrd09UUTBXaGNOTXpVd01qQTFNRGt3T1RRMApXakFqTVNFd0h3WURWUVFEREJock0zTXRjMlZ5ZG1WeUxXTmhRREUzTXpnNU1Ua3pPRFF3V1RBVEJnY3Foa2pPClBRSUJCZ2dxaGtqT1BRTUJCd05DQUFTYWsySHRMQVFUclVBSUF3ckUraDBJZ0QyS2dUcWxkNmorQlczcXRUSmcKOW9GR2FRb1lnUERvaGJtT29ueHRTeDlCSlc3elkrZEM2T3J5ekhkYzUzOGRvMEl3UURBT0JnTlZIUThCQWY4RQpCQU1DQXFRd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBZEJnTlZIUTRFRmdRVXd5UE1iOFAwaC9IR2szZ0dianozClFvOVVoQ293Q2dZSUtvWkl6ajBFQXdJRFNRQXdSZ0loQUlBVE1ETGFpeWlwaUNuQjF1QWtYMkxiRXdrYk93QlcKb1U2eDluZnRMTThQQWlFQTUza0hZYU05ZVZVdThld3REa0M3TEs3RTlkSGczQ3pSNlBxSHJjUHJTeDA9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K",
|
||||||
|
"server": "https://target01:6443"
|
||||||
|
},
|
||||||
|
"name": "default"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"contexts": [
|
||||||
|
{
|
||||||
|
"context": {
|
||||||
|
"cluster": "default",
|
||||||
|
"user": "default"
|
||||||
|
},
|
||||||
|
"name": "default"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"current-context": "default",
|
||||||
|
"kind": "Config",
|
||||||
|
"preferences": {},
|
||||||
|
"users": [
|
||||||
|
{
|
||||||
|
"name": "default",
|
||||||
|
"user": {
|
||||||
|
"token": "eyJhbGciOiJSUzI1NiIsImtpZCI6IlJwbHhUQ2ppREt3SmtHTWs4Z2cwdXBuWGtjTUluMVB0dFdGbUhEUVY2Y2MifQ.eyJhdWQiOlsiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwiLCJrM3MiXSwiZXhwIjoxNzQwMDUzODAyLCJpYXQiOjE3NDAwNTAyMDIsImlzcyI6Imh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2Yy5jbHVzdGVyLmxvY2FsIiwianRpIjoiMThkNzdjMzctZjgyNC00MGVmLWExMDUtMzcxMzJkNjUxNzgzIiwia3ViZXJuZXRlcy5pbyI6eyJuYW1lc3BhY2UiOiJhcmdvIiwic2VydmljZWFjY291bnQiOnsibmFtZSI6ImFkbWlyYWx0eS1jb250cm9sIiwidWlkIjoiNmExM2M4YTgtZmE0NC00NmJlLWI3ZWItYTQ0OWY3ZTMwZGM1In19LCJuYmYiOjE3NDAwNTAyMDIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDphcmdvOmFkbWlyYWx0eS1jb250cm9sIn0.DtKkkCEWLPp-9bmSbrqxvxO2kXfOW2cHlmxs5xPzTtn3DcNZ-yfUxJHxEv9Hz6-h732iljRKiWx3SrEN2ZjGq555xoOHV202NkyUqU3EWmBwmVQgvUKOZSn1tesAfI7fQp7sERa7oKz7ZZNHJ7x-nw0YBoxYa4ECRPkJKDR3uEyRsyFMaZJELi-wIUSZkeGxNR7PdQWoYPoJipnwXoyAFbT42r-pSR7nqzy0-Lx1il82klkZshPEj_CqycqJg1djoNoe4ekS7En1iljz03YqOqm1sFSOdvDRS8VGM_6Zm6e3PVwXQZVBgFy_ET1RqtxPsLyYmaPoIfPMq2xeRLoGIg"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
70
ansible/Argo/README.md
Normal file
70
ansible/Argo/README.md
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
# Prerequisites
|
||||||
|
Ensure that you have the following installed on your local machine:
|
||||||
|
- Ansible
|
||||||
|
- SSH access to the target host
|
||||||
|
- Required dependencies for Kubernetes
|
||||||
|
|
||||||
|
Two passwords are required via the prompt:
|
||||||
|
1. The username used to connect to the host via SSH.
|
||||||
|
2. The root password for privilege escalation.
|
||||||
|
|
||||||
|
- You can use a user on the name with `NOPASSWD` permissions and not use `--ask-become-pass`
|
||||||
|
|
||||||
|
- You can use `ssh-copy-id` on the remote host on the user that you will provide and not use `--ask-pass`
|
||||||
|
|
||||||
|
|
||||||
|
# Deployment Instructions
|
||||||
|
|
||||||
|
## Deploying K3s
|
||||||
|
Replace `HOST_NAME` with the IP address or hostname of the target machine in `my_hosts.yaml`, then run:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
ansible-playbook -i <YOUR_HOST_IP>, deploy_k3s.yml --extra-vars "user_prompt=YOUR_USER" --ask-pass --ask-become-pass
|
||||||
|
```
|
||||||
|
|
||||||
|
This playbook:
|
||||||
|
- Updates package repositories.
|
||||||
|
- Installs necessary dependencies.
|
||||||
|
- Ensures the user has `sudo` privileges.
|
||||||
|
- Downloads and installs K3s.
|
||||||
|
- Configures permissions for Kubernetes operations.
|
||||||
|
- Enables auto-completion for `kubectl`.
|
||||||
|
- Reboots the machine to apply changes.
|
||||||
|
|
||||||
|
## Deploying Argo Workflows
|
||||||
|
Replace `HOST_NAME` with the IP address or hostname of the target machine in `my_hosts.yaml`, then run:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
ansible-playbook -i <YOUR_HOST_IP>, deploy_argo.yml --extra-vars "user_prompt=<YOUR_USER>" --ask-pass --ask-become-pass
|
||||||
|
```
|
||||||
|
|
||||||
|
This playbook:
|
||||||
|
- Ensures the `argo` namespace exists in Kubernetes.
|
||||||
|
- Deploys Argo Workflows using the official manifest.
|
||||||
|
- Waits for the `argo-server` pod to be running.
|
||||||
|
- Patches the deployment for first-time connection issues.
|
||||||
|
- Applies a service configuration to expose Argo Workflows via NodePort.
|
||||||
|
- Installs the Argo CLI.
|
||||||
|
- Enables CLI autocompletion.
|
||||||
|
- Configures `kubectl` for Argo access.
|
||||||
|
|
||||||
|
# Additional Notes
|
||||||
|
- The service account used by default is `argo:default`, which may not have sufficient permissions. Use `argo:argo` instead:
|
||||||
|
```sh
|
||||||
|
argo submit -f workflow.yaml --serviceaccount=argo
|
||||||
|
```
|
||||||
|
- The Argo CLI is installed in `/usr/local/bin/argo`.
|
||||||
|
- The Kubernetes configuration file is copied to `~/.kube/config`.
|
||||||
|
|
||||||
|
# Troubleshooting
|
||||||
|
- If the deployment fails due to permissions, ensure the user has `sudo` privileges.
|
||||||
|
- Check the status of Argo pods using:
|
||||||
|
```sh
|
||||||
|
kubectl get pods -n argo
|
||||||
|
```
|
||||||
|
- If Argo Workflows is not accessible, verify that the NodePort service is correctly configured.
|
||||||
|
|
||||||
|
# References
|
||||||
|
- [K3s Official Documentation](https://k3s.io/)
|
||||||
|
- [Argo Workflows Documentation](https://argoproj.github.io/argo-workflows/)
|
||||||
|
|
||||||
14
ansible/Argo/argo-service.yml
Normal file
14
ansible/Argo/argo-service.yml
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
# Needed by deploy-argo.yml to change argo to a NodePort service
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: argo-server
|
||||||
|
namespace: argo
|
||||||
|
spec:
|
||||||
|
type: NodePort
|
||||||
|
selector:
|
||||||
|
app: argo-server
|
||||||
|
ports:
|
||||||
|
- port: 2746
|
||||||
|
targetPort: 2746
|
||||||
|
nodePort: 32746
|
||||||
95
ansible/Argo/deploy_argo.yml
Normal file
95
ansible/Argo/deploy_argo.yml
Normal file
@@ -0,0 +1,95 @@
|
|||||||
|
# ansible-playbook -i my_hosts.yaml deploy_argo.yml --ask-pass --ask-become-pass
|
||||||
|
|
||||||
|
# Need to think about which serviceaccount will be used to launch the workflow, by default
|
||||||
|
# uses argo:default but it doesn't have enough rights, need to use argo:argo
|
||||||
|
# like '$ argo submit -f .... --serviceaccount=argo'
|
||||||
|
|
||||||
|
|
||||||
|
- name: Installation de Argo
|
||||||
|
hosts: all
|
||||||
|
user: "{{ user_prompt }}"
|
||||||
|
vars:
|
||||||
|
ARGO_VERSION: "3.5.2"
|
||||||
|
environment:
|
||||||
|
KUBECONFIG: /home/{{ user_prompt }}/.kube/config
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
- name: Create argo namespace
|
||||||
|
kubernetes.core.k8s:
|
||||||
|
state: present
|
||||||
|
definition:
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Namespace
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
kubernetes.io/metadata.name: argo
|
||||||
|
name: argo
|
||||||
|
|
||||||
|
- name: Verifier si argo est déjà entrain de tourner
|
||||||
|
ansible.builtin.shell:
|
||||||
|
cmd: |
|
||||||
|
kubectl get -n argo pods | grep -q argo-server
|
||||||
|
register: argo_server_pod
|
||||||
|
failed_when: argo_server_pod.rc not in [ 0, 1 ]
|
||||||
|
|
||||||
|
- name: Installing argo services
|
||||||
|
ansible.builtin.shell:
|
||||||
|
cmd: |
|
||||||
|
kubectl apply -n argo -f https://github.com/argoproj/argo-workflows/releases/download/v{{ ARGO_VERSION }}/install.yaml
|
||||||
|
when: argo_server_pod.rc == 1
|
||||||
|
|
||||||
|
|
||||||
|
- name: Vérifier l'état du pod argo-server
|
||||||
|
ansible.builtin.shell:
|
||||||
|
cmd: |
|
||||||
|
argo_server_name=$(kubectl get -n argo pods | grep argo-server | cut -d ' ' -f 1)
|
||||||
|
kubectl get -n argo pods $argo_server_name --output=jsonpath='{.status.phase}'
|
||||||
|
register: pod_status
|
||||||
|
retries: 30
|
||||||
|
delay: 10
|
||||||
|
until: pod_status.stdout == "Running"
|
||||||
|
|
||||||
|
- name: Patch first connection bug
|
||||||
|
ansible.builtin.shell: |
|
||||||
|
kubectl patch deployment \
|
||||||
|
argo-server \
|
||||||
|
--namespace argo \
|
||||||
|
--type='json' \
|
||||||
|
-p='[{"op": "replace", "path": "/spec/template/spec/containers/0/args", "value": [
|
||||||
|
"server",
|
||||||
|
"--auth-mode=server"
|
||||||
|
]}]'
|
||||||
|
|
||||||
|
- name: Copying the configuration file to new host
|
||||||
|
copy: src=argo-service.yml dest=$HOME mode=0755
|
||||||
|
|
||||||
|
- name: Applying the conf file to make the service a NodePort typ
|
||||||
|
ansible.builtin.shell:
|
||||||
|
cmd: |
|
||||||
|
kubectl apply -f argo-service.yml
|
||||||
|
|
||||||
|
- name: download argo CLI
|
||||||
|
become: true
|
||||||
|
ansible.builtin.uri:
|
||||||
|
url: " https://github.com/argoproj/argo-workflows/releases/download/v{{ ARGO_VERSION }}/argo-linux-amd64.gz"
|
||||||
|
method: GET
|
||||||
|
dest: /var
|
||||||
|
status_code: 200
|
||||||
|
headers:
|
||||||
|
Content-Type: "application/json"
|
||||||
|
|
||||||
|
- name: Install argo CLI
|
||||||
|
become: true
|
||||||
|
ansible.builtin.shell:
|
||||||
|
cmd: |
|
||||||
|
gunzip argo-linux-amd64.gz
|
||||||
|
chmod +x argo-linux-amd64
|
||||||
|
mv ./argo-linux-amd64 /usr/local/bin/argo
|
||||||
|
args:
|
||||||
|
chdir: /var
|
||||||
|
|
||||||
|
- name: Enable argo CLI autocomplete
|
||||||
|
ansible.builtin.shell:
|
||||||
|
cmd: |
|
||||||
|
grep 'argo completion bash' $HOME/.bashrc || echo 'source <(argo completion bash)' >> $HOME/.bashrc
|
||||||
|
|
||||||
116
ansible/Argo/deploy_k3s.yml
Normal file
116
ansible/Argo/deploy_k3s.yml
Normal file
@@ -0,0 +1,116 @@
|
|||||||
|
- name: Installation k3s
|
||||||
|
hosts: all:!localhost
|
||||||
|
user: "{{ user_prompt }}"
|
||||||
|
gather_facts: true
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
- name: Update apt
|
||||||
|
become: true
|
||||||
|
# become_method: su
|
||||||
|
ansible.builtin.shell:
|
||||||
|
cmd:
|
||||||
|
apt update -y
|
||||||
|
|
||||||
|
- name: Install necessary packages
|
||||||
|
become: true
|
||||||
|
# become_method: su
|
||||||
|
package:
|
||||||
|
name:
|
||||||
|
- sudo
|
||||||
|
- curl
|
||||||
|
- grep
|
||||||
|
- expect
|
||||||
|
- adduser
|
||||||
|
state: present
|
||||||
|
|
||||||
|
- name: Test if the current user is a sudoer
|
||||||
|
ansible.builtin.shell:
|
||||||
|
cmd:
|
||||||
|
groups {{ ansible_user_id }} | grep -q 'sudo'
|
||||||
|
register: sudoer
|
||||||
|
failed_when: sudoer.rc not in [ 0, 1 ]
|
||||||
|
|
||||||
|
- name: Adding user to sudoers
|
||||||
|
become: true
|
||||||
|
# become_method: su
|
||||||
|
user:
|
||||||
|
name: "{{ ansible_user_id }}"
|
||||||
|
append: true
|
||||||
|
groups: sudo
|
||||||
|
when: sudoer.rc == 1
|
||||||
|
|
||||||
|
- name: Reset ssh connection to allow user changes to affect ansible user
|
||||||
|
ansible.builtin.meta:
|
||||||
|
reset_connection
|
||||||
|
when: sudoer.rc == 1
|
||||||
|
|
||||||
|
- name: Attendre que la déconnexion soit effective
|
||||||
|
wait_for:
|
||||||
|
port: 22
|
||||||
|
delay: 10
|
||||||
|
timeout: 120
|
||||||
|
when: sudoer.rc == 1
|
||||||
|
|
||||||
|
- name: Download k3s
|
||||||
|
ansible.builtin.uri:
|
||||||
|
url: "https://get.k3s.io"
|
||||||
|
method: GET
|
||||||
|
dest: ./install_k3s.sh
|
||||||
|
status_code: 200
|
||||||
|
headers:
|
||||||
|
Content-Type: "application/json"
|
||||||
|
|
||||||
|
- name: Install k3s
|
||||||
|
become: true
|
||||||
|
# become_method: su
|
||||||
|
ansible.builtin.shell:
|
||||||
|
cmd : sh install_k3s.sh
|
||||||
|
|
||||||
|
- name: Add k3s group
|
||||||
|
become: true
|
||||||
|
# become_method: su
|
||||||
|
group:
|
||||||
|
name: k3s
|
||||||
|
state: present
|
||||||
|
|
||||||
|
- name: Add user to k3s group
|
||||||
|
become: true
|
||||||
|
# become_method: su
|
||||||
|
user:
|
||||||
|
name: "{{ ansible_user_id }}"
|
||||||
|
append: true
|
||||||
|
groups: k3s
|
||||||
|
|
||||||
|
- name: Ensure .kube directory exists
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: ~/.kube
|
||||||
|
state: directory
|
||||||
|
mode: '0700'
|
||||||
|
|
||||||
|
- name: Copy kubeconfig file
|
||||||
|
become: true
|
||||||
|
ansible.builtin.copy:
|
||||||
|
src: /etc/rancher/k3s/k3s.yaml
|
||||||
|
dest: /home/{{ user_prompt }}/.kube/config
|
||||||
|
remote_src: true
|
||||||
|
mode: '0600'
|
||||||
|
owner: "{{ ansible_user_id }}"
|
||||||
|
group: "{{ ansible_user_gid }}"
|
||||||
|
|
||||||
|
- name: Set KUBECONFIG environment variable in .bashrc
|
||||||
|
ansible.builtin.lineinfile:
|
||||||
|
path: ~/.bashrc
|
||||||
|
line: 'export KUBECONFIG=$HOME/.kube/config'
|
||||||
|
|
||||||
|
- name: Ensure kubectl autocompletion is enabled
|
||||||
|
ansible.builtin.lineinfile:
|
||||||
|
path: ~/.bashrc
|
||||||
|
line: 'source <(kubectl completion bash)'
|
||||||
|
|
||||||
|
|
||||||
|
- name: Unconditionally reboot the machine with all defaults
|
||||||
|
become: true
|
||||||
|
# become_method: su
|
||||||
|
ansible.builtin.reboot:
|
||||||
|
|
||||||
|
|
||||||
59
ansible/MISC/deploy_admiralty_environment.yml
Normal file
59
ansible/MISC/deploy_admiralty_environment.yml
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
- name: Deploys VM based on local debian image
|
||||||
|
hosts: localhost
|
||||||
|
gather_facts: true
|
||||||
|
become: true
|
||||||
|
vars:
|
||||||
|
# debian_image: "/var/lib/libvirt/images"
|
||||||
|
# vm: "{{ item }}"
|
||||||
|
ssh_pub_key: "/home/pierre/.ssh/id_rsa.pub"
|
||||||
|
root: root
|
||||||
|
os: https://cloud.debian.org/images/cloud/bullseye/latest/debian-11-generic-amd64.qcow2
|
||||||
|
checksum: ""
|
||||||
|
xml_template: debian_template
|
||||||
|
machines:
|
||||||
|
- name: control_test
|
||||||
|
ip: 192.168.122.80
|
||||||
|
# - name: DC01_test
|
||||||
|
# ip: 192.168.122.81
|
||||||
|
# - name: DC02_test
|
||||||
|
# ip: 192.168.122.82
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
- name: Is os image present
|
||||||
|
ansible.builtin.fail:
|
||||||
|
msg: You did not provide an image to build from
|
||||||
|
when:
|
||||||
|
os == ""
|
||||||
|
- name: Is XML template present
|
||||||
|
ansible.builtin.stat:
|
||||||
|
path: "create_kvm/templates/{{ xml_template }}.xml.j2"
|
||||||
|
register: xml_present
|
||||||
|
|
||||||
|
- name: XML not present
|
||||||
|
ansible.builtin.fail:
|
||||||
|
msg: You did not provide a valid xml template
|
||||||
|
when: not (xml_present.stat.exists)
|
||||||
|
|
||||||
|
- name: KVM Provision role
|
||||||
|
ansible.builtin.include_role:
|
||||||
|
name: create_kvm
|
||||||
|
vars:
|
||||||
|
# libvirt_pool_dir: "{{ pool_dir }}"
|
||||||
|
os_image: "{{ os }}"
|
||||||
|
template_file: "{{ xml_template }}.xml.j2"
|
||||||
|
vm_name: "{{ item.name }}"
|
||||||
|
ssh_key: "{{ ssh_pub_key }}"
|
||||||
|
root_pwd: "{{ root }}"
|
||||||
|
loop:
|
||||||
|
"{{ machines }}"
|
||||||
|
|
||||||
|
- name: Set up the wanted IP
|
||||||
|
ansible.builtin.include_tasks:
|
||||||
|
file: setup_vm_ip.yml
|
||||||
|
loop:
|
||||||
|
"{{ machines }}"
|
||||||
|
|
||||||
|
|
||||||
|
# for control,dc01,dc02
|
||||||
|
# 192.168.122.70 + 1
|
||||||
|
# /var/lib/libvirt/images/debian11-2-1-clone.qcow2
|
||||||
32
ansible/MISC/deploy_mosquitto.yml
Normal file
32
ansible/MISC/deploy_mosquitto.yml
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
- name: Installation k3s
|
||||||
|
hosts: "{{ host_prompt }}"
|
||||||
|
user: "{{ user_prompt }}"
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
- name: install package
|
||||||
|
become: true
|
||||||
|
ansible.builtin.package:
|
||||||
|
name:
|
||||||
|
- mosquitto
|
||||||
|
- mosquitto-clients
|
||||||
|
state: present
|
||||||
|
|
||||||
|
- name: configure mosquitto conf
|
||||||
|
become: true
|
||||||
|
ansible.builtin.lineinfile:
|
||||||
|
path: /etc/mosquitto/conf.d/mosquitto.conf
|
||||||
|
line: allow_anonymous true
|
||||||
|
create: true
|
||||||
|
|
||||||
|
- name: configure mosquitto conf
|
||||||
|
become: true
|
||||||
|
ansible.builtin.lineinfile:
|
||||||
|
path: /etc/mosquitto/conf.d/mosquitto.conf
|
||||||
|
line: listener 1883 0.0.0.0
|
||||||
|
|
||||||
|
- name: restart mosquitto
|
||||||
|
become: true
|
||||||
|
ansible.builtin.service:
|
||||||
|
name: mosquitto
|
||||||
|
state: restarted
|
||||||
|
|
||||||
15
ansible/MISC/setup_vm_ip.yml
Normal file
15
ansible/MISC/setup_vm_ip.yml
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
|
||||||
|
- name: Retrieve network info
|
||||||
|
ansible.builtin.command:
|
||||||
|
cmd: virsh domifaddr "{{ item.name }}"
|
||||||
|
register: output_domifaddr
|
||||||
|
|
||||||
|
- name: Extract vm's current ip
|
||||||
|
vars:
|
||||||
|
pattern: '(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})'
|
||||||
|
ansible.builtin.set_fact:
|
||||||
|
current_ip: "{{ output_domifaddr.stdout | regex_search(pattern, '\\1') }}"
|
||||||
|
|
||||||
|
- name: Show ip
|
||||||
|
ansible.builtin.debug:
|
||||||
|
msg: "{{ current_ip.0 }}"
|
||||||
111
ansible/Minio/README.md
Normal file
111
ansible/Minio/README.md
Normal file
@@ -0,0 +1,111 @@
|
|||||||
|
# MinIO
|
||||||
|
|
||||||
|
## Deploy Minio
|
||||||
|
|
||||||
|
This playbook installs MinIO on a Kubernetes cluster using Helm and retrieves necessary credentials and access information.
|
||||||
|
|
||||||
|
### Variables
|
||||||
|
| Variable | Description |
|
||||||
|
|----------|-------------|
|
||||||
|
| `user_prompt` | SSH user to execute commands |
|
||||||
|
| `host_name_prompt` | Hostname of the target machine |
|
||||||
|
| `memory_req` | Memory allocation for MinIO (`2Gi` by default) |
|
||||||
|
| `storage_req` | Storage allocation for MinIO (`20Gi` by default) |
|
||||||
|
|
||||||
|
### Steps Executed
|
||||||
|
1. Install necessary Python libraries.
|
||||||
|
2. Check if Helm is installed and install it if not present.
|
||||||
|
3. Add and update the MinIO Helm repository.
|
||||||
|
4. Deploy MinIO using Helm if it is not already running.
|
||||||
|
5. Retrieve the MinIO credentials (root user and password).
|
||||||
|
6. Retrieve the MinIO UI console external IP and API internal IP.
|
||||||
|
7. Display login credentials and connection details.
|
||||||
|
|
||||||
|
### Running the Playbook
|
||||||
|
```sh
|
||||||
|
ansible-playbook -i inventory deploy_minio.yml --extra-vars "user_prompt=your-user host_name_prompt=your-host"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Setting up MinIO access
|
||||||
|
|
||||||
|
/!\ This part can be automated with this **[ansible playbook](https://github.com/pi-B/ansible-oc/blob/main/setup_minio_admiralty.yml)** which is designed to create ressources in a Argo-Workflows/Admiralty combo.
|
||||||
|
|
||||||
|
/!\ If you still want to setup the host manually **and** aim to use admiralty, give the ressources an **unique name** and be sure to make this uniqueness accessible (in an environment variable, in a conf file...)
|
||||||
|
|
||||||
|
- With the output of the last tasks, create a secret in argo namespace to give access to the minio API. We need to use the `create` verb because apply creates a non-functionning secret
|
||||||
|
|
||||||
|
```bash
|
||||||
|
kubectl create secret -n <name of your argo namespace> generic argo-artifact-secret \
|
||||||
|
--from-literal=access-key=<your access key> \
|
||||||
|
--from-literal=secret-key=<your secret key>
|
||||||
|
```
|
||||||
|
|
||||||
|
- Create a ConfigMap, which will be used by argo to create the S3 artifact, the content must match the one from the previously created secret
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
# If you want to use this config map by default, name it "artifact-repositories".
|
||||||
|
name: artifact-repositories
|
||||||
|
# annotations:
|
||||||
|
# # v3.0 and after - if you want to use a specific key, put that key into this annotation.
|
||||||
|
# workflows.argoproj.io/default-artifact-repository: oc-s3-artifact-repository
|
||||||
|
data:
|
||||||
|
oc-s3-artifact-repository: |
|
||||||
|
s3:
|
||||||
|
bucket: oc-bucket
|
||||||
|
endpoint: [ retrieve cluster with kubectl get service argo-artifacts -o jsonpath="{.spec.clusterIP}" ]:9000
|
||||||
|
insecure: true
|
||||||
|
accessKeySecret:
|
||||||
|
name: argo-artifact-secret
|
||||||
|
key: access-key
|
||||||
|
secretKeySecret:
|
||||||
|
name: argo-artifact-secret
|
||||||
|
key: secret-key
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
## Ansible Playbook setup MinIO
|
||||||
|
|
||||||
|
### Purpose
|
||||||
|
This playbook sets up MinIO to work with Argo Workflows, including creating the required buckets and secrets.
|
||||||
|
|
||||||
|
### Variables
|
||||||
|
| Variable | Description |
|
||||||
|
|----------|-------------|
|
||||||
|
| `user_prompt` | SSH user to execute commands |
|
||||||
|
| `uuid_prompt` | Unique identifier for the Argo secret |
|
||||||
|
| `argo_namespace` | Kubernetes namespace for Argo (`argo` by default) |
|
||||||
|
|
||||||
|
### Steps Executed
|
||||||
|
1. Install necessary dependencies.
|
||||||
|
2. Download and configure MinIO Client (`mc`).
|
||||||
|
3. Retrieve MinIO credentials (root user and password).
|
||||||
|
4. Configure `mc` to connect to MinIO.
|
||||||
|
5. Create a new S3 bucket (`oc-bucket`).
|
||||||
|
6. Generate a new access key and secret key for MinIO.
|
||||||
|
7. Retrieve the MinIO API cluster IP.
|
||||||
|
8. Create a Kubernetes Secret to store MinIO credentials.
|
||||||
|
9. Create a Kubernetes ConfigMap for MinIO artifact repository configuration.
|
||||||
|
|
||||||
|
### Running the Playbook
|
||||||
|
```sh
|
||||||
|
ansible-playbook -i inventory setup_minio_resources.yml --extra-vars "user_prompt=your-user uuid_prompt=unique-id"
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Expected Output
|
||||||
|
Upon successful execution, you should see:
|
||||||
|
- MinIO deployed and accessible.
|
||||||
|
- MinIO UI console credentials displayed.
|
||||||
|
- MinIO bucket (`oc-bucket`) created.
|
||||||
|
- Secrets and ConfigMaps properly configured in Kubernetes.
|
||||||
|
|
||||||
|
For any issues, check Ansible logs and validate configurations manually using:
|
||||||
|
```sh
|
||||||
|
kubectl get pods -n default
|
||||||
|
kubectl get secrets -n argo
|
||||||
|
kubectl get configmaps -n argo
|
||||||
|
```
|
||||||
134
ansible/Minio/deploy_minio.yml
Normal file
134
ansible/Minio/deploy_minio.yml
Normal file
@@ -0,0 +1,134 @@
|
|||||||
|
- name: Deploy MinIO
|
||||||
|
hosts: all:!localhost
|
||||||
|
user: "{{ user_prompt }}"
|
||||||
|
vars:
|
||||||
|
host_name: "{{ host_name_prompt }}"
|
||||||
|
memory_req: "2Gi"
|
||||||
|
storage_req: "20Gi"
|
||||||
|
environment:
|
||||||
|
KUBECONFIG: /home/{{ user_prompt }}/.kube/config
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
- name: Install yaml library for python
|
||||||
|
become: true
|
||||||
|
ansible.builtin.package:
|
||||||
|
name: ansible
|
||||||
|
state: present
|
||||||
|
|
||||||
|
- name: Check if Helm does exist
|
||||||
|
ansible.builtin.command:
|
||||||
|
cmd: which helm
|
||||||
|
register: result_which
|
||||||
|
failed_when: result_which.rc not in [ 0, 1 ]
|
||||||
|
|
||||||
|
- name: Install helm
|
||||||
|
when: result_which.rc == 1
|
||||||
|
block:
|
||||||
|
- name: Download helm from source
|
||||||
|
ansible.builtin.get_url:
|
||||||
|
url: https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
|
||||||
|
dest: ./get_helm.sh
|
||||||
|
mode: 0700
|
||||||
|
|
||||||
|
- name: Launch helm install script
|
||||||
|
become: true
|
||||||
|
ansible.builtin.shell:
|
||||||
|
cmd: |
|
||||||
|
./get_helm.sh
|
||||||
|
|
||||||
|
- name: Test if MinIO is already installed
|
||||||
|
ansible.builtin.shell:
|
||||||
|
cmd : helm repo list | grep 'https://charts.min.io/'
|
||||||
|
register: minio_charts
|
||||||
|
failed_when: minio_charts.rc not in [0,1]
|
||||||
|
|
||||||
|
- name: Add helm repo MinIO
|
||||||
|
kubernetes.core.helm_repository:
|
||||||
|
repo_url: https://charts.min.io/
|
||||||
|
repo_state: present
|
||||||
|
repo_name: minio
|
||||||
|
when: minio_charts.rc == 1
|
||||||
|
|
||||||
|
- name: Update helm repo
|
||||||
|
ansible.builtin.command:
|
||||||
|
cmd : |
|
||||||
|
helm repo update
|
||||||
|
when: minio_charts.rc == 1
|
||||||
|
|
||||||
|
- name: Test is argo-artifact is already running
|
||||||
|
ansible.builtin.shell:
|
||||||
|
helm list | grep -w "argo-artifacts" | wc -l
|
||||||
|
register: argo_artifact_deployed
|
||||||
|
failed_when: argo_artifact_deployed.rc not in [ 0, 1 ]
|
||||||
|
|
||||||
|
- name: Initialize MinIO
|
||||||
|
when: argo_artifact_deployed.stdout == "0"
|
||||||
|
kubernetes.core.helm:
|
||||||
|
name: argo-artifacts
|
||||||
|
chart_ref: minio/minio
|
||||||
|
release_namespace: default
|
||||||
|
values:
|
||||||
|
service:
|
||||||
|
type: LoadBalancer
|
||||||
|
fullnameOverride: argo-artifacts
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
memory: "{{ memory_req }}"
|
||||||
|
replicas: 2
|
||||||
|
volumeClaimTemplates:
|
||||||
|
spec:
|
||||||
|
resources:
|
||||||
|
requests: "{{ storage_req }}"
|
||||||
|
consoleService:
|
||||||
|
type: LoadBalancer
|
||||||
|
# port: 9001
|
||||||
|
state: present
|
||||||
|
|
||||||
|
- name: Retrieve root user
|
||||||
|
ansible.builtin.shell:
|
||||||
|
cmd: |
|
||||||
|
kubectl get secret argo-artifacts --namespace default -o jsonpath="{.data.rootUser}"
|
||||||
|
register : user_encoded
|
||||||
|
|
||||||
|
- name: Decode root user
|
||||||
|
ansible.builtin.shell:
|
||||||
|
cmd: |
|
||||||
|
echo {{ user_encoded.stdout }} | base64 -d
|
||||||
|
register: user
|
||||||
|
|
||||||
|
- name: Retrieve root password
|
||||||
|
ansible.builtin.shell:
|
||||||
|
cmd: |
|
||||||
|
kubectl get secret argo-artifacts --namespace default -o jsonpath="{.data.rootPassword}"
|
||||||
|
register : password_encoded
|
||||||
|
|
||||||
|
|
||||||
|
- name: Decode root password
|
||||||
|
ansible.builtin.shell:
|
||||||
|
cmd: |
|
||||||
|
echo {{ password_encoded.stdout }} | base64 -d
|
||||||
|
register: password
|
||||||
|
|
||||||
|
- name: Retrieve console ip
|
||||||
|
ansible.builtin.shell:
|
||||||
|
cmd: |
|
||||||
|
kubectl get service argo-artifacts-console -o jsonpath="{.status.loadBalancer.ingress[0].ip}"
|
||||||
|
register : ip_console
|
||||||
|
|
||||||
|
- name: Retrieve API internal ip
|
||||||
|
ansible.builtin.shell:
|
||||||
|
cmd: |
|
||||||
|
kubectl get service argo-artifacts -o jsonpath="{.spec.clusterIP}"
|
||||||
|
register : ip_api
|
||||||
|
|
||||||
|
- name: Display info
|
||||||
|
debug:
|
||||||
|
msg :
|
||||||
|
"
|
||||||
|
MinIO UI console info
|
||||||
|
external IP GUI : {{ ip_console.stdout }}
|
||||||
|
user : {{ user.stdout }}
|
||||||
|
password : {{ password.stdout }}
|
||||||
|
|
||||||
|
IP API : {{ ip_api.stdout }}
|
||||||
|
"
|
||||||
8
ansible/Minio/secret-cnes.yaml
Normal file
8
ansible/Minio/secret-cnes.yaml
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Secret
|
||||||
|
metadata:
|
||||||
|
name: cnes-secrets
|
||||||
|
type: Opaque
|
||||||
|
stringData:
|
||||||
|
weather-api: 1d2b4ad68a4375388e64f5353d33186c
|
||||||
|
era-5: 3e8457b6-f5eb-4405-a09c-78403a14c4d1
|
||||||
142
ansible/Minio/setup_minio_oc_bucket.yml
Normal file
142
ansible/Minio/setup_minio_oc_bucket.yml
Normal file
@@ -0,0 +1,142 @@
|
|||||||
|
- name: Installation k3s
|
||||||
|
hosts: all:!localhost
|
||||||
|
user: "{{ user_prompt }}"
|
||||||
|
gather_facts: true
|
||||||
|
become_method: sudo
|
||||||
|
vars:
|
||||||
|
- argo_namespace: argo
|
||||||
|
- MC_PATH: $HOME/minio-binaries
|
||||||
|
- MINIO_NAME: my-minio
|
||||||
|
- UUID: "{{ uuid_prompt }}"
|
||||||
|
environment:
|
||||||
|
- KUBECONFIG: /home/{{ user_prompt }}/.kube/config
|
||||||
|
tasks:
|
||||||
|
|
||||||
|
- name: Install necessary packages
|
||||||
|
become: true
|
||||||
|
package:
|
||||||
|
name:
|
||||||
|
- python3-kubernetes
|
||||||
|
- python3-jmespath
|
||||||
|
state: present
|
||||||
|
|
||||||
|
- name: Create destination directory
|
||||||
|
file:
|
||||||
|
path: $HOME/minio-binaries
|
||||||
|
state: directory
|
||||||
|
mode: '0755'
|
||||||
|
|
||||||
|
- name: Install mc
|
||||||
|
ansible.builtin.get_url:
|
||||||
|
url: "https://dl.min.io/client/mc/release/linux-amd64/mc"
|
||||||
|
dest: $HOME/minio-binaries/mc
|
||||||
|
mode: +x
|
||||||
|
headers:
|
||||||
|
Content-Type: "application/json"
|
||||||
|
|
||||||
|
- name: Add mc to path
|
||||||
|
ansible.builtin.lineinfile:
|
||||||
|
path: $HOME/.bashrc
|
||||||
|
line: export PATH=$PATH:$HOME/minio-binaries
|
||||||
|
|
||||||
|
- name: Is mc already set up for the local minio
|
||||||
|
ansible.builtin.shell:
|
||||||
|
cmd: |
|
||||||
|
"{{ MC_PATH }}"/mc admin info {{ MINIO_NAME }}
|
||||||
|
register: minio_info
|
||||||
|
failed_when: minio_info.rc not in [0,1]
|
||||||
|
|
||||||
|
- name: Retrieve root user
|
||||||
|
ansible.builtin.shell:
|
||||||
|
cmd: |
|
||||||
|
kubectl get secrets argo-artifacts -o jsonpath="{.data.rootUser}" | base64 -d -
|
||||||
|
register: user
|
||||||
|
when: minio_info.rc == 1
|
||||||
|
|
||||||
|
- name: Retrieve root password
|
||||||
|
ansible.builtin.shell:
|
||||||
|
cmd: |
|
||||||
|
kubectl get secret argo-artifacts --namespace default -o jsonpath="{.data.rootPassword}" | base64 -d -
|
||||||
|
register : password
|
||||||
|
when: minio_info.rc == 1
|
||||||
|
|
||||||
|
- name: Set up MinIO host in mc
|
||||||
|
ansible.builtin.shell:
|
||||||
|
cmd: |
|
||||||
|
"{{ MC_PATH }}"/mc alias set {{ MINIO_NAME }} http://127.0.0.1:9000 '{{ user.stdout }}' '{{ password.stdout }}'
|
||||||
|
failed_when: user.stdout == "" or password.stdout == ""
|
||||||
|
when: minio_info.rc == 1
|
||||||
|
|
||||||
|
- name: Does oc-bucket already exist
|
||||||
|
ansible.builtin.shell:
|
||||||
|
cmd: |
|
||||||
|
"{{ MC_PATH }}"/mc ls my-minio | grep -q oc-bucket
|
||||||
|
register: bucket_exists
|
||||||
|
failed_when: bucket_exists.rc not in [0,1]
|
||||||
|
|
||||||
|
- name: Create oc-bucket
|
||||||
|
ansible.builtin.shell:
|
||||||
|
cmd: |
|
||||||
|
"{{ MC_PATH }}"/mc mb {{ MINIO_NAME }}/oc-bucket
|
||||||
|
when: bucket_exists.rc == 1
|
||||||
|
|
||||||
|
- name: Run mc admin accesskey create command
|
||||||
|
ansible.builtin.shell:
|
||||||
|
cmd: |
|
||||||
|
{{ MC_PATH }}/mc admin accesskey create --json {{ MINIO_NAME }}
|
||||||
|
register: minio_output
|
||||||
|
changed_when: false # Avoid marking the task as changed every time
|
||||||
|
|
||||||
|
|
||||||
|
- name: Parse JSON output
|
||||||
|
set_fact:
|
||||||
|
access_key: "{{ minio_output.stdout | from_json | json_query('accessKey') }}"
|
||||||
|
secret_key: "{{ minio_output.stdout | from_json | json_query('secretKey') }}"
|
||||||
|
|
||||||
|
- name: Retrieve cluster IP for minio API
|
||||||
|
ansible.builtin.shell:
|
||||||
|
cmd: |
|
||||||
|
kubectl get service argo-artifacts -o jsonpath="{.spec.clusterIP}"
|
||||||
|
register: minio_cluster_ip
|
||||||
|
|
||||||
|
- name: Create the minio secret in argo namespace
|
||||||
|
kubernetes.core.k8s:
|
||||||
|
state: present
|
||||||
|
namespace: '{{ argo_namespace }}'
|
||||||
|
name: "{{ UUID }}-argo-artifact-secret"
|
||||||
|
definition:
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Secret
|
||||||
|
type: Opaque
|
||||||
|
stringData:
|
||||||
|
access-key: '{{ access_key }}'
|
||||||
|
secret-key: '{{ secret_key }}'
|
||||||
|
|
||||||
|
|
||||||
|
- name: Create the minio secret in argo namespace
|
||||||
|
kubernetes.core.k8s:
|
||||||
|
state: present
|
||||||
|
namespace: '{{ argo_namespace }}'
|
||||||
|
definition:
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: artifact-repositories
|
||||||
|
data:
|
||||||
|
oc-s3-artifact-repository: |
|
||||||
|
s3:
|
||||||
|
bucket: oc-bucket
|
||||||
|
endpoint: {{ minio_cluster_ip.stdout }}:9000
|
||||||
|
insecure: true
|
||||||
|
accessKeySecret:
|
||||||
|
name: "{{ UUID }}-argo-artifact-secret"
|
||||||
|
key: access-key
|
||||||
|
secretKeySecret:
|
||||||
|
name: "{{ UUID }}-argo-artifact-secret"
|
||||||
|
key: secret-key
|
||||||
|
|
||||||
|
# ansible.builtin.shell:
|
||||||
|
# cmd: |
|
||||||
|
# kubectl create secret -n '{{ argo_namespace }}' generic argo-artifact-secret \
|
||||||
|
# --from-literal=access-key='{{ access_key }}' \
|
||||||
|
# --from-literal=secret-key='{{ secret_key }}'
|
||||||
86
ansible/README.md
Normal file
86
ansible/README.md
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
Login : admrescue/admrescue
|
||||||
|
|
||||||
|
# Requirement
|
||||||
|
|
||||||
|
**Ansible** (+ pip):
|
||||||
|
|
||||||
|
If you don't have `pip` yet
|
||||||
|
|
||||||
|
```
|
||||||
|
curl https://bootstrap.pypa.io/get-pip.py -o /tmp/get-pip.py
|
||||||
|
python3 /tmp/get-pip.py --user
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
python3 -m pip install --user ansible
|
||||||
|
pip install -r requirement.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
**Ansible collections**:
|
||||||
|
|
||||||
|
```
|
||||||
|
ansible-galaxy collection install kubernetes.core
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
# Mosquitto
|
||||||
|
|
||||||
|
`sudo apt update && apt install -y mosquitto mosquitto-clients`
|
||||||
|
|
||||||
|
need to add a conf file in `/etc/mosquitto/conf.d/mosquitto.conf` containing :
|
||||||
|
|
||||||
|
```
|
||||||
|
allow_anonymous true
|
||||||
|
listener 1883 0.0.0.0
|
||||||
|
```
|
||||||
|
|
||||||
|
`sudo systemctl restart mosquitto`
|
||||||
|
|
||||||
|
Launch the mosquitto client to receive message on the machine that hosts the mosquitto server : `sudo mosquitto_sub -h 127.0.0.1 -t argo/alpr`
|
||||||
|
|
||||||
|
# Argo
|
||||||
|
|
||||||
|
## Execute/submite a workflow
|
||||||
|
|
||||||
|
```
|
||||||
|
argo submit PATH_TO_YAML --watch --serviceaccount=argo -n argo
|
||||||
|
```
|
||||||
|
|
||||||
|
# Troubleshoot
|
||||||
|
|
||||||
|
## k3s bind to local port
|
||||||
|
|
||||||
|
On certain distro you might already have an other mini k8s. A sign of this is k3s being able to install, start but never being stable, restarting non stop.
|
||||||
|
|
||||||
|
You should try to see if the port used by k3s are arlready binded :
|
||||||
|
|
||||||
|
> sudo netstat -tuln | grep -E '6443|10250'
|
||||||
|
|
||||||
|
If those ports are already in use then you should identify which service run behidn them and then stop them and preferably uninstall them.
|
||||||
|
|
||||||
|
We have already encountered an instance of `Ubuntu Server` with minikube already installed.
|
||||||
|
|
||||||
|
### Remove minikube
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo systemctl stop snap.microk8s.daemon-kubelite
|
||||||
|
sudo systemctl disable snap.microk8s.daemon-kubelite
|
||||||
|
sudo systemctl restart k3s
|
||||||
|
```
|
||||||
|
|
||||||
|
## Use local container images
|
||||||
|
|
||||||
|
We have encountered difficulties declaring container images that correspond to local images (stored in docker.io/library/)
|
||||||
|
|
||||||
|
We used a docker hub repository to pull our customized image. For this we need to create a secret holding the login informations to a docker account that has access to this repository, which we then link to the serviceAccount running the workflow :
|
||||||
|
|
||||||
|
Create the secret in the argo namespace
|
||||||
|
|
||||||
|
```
|
||||||
|
kubectl create secret docker-registry regcred --docker-username=[DOCKER HUB USERNAME] --docker-password=[DOCKER HUB PASSWORD] -n argo
|
||||||
|
```
|
||||||
|
Patch the `argo` serviceAccount to use the secret when pulling image
|
||||||
|
|
||||||
|
```
|
||||||
|
kubectl patch serviceaccount argo -n argo -p '{"imagePullSecrets": [{"name": "regcred"}]}'
|
||||||
|
```
|
||||||
3
ansible/ansible.cfg
Normal file
3
ansible/ansible.cfg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
[defaults]
|
||||||
|
stdout_callback = yaml
|
||||||
|
stderr_callback = yaml
|
||||||
154
ansible/notes.md
Normal file
154
ansible/notes.md
Normal file
@@ -0,0 +1,154 @@
|
|||||||
|
Login : admrescue/admrescue
|
||||||
|
|
||||||
|
# Deploy VM with ansible
|
||||||
|
|
||||||
|
TODO : check with yves or benjamin how to create a qcow2 image with azerty layout and ssh ready
|
||||||
|
|
||||||
|
# Deploy k3s
|
||||||
|
|
||||||
|
Two password are asked via the prompt :
|
||||||
|
- First the user that you are connecting to on the host via ssh
|
||||||
|
- Second the root password
|
||||||
|
|
||||||
|
|
||||||
|
`ansible-playbook -i my_hosts.yaml deploy_k3s.yml --extra-vars " user_prompt=<YOUR_USER>" --ask-pass --ask-become-pass`
|
||||||
|
|
||||||
|
# Deploy Argo
|
||||||
|
|
||||||
|
|
||||||
|
password to provide is the one to the user you are connecting to on the host via ssh
|
||||||
|
|
||||||
|
`ansible-playbook -i my_hosts.yaml deploy_argo.yml --extra-vars " user_prompt=<YOUR_USER>" --ask-pass --ask-become-pass`
|
||||||
|
|
||||||
|
# Deploy Admirality
|
||||||
|
|
||||||
|
Install the kubernetes.core collection : `ansible-galaxy collection install kubernetes.core` for ansible to be able to use some kubectl tools.
|
||||||
|
|
||||||
|
## Install and prepare Admiralty
|
||||||
|
|
||||||
|
This play prepare your machine to use Admiralty in kubernetes. It installs helm, cert-manager and admiralty, then configure your clusters to be an admiralty source or target.
|
||||||
|
|
||||||
|
/!\ TODO : declare the list of target and source in a play's vars
|
||||||
|
|
||||||
|
`ansible-playbook -i my_hosts.yaml deploy_admiralty.yml --extra-vars "host_prompt=HOSTNAME user_prompt=<YOUR_USER>" --ask-pass --ask-become-pass`
|
||||||
|
|
||||||
|
## Share kubeconfig for the control cluster
|
||||||
|
|
||||||
|
`ansible-playbook -i ../my_hosts.yaml create_secrets.yml --extra-vars "host_prompt=WORKLOAD_HOST user_prompt=<YOUR_USER> control_host=CONTROL_HOST" --ask-pass --ask-become-pass`
|
||||||
|
|
||||||
|
# MinIO
|
||||||
|
|
||||||
|
- Limit the Memory
|
||||||
|
- Limit the replica
|
||||||
|
- Limit volumeClaimTemplates.spec.resources.requests
|
||||||
|
- Add LoadBalancer for WebUI
|
||||||
|
- Corrected command :
|
||||||
|
> kubectl get secret argo-artifacts --namespace default -o jsonpath="{.data.rootUser}" | base64 --decode
|
||||||
|
|
||||||
|
> kubectl get secret argo-artifacts --namespace default -o jsonpath="{.data.rootPassword}" | base64 --decode
|
||||||
|
|
||||||
|
- With the output of the last tasks, create a secret in argo namespace to give access to the minio API
|
||||||
|
|
||||||
|
```
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Secret
|
||||||
|
metadata:
|
||||||
|
name: argo-minio-secret
|
||||||
|
type: Opaque
|
||||||
|
data:
|
||||||
|
accessKeySecret: [base64 ENCODED VALUE]
|
||||||
|
secretKeySecret: [base64 ENCODED VALUE]
|
||||||
|
```
|
||||||
|
|
||||||
|
- Create a ConfigMap, which will be used by argo to create the S3 artifact, the content can match the one from the previously created secret
|
||||||
|
|
||||||
|
```
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
# If you want to use this config map by default, name it "artifact-repositories". Otherwise, you can provide a reference to a
|
||||||
|
# different config map in `artifactRepositoryRef.configMap`.
|
||||||
|
name: artifact-repositories
|
||||||
|
# annotations:
|
||||||
|
# # v3.0 and after - if you want to use a specific key, put that key into this annotation.
|
||||||
|
# workflows.argoproj.io/default-artifact-repository: oc-s3-artifact-repository
|
||||||
|
data:
|
||||||
|
oc-s3-artifact-repository: |
|
||||||
|
s3:
|
||||||
|
bucket: oc-bucket
|
||||||
|
endpoint: [ retrieve cluster with kubectl get service argo-artifacts -o jsonpath="{.spec.clusterIP}" ]:9000
|
||||||
|
insecure: true
|
||||||
|
accessKeySecret:
|
||||||
|
name: argo-minio-secret
|
||||||
|
key: accessKeySecret
|
||||||
|
secretKeySecret:
|
||||||
|
name: argo-minio-secret
|
||||||
|
key: secretKeySecret
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
# Use custom container image : local registry
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Mosquitto
|
||||||
|
|
||||||
|
`sudo apt update && apt install -y mosquitto mosquitto-clients`
|
||||||
|
|
||||||
|
need to add a conf file in `/etc/mosquitto/conf.d/mosquitto.conf` containing :
|
||||||
|
|
||||||
|
```
|
||||||
|
allow_anonymous true
|
||||||
|
listener 1883 0.0.0.0
|
||||||
|
```
|
||||||
|
|
||||||
|
`sudo systemctl restart mosquitto`
|
||||||
|
|
||||||
|
Launch the mosquitto client to receive message on the machine that hosts the mosquitto server : `sudo mosquitto_sub -h 127.0.0.1 -t argo/alpr`
|
||||||
|
|
||||||
|
# Argo
|
||||||
|
|
||||||
|
## Execute/submite a workflow
|
||||||
|
|
||||||
|
```
|
||||||
|
argo submit PATH_TO_YAML --watch --serviceaccount=argo -n argo
|
||||||
|
```
|
||||||
|
|
||||||
|
# Troubleshoot
|
||||||
|
|
||||||
|
## k3s bind to local port
|
||||||
|
|
||||||
|
On certain distro you might already have an other mini k8s. A sign of this is k3s being able to install, start but never being stable, restarting non stop.
|
||||||
|
|
||||||
|
You should try to see if the port used by k3s are arlready binded :
|
||||||
|
|
||||||
|
> sudo netstat -tuln | grep -E '6443|10250'
|
||||||
|
|
||||||
|
If those ports are already in use then you should identify which service run behidn them and then stop them and preferably uninstall them.
|
||||||
|
|
||||||
|
We have already encountered an instance of `Ubuntu Server` with minikube already installed.
|
||||||
|
|
||||||
|
### Remove minikube
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo systemctl stop snap.microk8s.daemon-kubelite
|
||||||
|
sudo systemctl disable snap.microk8s.daemon-kubelite
|
||||||
|
sudo systemctl restart k3s
|
||||||
|
```
|
||||||
|
|
||||||
|
## Use local container images
|
||||||
|
|
||||||
|
We have encountered difficulties declaring container images that correspond to local images (stored in docker.io/library/)
|
||||||
|
|
||||||
|
We used a docker hub repository to pull our customized image. For this we need to create a secret holding the login informations to a docker account that has access to this repository, which we then link to the serviceAccount running the workflow :
|
||||||
|
|
||||||
|
Create the secret in the argo namespace
|
||||||
|
|
||||||
|
```
|
||||||
|
kubectl create secret docker-registry regcred --docker-username=[DOCKER HUB USERNAME] --docker-password=[DOCKER HUB PASSWORD] -n argo
|
||||||
|
```
|
||||||
|
Patch the `argo` serviceAccount to use the secret when pulling image
|
||||||
|
|
||||||
|
```
|
||||||
|
kubectl patch serviceaccount argo -n argo -p '{"imagePullSecrets": [{"name": "regcred"}]}'
|
||||||
|
```
|
||||||
36
ansible/requirements.txt
Normal file
36
ansible/requirements.txt
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
ansible-compat==24.6.0
|
||||||
|
ansible-core==2.17.0
|
||||||
|
ansible-creator==24.5.0
|
||||||
|
ansible-lint==24.5.0
|
||||||
|
attrs==23.2.0
|
||||||
|
black==24.4.2
|
||||||
|
bracex==2.4
|
||||||
|
cffi==1.16.0
|
||||||
|
click==8.1.7
|
||||||
|
cryptography==42.0.7
|
||||||
|
filelock==3.14.0
|
||||||
|
importlib_metadata==7.1.0
|
||||||
|
Jinja2==3.1.4
|
||||||
|
jmespath==1.0.1
|
||||||
|
jsonschema==4.22.0
|
||||||
|
jsonschema-specifications==2023.12.1
|
||||||
|
markdown-it-py==3.0.0
|
||||||
|
MarkupSafe==2.1.5
|
||||||
|
mdurl==0.1.2
|
||||||
|
mypy-extensions==1.0.0
|
||||||
|
packaging==24.0
|
||||||
|
pathspec==0.12.1
|
||||||
|
platformdirs==4.2.2
|
||||||
|
pycparser==2.22
|
||||||
|
Pygments==2.18.0
|
||||||
|
PyYAML==6.0.1
|
||||||
|
referencing==0.35.1
|
||||||
|
resolvelib==1.0.1
|
||||||
|
rich==13.7.1
|
||||||
|
rpds-py==0.18.1
|
||||||
|
ruamel.yaml==0.18.6
|
||||||
|
ruamel.yaml.clib==0.2.8
|
||||||
|
subprocess-tee==0.4.1
|
||||||
|
wcmatch==8.5.2
|
||||||
|
yamllint==1.35.1
|
||||||
|
zipp==3.19.0
|
||||||
@@ -1,115 +0,0 @@
|
|||||||
module bootstrap_dht
|
|
||||||
|
|
||||||
go 1.25.6
|
|
||||||
|
|
||||||
require (
|
|
||||||
github.com/benbjohnson/clock v1.3.5 // indirect
|
|
||||||
github.com/beorn7/perks v1.0.1 // indirect
|
|
||||||
github.com/cespare/xxhash/v2 v2.3.0 // indirect
|
|
||||||
github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c // indirect
|
|
||||||
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0 // indirect
|
|
||||||
github.com/dunglas/httpsfv v1.1.0 // indirect
|
|
||||||
github.com/filecoin-project/go-clock v0.1.0 // indirect
|
|
||||||
github.com/flynn/noise v1.1.0 // indirect
|
|
||||||
github.com/go-logr/logr v1.4.3 // indirect
|
|
||||||
github.com/go-logr/stdr v1.2.2 // indirect
|
|
||||||
github.com/google/gopacket v1.1.19 // indirect
|
|
||||||
github.com/google/uuid v1.6.0 // indirect
|
|
||||||
github.com/gorilla/websocket v1.5.3 // indirect
|
|
||||||
github.com/hashicorp/golang-lru v1.0.2 // indirect
|
|
||||||
github.com/huin/goupnp v1.3.0 // indirect
|
|
||||||
github.com/ipfs/boxo v0.35.2 // indirect
|
|
||||||
github.com/ipfs/go-cid v0.6.0 // indirect
|
|
||||||
github.com/ipfs/go-datastore v0.9.0 // indirect
|
|
||||||
github.com/ipfs/go-log/v2 v2.9.0 // indirect
|
|
||||||
github.com/ipld/go-ipld-prime v0.21.0 // indirect
|
|
||||||
github.com/jackpal/go-nat-pmp v1.0.2 // indirect
|
|
||||||
github.com/jbenet/go-temp-err-catcher v0.1.0 // indirect
|
|
||||||
github.com/klauspost/cpuid/v2 v2.3.0 // indirect
|
|
||||||
github.com/koron/go-ssdp v0.0.6 // indirect
|
|
||||||
github.com/libp2p/go-buffer-pool v0.1.0 // indirect
|
|
||||||
github.com/libp2p/go-cidranger v1.1.0 // indirect
|
|
||||||
github.com/libp2p/go-flow-metrics v0.3.0 // indirect
|
|
||||||
github.com/libp2p/go-libp2p v0.47.0 // indirect
|
|
||||||
github.com/libp2p/go-libp2p-asn-util v0.4.1 // indirect
|
|
||||||
github.com/libp2p/go-libp2p-kad-dht v0.37.0 // indirect
|
|
||||||
github.com/libp2p/go-libp2p-kbucket v0.8.0 // indirect
|
|
||||||
github.com/libp2p/go-libp2p-record v0.3.1 // indirect
|
|
||||||
github.com/libp2p/go-libp2p-routing-helpers v0.7.5 // indirect
|
|
||||||
github.com/libp2p/go-msgio v0.3.0 // indirect
|
|
||||||
github.com/libp2p/go-netroute v0.3.0 // indirect
|
|
||||||
github.com/libp2p/go-reuseport v0.4.0 // indirect
|
|
||||||
github.com/libp2p/go-yamux/v5 v5.0.1 // indirect
|
|
||||||
github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd // indirect
|
|
||||||
github.com/mattn/go-isatty v0.0.20 // indirect
|
|
||||||
github.com/miekg/dns v1.1.68 // indirect
|
|
||||||
github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b // indirect
|
|
||||||
github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc // indirect
|
|
||||||
github.com/minio/sha256-simd v1.0.1 // indirect
|
|
||||||
github.com/mr-tron/base58 v1.2.0 // indirect
|
|
||||||
github.com/multiformats/go-base32 v0.1.0 // indirect
|
|
||||||
github.com/multiformats/go-base36 v0.2.0 // indirect
|
|
||||||
github.com/multiformats/go-multiaddr v0.16.1 // indirect
|
|
||||||
github.com/multiformats/go-multiaddr-dns v0.4.1 // indirect
|
|
||||||
github.com/multiformats/go-multiaddr-fmt v0.1.0 // indirect
|
|
||||||
github.com/multiformats/go-multibase v0.2.0 // indirect
|
|
||||||
github.com/multiformats/go-multicodec v0.10.0 // indirect
|
|
||||||
github.com/multiformats/go-multihash v0.2.3 // indirect
|
|
||||||
github.com/multiformats/go-multistream v0.6.1 // indirect
|
|
||||||
github.com/multiformats/go-varint v0.1.0 // indirect
|
|
||||||
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
|
|
||||||
github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 // indirect
|
|
||||||
github.com/pion/datachannel v1.5.10 // indirect
|
|
||||||
github.com/pion/dtls/v2 v2.2.12 // indirect
|
|
||||||
github.com/pion/dtls/v3 v3.0.6 // indirect
|
|
||||||
github.com/pion/ice/v4 v4.0.10 // indirect
|
|
||||||
github.com/pion/interceptor v0.1.40 // indirect
|
|
||||||
github.com/pion/logging v0.2.3 // indirect
|
|
||||||
github.com/pion/mdns/v2 v2.0.7 // indirect
|
|
||||||
github.com/pion/randutil v0.1.0 // indirect
|
|
||||||
github.com/pion/rtcp v1.2.15 // indirect
|
|
||||||
github.com/pion/rtp v1.8.19 // indirect
|
|
||||||
github.com/pion/sctp v1.8.39 // indirect
|
|
||||||
github.com/pion/sdp/v3 v3.0.13 // indirect
|
|
||||||
github.com/pion/srtp/v3 v3.0.6 // indirect
|
|
||||||
github.com/pion/stun v0.6.1 // indirect
|
|
||||||
github.com/pion/stun/v3 v3.0.0 // indirect
|
|
||||||
github.com/pion/transport/v2 v2.2.10 // indirect
|
|
||||||
github.com/pion/transport/v3 v3.0.7 // indirect
|
|
||||||
github.com/pion/turn/v4 v4.0.2 // indirect
|
|
||||||
github.com/pion/webrtc/v4 v4.1.2 // indirect
|
|
||||||
github.com/polydawn/refmt v0.89.0 // indirect
|
|
||||||
github.com/prometheus/client_golang v1.23.2 // indirect
|
|
||||||
github.com/prometheus/client_model v0.6.2 // indirect
|
|
||||||
github.com/prometheus/common v0.66.1 // indirect
|
|
||||||
github.com/prometheus/procfs v0.17.0 // indirect
|
|
||||||
github.com/quic-go/qpack v0.6.0 // indirect
|
|
||||||
github.com/quic-go/quic-go v0.59.0 // indirect
|
|
||||||
github.com/quic-go/webtransport-go v0.10.0 // indirect
|
|
||||||
github.com/spaolacci/murmur3 v1.1.0 // indirect
|
|
||||||
github.com/whyrusleeping/go-keyspace v0.0.0-20160322163242-5b898ac5add1 // indirect
|
|
||||||
github.com/wlynxg/anet v0.0.5 // indirect
|
|
||||||
go.opentelemetry.io/auto/sdk v1.2.1 // indirect
|
|
||||||
go.opentelemetry.io/otel v1.38.0 // indirect
|
|
||||||
go.opentelemetry.io/otel/metric v1.38.0 // indirect
|
|
||||||
go.opentelemetry.io/otel/trace v1.38.0 // indirect
|
|
||||||
go.uber.org/dig v1.19.0 // indirect
|
|
||||||
go.uber.org/fx v1.24.0 // indirect
|
|
||||||
go.uber.org/mock v0.5.2 // indirect
|
|
||||||
go.uber.org/multierr v1.11.0 // indirect
|
|
||||||
go.uber.org/zap v1.27.0 // indirect
|
|
||||||
go.yaml.in/yaml/v2 v2.4.3 // indirect
|
|
||||||
golang.org/x/crypto v0.45.0 // indirect
|
|
||||||
golang.org/x/exp v0.0.0-20251023183803-a4bb9ffd2546 // indirect
|
|
||||||
golang.org/x/mod v0.29.0 // indirect
|
|
||||||
golang.org/x/net v0.47.0 // indirect
|
|
||||||
golang.org/x/sync v0.18.0 // indirect
|
|
||||||
golang.org/x/sys v0.38.0 // indirect
|
|
||||||
golang.org/x/telemetry v0.0.0-20251008203120-078029d740a8 // indirect
|
|
||||||
golang.org/x/text v0.31.0 // indirect
|
|
||||||
golang.org/x/time v0.12.0 // indirect
|
|
||||||
golang.org/x/tools v0.38.0 // indirect
|
|
||||||
gonum.org/v1/gonum v0.16.0 // indirect
|
|
||||||
google.golang.org/protobuf v1.36.10 // indirect
|
|
||||||
lukechampine.com/blake3 v1.4.1 // indirect
|
|
||||||
)
|
|
||||||
@@ -1,363 +0,0 @@
|
|||||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
|
||||||
github.com/benbjohnson/clock v1.3.5 h1:VvXlSJBzZpA/zum6Sj74hxwYI2DIxRWuNIoXAzHZz5o=
|
|
||||||
github.com/benbjohnson/clock v1.3.5/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
|
|
||||||
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
|
|
||||||
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
|
|
||||||
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
|
|
||||||
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
|
|
||||||
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
|
|
||||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
|
||||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
|
||||||
github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c h1:pFUpOrbxDR6AkioZ1ySsx5yxlDQZ8stG2b88gTPxgJU=
|
|
||||||
github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c/go.mod h1:6UhI8N9EjYm1c2odKpFpAYeR8dsBeM7PtzQhRgxRr9U=
|
|
||||||
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0 h1:NMZiJj8QnKe1LgsbDayM4UoHwbvwDRwnI3hwNaAHRnc=
|
|
||||||
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0/go.mod h1:ZXNYxsqcloTdSy/rNShjYzMhyjf0LaoftYK0p+A3h40=
|
|
||||||
github.com/dunglas/httpsfv v1.1.0 h1:Jw76nAyKWKZKFrpMMcL76y35tOpYHqQPzHQiwDvpe54=
|
|
||||||
github.com/dunglas/httpsfv v1.1.0/go.mod h1:zID2mqw9mFsnt7YC3vYQ9/cjq30q41W+1AnDwH8TiMg=
|
|
||||||
github.com/filecoin-project/go-clock v0.1.0 h1:SFbYIM75M8NnFm1yMHhN9Ahy3W5bEZV9gd6MPfXbKVU=
|
|
||||||
github.com/filecoin-project/go-clock v0.1.0/go.mod h1:4uB/O4PvOjlx1VCMdZ9MyDZXRm//gkj1ELEbxfI1AZs=
|
|
||||||
github.com/flynn/noise v1.1.0 h1:KjPQoQCEFdZDiP03phOvGi11+SVVhBG2wOWAorLsstg=
|
|
||||||
github.com/flynn/noise v1.1.0/go.mod h1:xbMo+0i6+IGbYdJhF31t2eR1BIU0CYc12+BNAKwUTag=
|
|
||||||
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
|
|
||||||
github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=
|
|
||||||
github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
|
|
||||||
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
|
|
||||||
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
|
|
||||||
github.com/go-yaml/yaml v2.1.0+incompatible/go.mod h1:w2MrLa16VYP0jy6N7M5kHaCkaLENm+P+Tv+MfurjSw0=
|
|
||||||
github.com/google/gopacket v1.1.19 h1:ves8RnFZPGiFnTS0uPQStjwru6uO6h+nlr9j6fL7kF8=
|
|
||||||
github.com/google/gopacket v1.1.19/go.mod h1:iJ8V8n6KS+z2U1A8pUwu8bW5SyEMkXJB8Yo/Vo+TKTo=
|
|
||||||
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
|
|
||||||
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
|
||||||
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
|
|
||||||
github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg=
|
|
||||||
github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
|
|
||||||
github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c=
|
|
||||||
github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
|
|
||||||
github.com/huin/goupnp v1.3.0 h1:UvLUlWDNpoUdYzb2TCn+MuTWtcjXKSza2n6CBdQ0xXc=
|
|
||||||
github.com/huin/goupnp v1.3.0/go.mod h1:gnGPsThkYa7bFi/KWmEysQRf48l2dvR5bxr2OFckNX8=
|
|
||||||
github.com/ipfs/boxo v0.35.2 h1:0QZJJh6qrak28abENOi5OA8NjBnZM4p52SxeuIDqNf8=
|
|
||||||
github.com/ipfs/boxo v0.35.2/go.mod h1:bZn02OFWwJtY8dDW9XLHaki59EC5o+TGDECXEbe1w8U=
|
|
||||||
github.com/ipfs/go-cid v0.5.0 h1:goEKKhaGm0ul11IHA7I6p1GmKz8kEYniqFopaB5Otwg=
|
|
||||||
github.com/ipfs/go-cid v0.5.0/go.mod h1:0L7vmeNXpQpUS9vt+yEARkJ8rOg43DF3iPgn4GIN0mk=
|
|
||||||
github.com/ipfs/go-cid v0.6.0 h1:DlOReBV1xhHBhhfy/gBNNTSyfOM6rLiIx9J7A4DGf30=
|
|
||||||
github.com/ipfs/go-cid v0.6.0/go.mod h1:NC4kS1LZjzfhK40UGmpXv5/qD2kcMzACYJNntCUiDhQ=
|
|
||||||
github.com/ipfs/go-datastore v0.9.0 h1:WocriPOayqalEsueHv6SdD4nPVl4rYMfYGLD4bqCZ+w=
|
|
||||||
github.com/ipfs/go-datastore v0.9.0/go.mod h1:uT77w/XEGrvJWwHgdrMr8bqCN6ZTW9gzmi+3uK+ouHg=
|
|
||||||
github.com/ipfs/go-detect-race v0.0.1/go.mod h1:8BNT7shDZPo99Q74BpGMK+4D8Mn4j46UU0LZ723meps=
|
|
||||||
github.com/ipfs/go-log/v2 v2.9.0 h1:l4b06AwVXwldIzbVPZy5z7sKp9lHFTX0KWfTBCtHaOk=
|
|
||||||
github.com/ipfs/go-log/v2 v2.9.0/go.mod h1:UhIYAwMV7Nb4ZmihUxfIRM2Istw/y9cAk3xaK+4Zs2c=
|
|
||||||
github.com/ipld/go-ipld-prime v0.21.0 h1:n4JmcpOlPDIxBcY037SVfpd1G+Sj1nKZah0m6QH9C2E=
|
|
||||||
github.com/ipld/go-ipld-prime v0.21.0/go.mod h1:3RLqy//ERg/y5oShXXdx5YIp50cFGOanyMctpPjsvxQ=
|
|
||||||
github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus=
|
|
||||||
github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc=
|
|
||||||
github.com/jbenet/go-temp-err-catcher v0.1.0 h1:zpb3ZH6wIE8Shj2sKS+khgRvf7T7RABoLk/+KKHggpk=
|
|
||||||
github.com/jbenet/go-temp-err-catcher v0.1.0/go.mod h1:0kJRvmDZXNMIiJirNPEYfhpPwbGVtZVWC34vc5WLsDk=
|
|
||||||
github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
|
|
||||||
github.com/klauspost/cpuid/v2 v2.2.10 h1:tBs3QSyvjDyFTq3uoc/9xFpCuOsJQFNPiAhYdw2skhE=
|
|
||||||
github.com/klauspost/cpuid/v2 v2.2.10/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0=
|
|
||||||
github.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzhA9Y=
|
|
||||||
github.com/klauspost/cpuid/v2 v2.3.0/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0=
|
|
||||||
github.com/koron/go-ssdp v0.0.6 h1:Jb0h04599eq/CY7rB5YEqPS83HmRfHP2azkxMN2rFtU=
|
|
||||||
github.com/koron/go-ssdp v0.0.6/go.mod h1:0R9LfRJGek1zWTjN3JUNlm5INCDYGpRDfAptnct63fI=
|
|
||||||
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
|
|
||||||
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
|
||||||
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
|
||||||
github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8=
|
|
||||||
github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg=
|
|
||||||
github.com/libp2p/go-cidranger v1.1.0 h1:ewPN8EZ0dd1LSnrtuwd4709PXVcITVeuwbag38yPW7c=
|
|
||||||
github.com/libp2p/go-cidranger v1.1.0/go.mod h1:KWZTfSr+r9qEo9OkI9/SIEeAtw+NNoU0dXIXt15Okic=
|
|
||||||
github.com/libp2p/go-flow-metrics v0.2.0 h1:EIZzjmeOE6c8Dav0sNv35vhZxATIXWZg6j/C08XmmDw=
|
|
||||||
github.com/libp2p/go-flow-metrics v0.2.0/go.mod h1:st3qqfu8+pMfh+9Mzqb2GTiwrAGjIPszEjZmtksN8Jc=
|
|
||||||
github.com/libp2p/go-flow-metrics v0.3.0 h1:q31zcHUvHnwDO0SHaukewPYgwOBSxtt830uJtUx6784=
|
|
||||||
github.com/libp2p/go-flow-metrics v0.3.0/go.mod h1:nuhlreIwEguM1IvHAew3ij7A8BMlyHQJ279ao24eZZo=
|
|
||||||
github.com/libp2p/go-libp2p v0.47.0 h1:qQpBjSCWNQFF0hjBbKirMXE9RHLtSuzTDkTfr1rw0yc=
|
|
||||||
github.com/libp2p/go-libp2p v0.47.0/go.mod h1:s8HPh7mMV933OtXzONaGFseCg/BE//m1V34p3x4EUOY=
|
|
||||||
github.com/libp2p/go-libp2p-asn-util v0.4.1 h1:xqL7++IKD9TBFMgnLPZR6/6iYhawHKHl950SO9L6n94=
|
|
||||||
github.com/libp2p/go-libp2p-asn-util v0.4.1/go.mod h1:d/NI6XZ9qxw67b4e+NgpQexCIiFYJjErASrYW4PFDN8=
|
|
||||||
github.com/libp2p/go-libp2p-kad-dht v0.37.0 h1:V1IkFzK9taNS1UNAx260foulcBPH+watAUFjNo2qMUY=
|
|
||||||
github.com/libp2p/go-libp2p-kad-dht v0.37.0/go.mod h1:o4FPa1ea++UVAMJ1c+kyjUmj3CKm9+ZCyzQb4uutCFM=
|
|
||||||
github.com/libp2p/go-libp2p-kbucket v0.8.0 h1:QAK7RzKJpYe+EuSEATAaaHYMYLkPDGC18m9jxPLnU8s=
|
|
||||||
github.com/libp2p/go-libp2p-kbucket v0.8.0/go.mod h1:JMlxqcEyKwO6ox716eyC0hmiduSWZZl6JY93mGaaqc4=
|
|
||||||
github.com/libp2p/go-libp2p-record v0.3.1 h1:cly48Xi5GjNw5Wq+7gmjfBiG9HCzQVkiZOUZ8kUl+Fg=
|
|
||||||
github.com/libp2p/go-libp2p-record v0.3.1/go.mod h1:T8itUkLcWQLCYMqtX7Th6r7SexyUJpIyPgks757td/E=
|
|
||||||
github.com/libp2p/go-libp2p-routing-helpers v0.7.5 h1:HdwZj9NKovMx0vqq6YNPTh6aaNzey5zHD7HeLJtq6fI=
|
|
||||||
github.com/libp2p/go-libp2p-routing-helpers v0.7.5/go.mod h1:3YaxrwP0OBPDD7my3D0KxfR89FlcX/IEbxDEDfAmj98=
|
|
||||||
github.com/libp2p/go-msgio v0.3.0 h1:mf3Z8B1xcFN314sWX+2vOTShIE0Mmn2TXn3YCUQGNj0=
|
|
||||||
github.com/libp2p/go-msgio v0.3.0/go.mod h1:nyRM819GmVaF9LX3l03RMh10QdOroF++NBbxAb0mmDM=
|
|
||||||
github.com/libp2p/go-netroute v0.3.0 h1:nqPCXHmeNmgTJnktosJ/sIef9hvwYCrsLxXmfNks/oc=
|
|
||||||
github.com/libp2p/go-netroute v0.3.0/go.mod h1:Nkd5ShYgSMS5MUKy/MU2T57xFoOKvvLR92Lic48LEyA=
|
|
||||||
github.com/libp2p/go-reuseport v0.4.0 h1:nR5KU7hD0WxXCJbmw7r2rhRYruNRl2koHw8fQscQm2s=
|
|
||||||
github.com/libp2p/go-reuseport v0.4.0/go.mod h1:ZtI03j/wO5hZVDFo2jKywN6bYKWLOy8Se6DrI2E1cLU=
|
|
||||||
github.com/libp2p/go-yamux/v5 v5.0.1 h1:f0WoX/bEF2E8SbE4c/k1Mo+/9z0O4oC/hWEA+nfYRSg=
|
|
||||||
github.com/libp2p/go-yamux/v5 v5.0.1/go.mod h1:en+3cdX51U0ZslwRdRLrvQsdayFt3TSUKvBGErzpWbU=
|
|
||||||
github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd h1:br0buuQ854V8u83wA0rVZ8ttrq5CpaPZdvrK0LP2lOk=
|
|
||||||
github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd/go.mod h1:QuCEs1Nt24+FYQEqAAncTDPJIuGs+LxK1MCiFL25pMU=
|
|
||||||
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
|
|
||||||
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
|
|
||||||
github.com/miekg/dns v1.1.66 h1:FeZXOS3VCVsKnEAd+wBkjMC3D2K+ww66Cq3VnCINuJE=
|
|
||||||
github.com/miekg/dns v1.1.66/go.mod h1:jGFzBsSNbJw6z1HYut1RKBKHA9PBdxeHrZG8J+gC2WE=
|
|
||||||
github.com/miekg/dns v1.1.68 h1:jsSRkNozw7G/mnmXULynzMNIsgY2dHC8LO6U6Ij2JEA=
|
|
||||||
github.com/miekg/dns v1.1.68/go.mod h1:fujopn7TB3Pu3JM69XaawiU0wqjpL9/8xGop5UrTPps=
|
|
||||||
github.com/mikioh/tcp v0.0.0-20190314235350-803a9b46060c/go.mod h1:0SQS9kMwD2VsyFEB++InYyBJroV/FRmBgcydeSUcJms=
|
|
||||||
github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b h1:z78hV3sbSMAUoyUMM0I83AUIT6Hu17AWfgjzIbtrYFc=
|
|
||||||
github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b/go.mod h1:lxPUiZwKoFL8DUUmalo2yJJUCxbPKtm8OKfqr2/FTNU=
|
|
||||||
github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc h1:PTfri+PuQmWDqERdnNMiD9ZejrlswWrCpBEZgWOiTrc=
|
|
||||||
github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc/go.mod h1:cGKTAVKx4SxOuR/czcZ/E2RSJ3sfHs8FpHhQ5CWMf9s=
|
|
||||||
github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1/go.mod h1:pD8RvIylQ358TN4wwqatJ8rNavkEINozVn9DtGI3dfQ=
|
|
||||||
github.com/minio/sha256-simd v0.1.1-0.20190913151208-6de447530771/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM=
|
|
||||||
github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM=
|
|
||||||
github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8=
|
|
||||||
github.com/mr-tron/base58 v1.1.2/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc=
|
|
||||||
github.com/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o=
|
|
||||||
github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc=
|
|
||||||
github.com/multiformats/go-base32 v0.1.0 h1:pVx9xoSPqEIQG8o+UbAe7DNi51oej1NtK+aGkbLYxPE=
|
|
||||||
github.com/multiformats/go-base32 v0.1.0/go.mod h1:Kj3tFY6zNr+ABYMqeUNeGvkIC/UYgtWibDcT0rExnbI=
|
|
||||||
github.com/multiformats/go-base36 v0.2.0 h1:lFsAbNOGeKtuKozrtBsAkSVhv1p9D0/qedU9rQyccr0=
|
|
||||||
github.com/multiformats/go-base36 v0.2.0/go.mod h1:qvnKE++v+2MWCfePClUEjE78Z7P2a1UV0xHgWc0hkp4=
|
|
||||||
github.com/multiformats/go-multiaddr v0.1.1/go.mod h1:aMKBKNEYmzmDmxfX88/vz+J5IU55txyt0p4aiWVohjo=
|
|
||||||
github.com/multiformats/go-multiaddr v0.16.0 h1:oGWEVKioVQcdIOBlYM8BH1rZDWOGJSqr9/BKl6zQ4qc=
|
|
||||||
github.com/multiformats/go-multiaddr v0.16.0/go.mod h1:JSVUmXDjsVFiW7RjIFMP7+Ev+h1DTbiJgVeTV/tcmP0=
|
|
||||||
github.com/multiformats/go-multiaddr v0.16.1 h1:fgJ0Pitow+wWXzN9do+1b8Pyjmo8m5WhGfzpL82MpCw=
|
|
||||||
github.com/multiformats/go-multiaddr v0.16.1/go.mod h1:JSVUmXDjsVFiW7RjIFMP7+Ev+h1DTbiJgVeTV/tcmP0=
|
|
||||||
github.com/multiformats/go-multiaddr-dns v0.4.1 h1:whi/uCLbDS3mSEUMb1MsoT4uzUeZB0N32yzufqS0i5M=
|
|
||||||
github.com/multiformats/go-multiaddr-dns v0.4.1/go.mod h1:7hfthtB4E4pQwirrz+J0CcDUfbWzTqEzVyYKKIKpgkc=
|
|
||||||
github.com/multiformats/go-multiaddr-fmt v0.1.0 h1:WLEFClPycPkp4fnIzoFoV9FVd49/eQsuaL3/CWe167E=
|
|
||||||
github.com/multiformats/go-multiaddr-fmt v0.1.0/go.mod h1:hGtDIW4PU4BqJ50gW2quDuPVjyWNZxToGUh/HwTZYJo=
|
|
||||||
github.com/multiformats/go-multibase v0.2.0 h1:isdYCVLvksgWlMW9OZRYJEa9pZETFivncJHmHnnd87g=
|
|
||||||
github.com/multiformats/go-multibase v0.2.0/go.mod h1:bFBZX4lKCA/2lyOFSAoKH5SS6oPyjtnzK/XTFDPkNuk=
|
|
||||||
github.com/multiformats/go-multicodec v0.9.1 h1:x/Fuxr7ZuR4jJV4Os5g444F7xC4XmyUaT/FWtE+9Zjo=
|
|
||||||
github.com/multiformats/go-multicodec v0.9.1/go.mod h1:LLWNMtyV5ithSBUo3vFIMaeDy+h3EbkMTek1m+Fybbo=
|
|
||||||
github.com/multiformats/go-multicodec v0.10.0 h1:UpP223cig/Cx8J76jWt91njpK3GTAO1w02sdcjZDSuc=
|
|
||||||
github.com/multiformats/go-multicodec v0.10.0/go.mod h1:wg88pM+s2kZJEQfRCKBNU+g32F5aWBEjyFHXvZLTcLI=
|
|
||||||
github.com/multiformats/go-multihash v0.0.8/go.mod h1:YSLudS+Pi8NHE7o6tb3D8vrpKa63epEDmG8nTduyAew=
|
|
||||||
github.com/multiformats/go-multihash v0.2.3 h1:7Lyc8XfX/IY2jWb/gI7JP+o7JEq9hOa7BFvVU9RSh+U=
|
|
||||||
github.com/multiformats/go-multihash v0.2.3/go.mod h1:dXgKXCXjBzdscBLk9JkjINiEsCKRVch90MdaGiKsvSM=
|
|
||||||
github.com/multiformats/go-multistream v0.6.1 h1:4aoX5v6T+yWmc2raBHsTvzmFhOI8WVOer28DeBBEYdQ=
|
|
||||||
github.com/multiformats/go-multistream v0.6.1/go.mod h1:ksQf6kqHAb6zIsyw7Zm+gAuVo57Qbq84E27YlYqavqw=
|
|
||||||
github.com/multiformats/go-varint v0.0.7 h1:sWSGR+f/eu5ABZA2ZpYKBILXTTs9JWpdEM/nEGOHFS8=
|
|
||||||
github.com/multiformats/go-varint v0.0.7/go.mod h1:r8PUYw/fD/SjBCiKOoDlGF6QawOELpZAu9eioSos/OU=
|
|
||||||
github.com/multiformats/go-varint v0.1.0 h1:i2wqFp4sdl3IcIxfAonHQV9qU5OsZ4Ts9IOoETFs5dI=
|
|
||||||
github.com/multiformats/go-varint v0.1.0/go.mod h1:5KVAVXegtfmNQQm/lCY+ATvDzvJJhSkUlGQV9wgObdI=
|
|
||||||
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
|
|
||||||
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
|
|
||||||
github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 h1:onHthvaw9LFnH4t2DcNVpwGmV9E1BkGknEliJkfwQj0=
|
|
||||||
github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58/go.mod h1:DXv8WO4yhMYhSNPKjeNKa5WY9YCIEBRbNzFFPJbWO6Y=
|
|
||||||
github.com/pion/datachannel v1.5.10 h1:ly0Q26K1i6ZkGf42W7D4hQYR90pZwzFOjTq5AuCKk4o=
|
|
||||||
github.com/pion/datachannel v1.5.10/go.mod h1:p/jJfC9arb29W7WrxyKbepTU20CFgyx5oLo8Rs4Py/M=
|
|
||||||
github.com/pion/dtls/v2 v2.2.7/go.mod h1:8WiMkebSHFD0T+dIU+UeBaoV7kDhOW5oDCzZ7WZ/F9s=
|
|
||||||
github.com/pion/dtls/v2 v2.2.12 h1:KP7H5/c1EiVAAKUmXyCzPiQe5+bCJrpOeKg/L05dunk=
|
|
||||||
github.com/pion/dtls/v2 v2.2.12/go.mod h1:d9SYc9fch0CqK90mRk1dC7AkzzpwJj6u2GU3u+9pqFE=
|
|
||||||
github.com/pion/dtls/v3 v3.0.6 h1:7Hkd8WhAJNbRgq9RgdNh1aaWlZlGpYTzdqjy9x9sK2E=
|
|
||||||
github.com/pion/dtls/v3 v3.0.6/go.mod h1:iJxNQ3Uhn1NZWOMWlLxEEHAN5yX7GyPvvKw04v9bzYU=
|
|
||||||
github.com/pion/ice/v4 v4.0.10 h1:P59w1iauC/wPk9PdY8Vjl4fOFL5B+USq1+xbDcN6gT4=
|
|
||||||
github.com/pion/ice/v4 v4.0.10/go.mod h1:y3M18aPhIxLlcO/4dn9X8LzLLSma84cx6emMSu14FGw=
|
|
||||||
github.com/pion/interceptor v0.1.40 h1:e0BjnPcGpr2CFQgKhrQisBU7V3GXK6wrfYrGYaU6Jq4=
|
|
||||||
github.com/pion/interceptor v0.1.40/go.mod h1:Z6kqH7M/FYirg3frjGJ21VLSRJGBXB/KqaTIrdqnOic=
|
|
||||||
github.com/pion/logging v0.2.2/go.mod h1:k0/tDVsRCX2Mb2ZEmTqNa7CWsQPc+YYCB7Q+5pahoms=
|
|
||||||
github.com/pion/logging v0.2.3 h1:gHuf0zpoh1GW67Nr6Gj4cv5Z9ZscU7g/EaoC/Ke/igI=
|
|
||||||
github.com/pion/logging v0.2.3/go.mod h1:z8YfknkquMe1csOrxK5kc+5/ZPAzMxbKLX5aXpbpC90=
|
|
||||||
github.com/pion/mdns/v2 v2.0.7 h1:c9kM8ewCgjslaAmicYMFQIde2H9/lrZpjBkN8VwoVtM=
|
|
||||||
github.com/pion/mdns/v2 v2.0.7/go.mod h1:vAdSYNAT0Jy3Ru0zl2YiW3Rm/fJCwIeM0nToenfOJKA=
|
|
||||||
github.com/pion/randutil v0.1.0 h1:CFG1UdESneORglEsnimhUjf33Rwjubwj6xfiOXBa3mA=
|
|
||||||
github.com/pion/randutil v0.1.0/go.mod h1:XcJrSMMbbMRhASFVOlj/5hQial/Y8oH/HVo7TBZq+j8=
|
|
||||||
github.com/pion/rtcp v1.2.15 h1:LZQi2JbdipLOj4eBjK4wlVoQWfrZbh3Q6eHtWtJBZBo=
|
|
||||||
github.com/pion/rtcp v1.2.15/go.mod h1:jlGuAjHMEXwMUHK78RgX0UmEJFV4zUKOFHR7OP+D3D0=
|
|
||||||
github.com/pion/rtp v1.8.19 h1:jhdO/3XhL/aKm/wARFVmvTfq0lC/CvN1xwYKmduly3c=
|
|
||||||
github.com/pion/rtp v1.8.19/go.mod h1:bAu2UFKScgzyFqvUKmbvzSdPr+NGbZtv6UB2hesqXBk=
|
|
||||||
github.com/pion/sctp v1.8.39 h1:PJma40vRHa3UTO3C4MyeJDQ+KIobVYRZQZ0Nt7SjQnE=
|
|
||||||
github.com/pion/sctp v1.8.39/go.mod h1:cNiLdchXra8fHQwmIoqw0MbLLMs+f7uQ+dGMG2gWebE=
|
|
||||||
github.com/pion/sdp/v3 v3.0.13 h1:uN3SS2b+QDZnWXgdr69SM8KB4EbcnPnPf2Laxhty/l4=
|
|
||||||
github.com/pion/sdp/v3 v3.0.13/go.mod h1:88GMahN5xnScv1hIMTqLdu/cOcUkj6a9ytbncwMCq2E=
|
|
||||||
github.com/pion/srtp/v3 v3.0.6 h1:E2gyj1f5X10sB/qILUGIkL4C2CqK269Xq167PbGCc/4=
|
|
||||||
github.com/pion/srtp/v3 v3.0.6/go.mod h1:BxvziG3v/armJHAaJ87euvkhHqWe9I7iiOy50K2QkhY=
|
|
||||||
github.com/pion/stun v0.6.1 h1:8lp6YejULeHBF8NmV8e2787BogQhduZugh5PdhDyyN4=
|
|
||||||
github.com/pion/stun v0.6.1/go.mod h1:/hO7APkX4hZKu/D0f2lHzNyvdkTGtIy3NDmLR7kSz/8=
|
|
||||||
github.com/pion/stun/v3 v3.0.0 h1:4h1gwhWLWuZWOJIJR9s2ferRO+W3zA/b6ijOI6mKzUw=
|
|
||||||
github.com/pion/stun/v3 v3.0.0/go.mod h1:HvCN8txt8mwi4FBvS3EmDghW6aQJ24T+y+1TKjB5jyU=
|
|
||||||
github.com/pion/transport/v2 v2.2.1/go.mod h1:cXXWavvCnFF6McHTft3DWS9iic2Mftcz1Aq29pGcU5g=
|
|
||||||
github.com/pion/transport/v2 v2.2.4/go.mod h1:q2U/tf9FEfnSBGSW6w5Qp5PFWRLRj3NjLhCCgpRK4p0=
|
|
||||||
github.com/pion/transport/v2 v2.2.10 h1:ucLBLE8nuxiHfvkFKnkDQRYWYfp8ejf4YBOPfaQpw6Q=
|
|
||||||
github.com/pion/transport/v2 v2.2.10/go.mod h1:sq1kSLWs+cHW9E+2fJP95QudkzbK7wscs8yYgQToO5E=
|
|
||||||
github.com/pion/transport/v3 v3.0.7 h1:iRbMH05BzSNwhILHoBoAPxoB9xQgOaJk+591KC9P1o0=
|
|
||||||
github.com/pion/transport/v3 v3.0.7/go.mod h1:YleKiTZ4vqNxVwh77Z0zytYi7rXHl7j6uPLGhhz9rwo=
|
|
||||||
github.com/pion/turn/v4 v4.0.2 h1:ZqgQ3+MjP32ug30xAbD6Mn+/K4Sxi3SdNOTFf+7mpps=
|
|
||||||
github.com/pion/turn/v4 v4.0.2/go.mod h1:pMMKP/ieNAG/fN5cZiN4SDuyKsXtNTr0ccN7IToA1zs=
|
|
||||||
github.com/pion/webrtc/v4 v4.1.2 h1:mpuUo/EJ1zMNKGE79fAdYNFZBX790KE7kQQpLMjjR54=
|
|
||||||
github.com/pion/webrtc/v4 v4.1.2/go.mod h1:xsCXiNAmMEjIdFxAYU0MbB3RwRieJsegSB2JZsGN+8U=
|
|
||||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
|
||||||
github.com/polydawn/refmt v0.89.0 h1:ADJTApkvkeBZsN0tBTx8QjpD9JkmxbKp0cxfr9qszm4=
|
|
||||||
github.com/polydawn/refmt v0.89.0/go.mod h1:/zvteZs/GwLtCgZ4BL6CBsk9IKIlexP43ObX9AxTqTw=
|
|
||||||
github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q=
|
|
||||||
github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0=
|
|
||||||
github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o=
|
|
||||||
github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg=
|
|
||||||
github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk=
|
|
||||||
github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE=
|
|
||||||
github.com/prometheus/common v0.64.0 h1:pdZeA+g617P7oGv1CzdTzyeShxAGrTBsolKNOLQPGO4=
|
|
||||||
github.com/prometheus/common v0.64.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8=
|
|
||||||
github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs=
|
|
||||||
github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA=
|
|
||||||
github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg=
|
|
||||||
github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is=
|
|
||||||
github.com/prometheus/procfs v0.17.0 h1:FuLQ+05u4ZI+SS/w9+BWEM2TXiHKsUQ9TADiRH7DuK0=
|
|
||||||
github.com/prometheus/procfs v0.17.0/go.mod h1:oPQLaDAMRbA+u8H5Pbfq+dl3VDAvHxMUOVhe0wYB2zw=
|
|
||||||
github.com/quic-go/qpack v0.6.0 h1:g7W+BMYynC1LbYLSqRt8PBg5Tgwxn214ZZR34VIOjz8=
|
|
||||||
github.com/quic-go/qpack v0.6.0/go.mod h1:lUpLKChi8njB4ty2bFLX2x4gzDqXwUpaO1DP9qMDZII=
|
|
||||||
github.com/quic-go/quic-go v0.59.0 h1:OLJkp1Mlm/aS7dpKgTc6cnpynnD2Xg7C1pwL6vy/SAw=
|
|
||||||
github.com/quic-go/quic-go v0.59.0/go.mod h1:upnsH4Ju1YkqpLXC305eW3yDZ4NfnNbmQRCMWS58IKU=
|
|
||||||
github.com/quic-go/webtransport-go v0.10.0 h1:LqXXPOXuETY5Xe8ITdGisBzTYmUOy5eSj+9n4hLTjHI=
|
|
||||||
github.com/quic-go/webtransport-go v0.10.0/go.mod h1:LeGIXr5BQKE3UsynwVBeQrU1TPrbh73MGoC6jd+V7ow=
|
|
||||||
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
|
|
||||||
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
|
|
||||||
github.com/smartystreets/assertions v1.2.0/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYlVhC/LOxJk7iOWnoo=
|
|
||||||
github.com/smartystreets/goconvey v1.7.2/go.mod h1:Vw0tHAZW6lzCRk3xgdin6fKYcG+G3Pg9vgXWeJpQFMM=
|
|
||||||
github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI=
|
|
||||||
github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
|
|
||||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
|
||||||
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
|
|
||||||
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
|
|
||||||
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
|
|
||||||
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
|
||||||
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
|
|
||||||
github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
|
|
||||||
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
|
|
||||||
github.com/urfave/cli v1.22.10/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
|
|
||||||
github.com/warpfork/go-wish v0.0.0-20220906213052-39a1cc7a02d0/go.mod h1:x6AKhvSSexNrVSrViXSHUEbICjmGXhtgABaHIySUSGw=
|
|
||||||
github.com/whyrusleeping/go-keyspace v0.0.0-20160322163242-5b898ac5add1 h1:EKhdznlJHPMoKr0XTrX+IlJs1LH3lyx2nfr1dOlZ79k=
|
|
||||||
github.com/whyrusleeping/go-keyspace v0.0.0-20160322163242-5b898ac5add1/go.mod h1:8UvriyWtv5Q5EOgjHaSseUEdkQfvwFv1I/In/O2M9gc=
|
|
||||||
github.com/wlynxg/anet v0.0.3/go.mod h1:eay5PRQr7fIVAMbTbchTnO9gG65Hg/uYGdc7mguHxoA=
|
|
||||||
github.com/wlynxg/anet v0.0.5 h1:J3VJGi1gvo0JwZ/P1/Yc/8p63SoW98B5dHkYDmpgvvU=
|
|
||||||
github.com/wlynxg/anet v0.0.5/go.mod h1:eay5PRQr7fIVAMbTbchTnO9gG65Hg/uYGdc7mguHxoA=
|
|
||||||
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
|
|
||||||
go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64=
|
|
||||||
go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y=
|
|
||||||
go.opentelemetry.io/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8=
|
|
||||||
go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM=
|
|
||||||
go.opentelemetry.io/otel/metric v1.38.0 h1:Kl6lzIYGAh5M159u9NgiRkmoMKjvbsKtYRwgfrA6WpA=
|
|
||||||
go.opentelemetry.io/otel/metric v1.38.0/go.mod h1:kB5n/QoRM8YwmUahxvI3bO34eVtQf2i4utNVLr9gEmI=
|
|
||||||
go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE=
|
|
||||||
go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs=
|
|
||||||
go.uber.org/dig v1.19.0 h1:BACLhebsYdpQ7IROQ1AGPjrXcP5dF80U3gKoFzbaq/4=
|
|
||||||
go.uber.org/dig v1.19.0/go.mod h1:Us0rSJiThwCv2GteUN0Q7OKvU7n5J4dxZ9JKUXozFdE=
|
|
||||||
go.uber.org/fx v1.24.0 h1:wE8mruvpg2kiiL1Vqd0CC+tr0/24XIB10Iwp2lLWzkg=
|
|
||||||
go.uber.org/fx v1.24.0/go.mod h1:AmDeGyS+ZARGKM4tlH4FY2Jr63VjbEDJHtqXTGP5hbo=
|
|
||||||
go.uber.org/mock v0.5.2 h1:LbtPTcP8A5k9WPXj54PPPbjcI4Y6lhyOZXn+VS7wNko=
|
|
||||||
go.uber.org/mock v0.5.2/go.mod h1:wLlUxC2vVTPTaE3UD51E0BGOAElKrILxhVSDYQLld5o=
|
|
||||||
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
|
|
||||||
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
|
|
||||||
go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8=
|
|
||||||
go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
|
|
||||||
go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0=
|
|
||||||
go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8=
|
|
||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
|
||||||
golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
|
||||||
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
|
||||||
golang.org/x/crypto v0.0.0-20200602180216-279210d13fed/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
|
||||||
golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
|
|
||||||
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
|
||||||
golang.org/x/crypto v0.8.0/go.mod h1:mRqEX+O9/h5TFCrQhkgjo2yKi0yYA+9ecGkdQoHrywE=
|
|
||||||
golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw=
|
|
||||||
golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg=
|
|
||||||
golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4=
|
|
||||||
golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc=
|
|
||||||
golang.org/x/crypto v0.45.0 h1:jMBrvKuj23MTlT0bQEOBcAE0mjg8mK9RXFhRH6nyF3Q=
|
|
||||||
golang.org/x/crypto v0.45.0/go.mod h1:XTGrrkGJve7CYK7J8PEww4aY7gM3qMCElcJQ8n8JdX4=
|
|
||||||
golang.org/x/exp v0.0.0-20250606033433-dcc06ee1d476 h1:bsqhLWFR6G6xiQcb+JoGqdKdRU6WzPWmK8E0jxTjzo4=
|
|
||||||
golang.org/x/exp v0.0.0-20250606033433-dcc06ee1d476/go.mod h1:3//PLf8L/X+8b4vuAfHzxeRUl04Adcb341+IGKfnqS8=
|
|
||||||
golang.org/x/exp v0.0.0-20251023183803-a4bb9ffd2546 h1:mgKeJMpvi0yx/sU5GsxQ7p6s2wtOnGAHZWCHUM4KGzY=
|
|
||||||
golang.org/x/exp v0.0.0-20251023183803-a4bb9ffd2546/go.mod h1:j/pmGrbnkbPtQfxEe5D0VQhZC6qKbfKifgD0oM7sR70=
|
|
||||||
golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
|
|
||||||
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
|
|
||||||
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
|
|
||||||
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
|
||||||
golang.org/x/mod v0.27.0 h1:kb+q2PyFnEADO2IEF935ehFUXlWiNjJWtRNgBLSfbxQ=
|
|
||||||
golang.org/x/mod v0.27.0/go.mod h1:rWI627Fq0DEoudcK+MBkNkCe0EetEaDSwJJkCcjpazc=
|
|
||||||
golang.org/x/mod v0.29.0 h1:HV8lRxZC4l2cr3Zq1LvtOsi/ThTgWnUk/y64QSs8GwA=
|
|
||||||
golang.org/x/mod v0.29.0/go.mod h1:NyhrlYXJ2H4eJiRy/WDBO6HMqZQ6q9nk4JzS3NuCK+w=
|
|
||||||
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
|
||||||
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
|
||||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
|
||||||
golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
|
||||||
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
|
||||||
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
|
||||||
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
|
|
||||||
golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns=
|
|
||||||
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
|
|
||||||
golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI=
|
|
||||||
golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY=
|
|
||||||
golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE=
|
|
||||||
golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg=
|
|
||||||
golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY=
|
|
||||||
golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU=
|
|
||||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
|
||||||
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
|
||||||
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
|
||||||
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
|
||||||
golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw=
|
|
||||||
golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
|
|
||||||
golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I=
|
|
||||||
golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
|
|
||||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
|
||||||
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
|
||||||
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
|
||||||
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
|
||||||
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
|
||||||
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
|
||||||
golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
|
||||||
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
|
||||||
golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
|
||||||
golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
|
||||||
golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI=
|
|
||||||
golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
|
|
||||||
golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc=
|
|
||||||
golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
|
|
||||||
golang.org/x/telemetry v0.0.0-20251008203120-078029d740a8 h1:LvzTn0GQhWuvKH/kVRS3R3bVAsdQWI7hvfLHGgh9+lU=
|
|
||||||
golang.org/x/telemetry v0.0.0-20251008203120-078029d740a8/go.mod h1:Pi4ztBfryZoJEkyFTI5/Ocsu2jXyDr6iSdgJiYE/uwE=
|
|
||||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
|
||||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
|
||||||
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
|
|
||||||
golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY=
|
|
||||||
golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
|
|
||||||
golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU=
|
|
||||||
golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY=
|
|
||||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
|
||||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
|
||||||
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
|
||||||
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
|
||||||
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
|
|
||||||
golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
|
|
||||||
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
|
|
||||||
golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng=
|
|
||||||
golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU=
|
|
||||||
golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM=
|
|
||||||
golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM=
|
|
||||||
golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE=
|
|
||||||
golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg=
|
|
||||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
|
||||||
golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
|
||||||
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
|
||||||
golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
|
||||||
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
|
|
||||||
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
|
|
||||||
golang.org/x/tools v0.36.0 h1:kWS0uv/zsvHEle1LbV5LE8QujrxB3wfQyxHfhOk0Qkg=
|
|
||||||
golang.org/x/tools v0.36.0/go.mod h1:WBDiHKJK8YgLHlcQPYQzNCkUxUypCaa5ZegCVutKm+s=
|
|
||||||
golang.org/x/tools v0.38.0 h1:Hx2Xv8hISq8Lm16jvBZ2VQf+RLmbd7wVUsALibYI/IQ=
|
|
||||||
golang.org/x/tools v0.38.0/go.mod h1:yEsQ/d/YK8cjh0L6rZlY8tgtlKiBNTL14pGDJPJpYQs=
|
|
||||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
|
||||||
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
|
||||||
gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk=
|
|
||||||
gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E=
|
|
||||||
google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY=
|
|
||||||
google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY=
|
|
||||||
google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE=
|
|
||||||
google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=
|
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
|
||||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
|
|
||||||
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
|
||||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
|
||||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
|
||||||
lukechampine.com/blake3 v1.4.1 h1:I3Smz7gso8w4/TunLKec6K2fn+kyKtDxr/xcQEN84Wg=
|
|
||||||
lukechampine.com/blake3 v1.4.1/go.mod h1:QFosUxmjB8mnrWFSNwKmvxHpfY72bmD2tQ0kBMM3kwo=
|
|
||||||
@@ -1,88 +0,0 @@
|
|||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"fmt"
|
|
||||||
"log"
|
|
||||||
"os"
|
|
||||||
"os/signal"
|
|
||||||
"syscall"
|
|
||||||
"time"
|
|
||||||
|
|
||||||
libp2p "github.com/libp2p/go-libp2p"
|
|
||||||
dht "github.com/libp2p/go-libp2p-kad-dht"
|
|
||||||
"github.com/libp2p/go-libp2p/core/crypto"
|
|
||||||
"github.com/libp2p/go-libp2p/core/host"
|
|
||||||
)
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
ctx, cancel := context.WithCancel(context.Background())
|
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
priv, err := loadOrCreateKey("bootstrap.key")
|
|
||||||
if err != nil {
|
|
||||||
log.Fatal(err)
|
|
||||||
}
|
|
||||||
h, err := libp2p.New(
|
|
||||||
libp2p.Identity(priv),
|
|
||||||
libp2p.ListenAddrStrings(
|
|
||||||
"/ip4/0.0.0.0/tcp/4001",
|
|
||||||
),
|
|
||||||
)
|
|
||||||
if err != nil {
|
|
||||||
log.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
kad, err := dht.New(ctx, h,
|
|
||||||
dht.Mode(dht.ModeServer),
|
|
||||||
dht.BootstrapPeers(),
|
|
||||||
)
|
|
||||||
if err != nil {
|
|
||||||
log.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := kad.Bootstrap(ctx); err != nil {
|
|
||||||
log.Fatal(err)
|
|
||||||
}
|
|
||||||
printAddrs(h)
|
|
||||||
waitForSignal()
|
|
||||||
}
|
|
||||||
|
|
||||||
func loadOrCreateKey(path string) (crypto.PrivKey, error) {
|
|
||||||
if data, err := os.ReadFile(path); err == nil {
|
|
||||||
return crypto.UnmarshalPrivateKey(data)
|
|
||||||
}
|
|
||||||
|
|
||||||
priv, _, err := crypto.GenerateEd25519Key(nil)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
data, err := crypto.MarshalPrivateKey(priv)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := os.WriteFile(path, data, 0600); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return priv, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func printAddrs(h host.Host) {
|
|
||||||
fmt.Println("Bootstrap node started")
|
|
||||||
fmt.Println("PeerID:", h.ID())
|
|
||||||
|
|
||||||
for _, a := range h.Addrs() {
|
|
||||||
fmt.Printf("%s/p2p/%s\n", a, h.ID())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func waitForSignal() {
|
|
||||||
ch := make(chan os.Signal, 1)
|
|
||||||
signal.Notify(ch, syscall.SIGINT, syscall.SIGTERM)
|
|
||||||
<-ch
|
|
||||||
fmt.Println("Shutting down bootstrap node")
|
|
||||||
time.Sleep(1 * time.Second)
|
|
||||||
}
|
|
||||||
48
clone_opencloud_microservices.sh
Executable file
48
clone_opencloud_microservices.sh
Executable file
@@ -0,0 +1,48 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
REPOS=(
|
||||||
|
"oc-auth"
|
||||||
|
"oc-catalog"
|
||||||
|
"oc-datacenter"
|
||||||
|
"oc-front"
|
||||||
|
"oc-monitord"
|
||||||
|
"oc-peer"
|
||||||
|
"oc-shared"
|
||||||
|
"oc-scheduler"
|
||||||
|
"oc-schedulerd"
|
||||||
|
"oc-workflow"
|
||||||
|
"oc-workspace"
|
||||||
|
)
|
||||||
|
|
||||||
|
# Function to clone repositories
|
||||||
|
clone_repo() {
|
||||||
|
local repo_url="https://cloud.o-forge.io/core/$1.git"
|
||||||
|
local repo_name=$(basename "$repo_url" .git)
|
||||||
|
local branche=$2
|
||||||
|
echo "Processing repository: $repo_name"
|
||||||
|
|
||||||
|
if [ ! -d "$repo_name" ]; then
|
||||||
|
echo "Cloning repository: $repo_name"
|
||||||
|
git clone "$repo_url"
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "Error cloning $repo_url"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
echo "Check in $branche & pull"
|
||||||
|
ls
|
||||||
|
echo "Repository '$repo_name' already exists. Pulling latest changes..."
|
||||||
|
cd "$repo_name" && git checkout $branche && git pull
|
||||||
|
cd ..
|
||||||
|
}
|
||||||
|
|
||||||
|
cd ..
|
||||||
|
# Iterate through each repository in the list
|
||||||
|
for repo in "${REPOS[@]}"; do
|
||||||
|
clone_repo $repo ${1:-main}
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "All repositories processed successfully."
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
22
datas/add.sh
22
datas/add.sh
@@ -1,22 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
DB="DC_myDC"
|
|
||||||
CONTAINER="mongo"
|
|
||||||
|
|
||||||
echo "📌 Dropping database '$DB'..."
|
|
||||||
docker exec -i $CONTAINER mongosh --eval "db.getSiblingDB('$DB').dropDatabase()"
|
|
||||||
|
|
||||||
echo "📌 Copying datas/ to container..."
|
|
||||||
docker cp ./datas $CONTAINER:/datas
|
|
||||||
|
|
||||||
echo "📌 Importing JSON files..."
|
|
||||||
for i in ./datas/*.json; do
|
|
||||||
filename=$(basename "$i")
|
|
||||||
collection="${filename%.json}"
|
|
||||||
|
|
||||||
echo "→ Importing '$filename' into collection '$collection'..."
|
|
||||||
docker exec -i $CONTAINER sh -c \
|
|
||||||
"mongoimport --jsonArray --db $DB --collection $collection --file /datas/$filename --drop"
|
|
||||||
done
|
|
||||||
|
|
||||||
echo "✔ Done!"
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
[{"_id":"0b6a375f-be3e-49a9-9827-3c2d5eddb057","abstractobject":{"id":"0b6a375f-be3e-49a9-9827-3c2d5eddb057","name":"test","is_draft":false,"creator_id":"c0cece97-7730-4c2a-8c20-a30944564106","creation_date":{"$date":"2025-01-27T10:41:47.741Z"},"update_date":{"$date":"2025-01-27T10:41:47.741Z"},"updater_id":"c0cece97-7730-4c2a-8c20-a30944564106","access_mode":0},"description":"Proto Collaborative area example","collaborative_area":{},"workflows":["58314c99-c595-4ca2-8b5e-822a6774efed"],"allowed_peers_group":{"c0cece97-7730-4c2a-8c20-a30944564106":["*"]},"workspaces":[]}]
|
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
|||||||
[{"_id":"c0cece97-7730-4c2a-8c20-a30944564106","failed_execution":null,"abstractobject":{"update_date":{"$date":"2025-03-27T09:13:13.230Z"},"access_mode":0,"id":"c0cece97-7730-4c2a-8c20-a30944564106","name":"local","is_draft":false,"creation_date":{"$date":"2025-03-27T09:13:13.230Z"}},"url":"http://localhost:8000","wallet_address":"my-wallet","public_key":"-----BEGIN RSA PUBLIC KEY-----\nMIICCgKCAgEAw2pdG6wMtuLcP0+k1LFvIb0DQo/oHW2uNJaEJK74plXqp4ztz2dR\nb+RQHFLeLuqk4i/zc3b4K3fKPXSlwnVPJCwzPrnyT8jYGOZVlWlETiV9xeJhu6s/\nBh6g1PWz75XjjwV50iv/CEiLNBT23f/3J44wrQzygqNQCiQSALdxWLAEl4l5kHSa\n9oMyV70/Uql94/ayMARZsHgp9ZvqQKbkZPw6yzVMfCBxQozlNlo315OHevudhnhp\nDRjN5I7zWmqYt6rbXJJC7Y3Izdvzn7QI88RqjSRST5I/7Kz3ndCqrOnI+OQUE5NT\nREyQebphvQfTDTKlRPXkdyktdK2DH28Zj6ZF3yjQvN35Q4zhOzlq77dO5IhhopI7\nct8dZH1T1nYkvdyCA/EVMtQsASmBOitH0Y0ACoXQK5Kb6nm/TcM/9ZSJUNiEMuy5\ngBZ3YKE9oa4cpTpPXwcA+S/cU7HPNnQAsvD3iJi8GTW9uJs84pn4/WhpQqmXd4rv\nhKWECCN3fHy01fUs/U0PaSj2jDY/kQVeXoikNMzPUjdZd9m816TIBh3v3aVXCH/0\niTHHAxctvDgMRb2fpvRJ/wwnYjFG9RpamVFDMvC9NffuYzWAA9IRIY4cqgerfHrV\nZ2HHiPTDDvDAIsvImXZc/h7mXN6m3RCQ4Qywy993wd9gUdgg/qnynHcCAwEAAQ==\n-----END RSA PUBLIC KEY-----\n","state":1}]
|
|
||||||
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
|||||||
[{"_id":"04bc70b5-8d7b-44e6-9015-fadfa0fb102d","abstractinstanciatedresource":{"abstractresource":{"type":"storage","abstractobject":{"id":"04bc70b5-8d7b-44e6-9015-fadfa0fb102d","name":"IRT risk database","is_draft":false,"creator_id":"c0cece97-7730-4c2a-8c20-a30944564106","creation_date":"2021-09-30T14:00:00.000Z","update_date":"2021-09-30T14:00:00.000Z","updater_id":"c0cece97-7730-4c2a-8c20-a30944564106","access_mode":1},"logo":"https://cloud.o-forge.io/core/deperecated-oc-catalog/raw/branch/main/scripts/local_imgs/IRT risk database.png","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.","short_description":"S3 compliant IRT file storage","owners":[{"name":"IRT"}]},"instances":[{"env":[{"attr":"source","readonly":true}],"resourceinstance":{"abstractobject":{"id":"7fdccb9c-7090-40a5-bacd-7435bc56c90d","name":"IRT local file storage Marseille"},"location":{"latitude":50.62925,"longitude":3.057256},"country":250,"partnerships":[{"resourcepartnership":{"namespace":"default","peer_groups":{"c0cece97-7730-4c2a-8c20-a30944564106":["*"]},"pricing_profiles":[{"pricing":{"price":50,"currency":"EUR","buying_strategy":0,"time_pricing_strategy":0}}]}}]},"source":"/mnt/vol","local":false,"security_level":"public","size":50,"size_type":3,"redundancy":"RAID5","throughput":"r:200,w:150"}]},"storage_type":5,"acronym":"DC_myDC"},{"_id":"e726020a-b68e-4abc-ab36-c3640ea3f557","abstractinstanciatedresource":{"abstractresource":{"type":"storage","abstractobject":{"id":"e726020a-b68e-4abc-ab36-c3640ea3f557","name":"IRT local file storage","is_draft":false,"creator_id":"c0cece97-7730-4c2a-8c20-a30944564106","creation_date":"2021-09-30T14:00:00.000Z","update_date":"2021-09-30T14:00:00.000Z","updater_id":"c0cece97-7730-4c2a-8c20-a30944564106","access_mode":1},"logo":"https://cloud.o-forge.io/core/deperecated-oc-catalog/raw/branch/main/scripts/local_imgs/IRT local file storage.png","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.","short_description":"S3 compliant IRT file storage","owners":[{"name":"IRT"}]},"instances":[{"resourceinstance":{"env":[{"attr":"source","readonly":true}],"abstractobject":{"id":"7fdccb9c-7090-40a5-bacd-7435bc56c90d","name":"IRT local file storage Marseille"},"location":{"latitude":50.62925,"longitude":3.057256},"country":250,"partnerships":[{"resourcepartnership":{"namespace":"default","peer_groups":{"c0cece97-7730-4c2a-8c20-a30944564106":["*"]},"pricing_profiles":[{"pricing":{"price":50,"currency":"EUR","buying_strategy":0,"time_pricing_strategy":0}}]}}]},"source":"/mnt/vol","local":true,"security_level":"public","size":500,"size_type":0,"encryption":true,"redundancy":"RAID5S","throughput":"r:300,w:350"}]},"storage_type":5,"acronym":"DC_myDC"}]
|
|
||||||
File diff suppressed because one or more lines are too long
@@ -1,19 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
clusters:
|
|
||||||
- cluster:
|
|
||||||
certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURCVENDQWUyZ0F3SUJBZ0lJT0lhTzFqdnRET0F3RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TlRFeE1UTXhNVFU0TVRaYUZ3MHpOVEV4TVRFeE1qQXpNVFphTUJVeApFekFSQmdOVkJBTVRDbXQxWW1WeWJtVjBaWE13Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLCkFvSUJBUUNsVGxkUEozTkpON0wyblVtbDFLM3pNL21PV3VLN0FKZzBjNktJY01nZFhoaEF3Z0FPRzFuUnZhRG8KL3N3ODBweUFjbEJSbzg2bnlyM1d6UUVYa1hTTDY2bFV6LzJzaHh5QlliejJXTDlZeUZGVmxwSzlPY3BRQjVIegpURUNrNStIY28rK1NJVndXUHc0dCtQZXhsb2VpaHZhUUJvUE54d2lxWjhhWG50NUljd0lXU1ZqMVVsT1p1NmhwCnA3VUVuS0dhTWl3Zm5Zb2o4MmNvUVFEdFlEWi9MQS80L3V1UzVlUFZKaTBpb1dXMGduTWdzUm1IUzltY3cvZzkKK1hYVm5vN1lLekYvRjEyeTZPQ0YrOUpGd2JqWmFiVlJhc21rQjZyTFZ1N2FsMi9TQ3VyaitEWk5Mcys5WHVTYgpFb2I2UE8rQlhlNmJDdGp5aWZvZmJ2TExXREc5QWdNQkFBR2pXVEJYTUE0R0ExVWREd0VCL3dRRUF3SUNwREFQCkJnTlZIUk1CQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXQkJTd2oyczRpUG9rV0FnSFlNQ1czZ2NxMEEzNlZ6QVYKQmdOVkhSRUVEakFNZ2dwcmRXSmxjbTVsZEdWek1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQWc3ZW9BTWRlZgpwN21IYVFnR1F2YnRQRHVQY2REa2J1NjVKWDI2ZzhNMy9WMlovaEp4MlpqVE0wdTZmNExuOUFnc1p0R3dhL1RRClp0aGRpQWdWdDRuNjZBZ1lLQS8yYlNBbVNWZ1R0cngyd29xN2VzbnJjc1VUcm5ISXptVS9TR01CVzNtTlZnd0sKWnpLN3ZuTm9jaHAzYzNDa0xmbWFXeWpMUjljVXVWejB0T3psa0p5SDB6OUNrQVVXdmVJZ3VTR2Y2WWtManRPZQpvdld3ZHJUcTlLaGQ2SEVXa0lIM241QjNDbTF0aXE0bGFuaVJERkhheWk1enRBSDBYME1UOUhaNGszR0ErdXA4CkZJZXdubDJXTmJoVGxraXdhMzRRTUhDelhpUXdGTThjODUwTnJGNXFOSEVTbUMzeWtGdjk3VlNqOW8wb3pPS3YKSWlERkRVSTZybG0rCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
|
|
||||||
server: https://127.0.0.1:36289
|
|
||||||
name: kind-opencloud
|
|
||||||
contexts:
|
|
||||||
- context:
|
|
||||||
cluster: kind-opencloud
|
|
||||||
user: kind-opencloud
|
|
||||||
name: kind-opencloud
|
|
||||||
current-context: kind-opencloud
|
|
||||||
kind: Config
|
|
||||||
users:
|
|
||||||
- name: kind-opencloud
|
|
||||||
user:
|
|
||||||
client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURLVENDQWhHZ0F3SUJBZ0lJVnpzcEVlN3Z2eFF3RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TlRFeE1UTXhNVFU0TVRaYUZ3MHlOakV4TVRNeE1qQXpNVFphTUR3eApIekFkQmdOVkJBb1RGbXQxWW1WaFpHMDZZMngxYzNSbGNpMWhaRzFwYm5NeEdUQVhCZ05WQkFNVEVHdDFZbVZ5CmJtVjBaWE10WVdSdGFXNHdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEV2s3YlkKYWVYQjJGaUczSjc1Zk5iaGkxQkhkTTdrNk8yQ0p1WkJydzE0UldSNWZ2YnZUNHVBRm1LZ0VFWHk0angvaWdwOQpFUm9QUmFxUFoxQSs0N21HRUl0bjdSdFFuY0k2N3FMSUxnUUU4ZkhWTE9GU0hVRmV0S05tbGxZNEErWDVRejZmCjBHdExBZzNoMlc4bmtibGtzakNVQjR3SEF5ZnMrM1dtZmJRb0YzcmU5NUlKMDZCY2NtOTgyZTFVUUpsZ1YzaW4KN0pQdlRDYmp0bkR1UmV4VXpyazJsK1JHWjVHYitaZEs3Z1QvS2MvdFhONjVIYTRiTHc2aFR4RzdxZlB5dnlSdAphblVYcHQ5SVNSd3BPc2R6YjF1RkZTYUN6V1FBWUNJc3RpeWs1bkszVWJwL1ZLS2trTFlub2NVbjdKNUtOdDJFCjhTcTZ1N2RjRWNqZFBaUWhBZ01CQUFHalZqQlVNQTRHQTFVZER3RUIvd1FFQXdJRm9EQVRCZ05WSFNVRUREQUsKQmdnckJnRUZCUWNEQWpBTUJnTlZIUk1CQWY4RUFqQUFNQjhHQTFVZEl3UVlNQmFBRkxDUGF6aUkraVJZQ0FkZwp3SmJlQnlyUURmcFhNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUJjSUEyeE9rYXk4aTlLS3pRWUh5bmM5a2xyCmU4ZEN1aHpEUWhGbVhYK3pmeTk3dnRaSnlEWFp4TlN0MlRoS24xeE5KckNKVkxPWTAxV0FDU2JNZm5wRGdxVjgKUWZjRXVFUHdYSithMUV0ZmpsajZPTU41Q0RvYWJnRUllSkhxVkhrZkJzdE5icXFrTEppUThvZmh2VDc4TE1Bcwp2emJNTnd5L0ZXOVBVK0YvUGJkOEdEZkVPWHU3UFJzbmV5Q0JHVXhoNThOM2lmNFhnOXh6L3hwM2EvNE1hK28vClc2RklOUUNkNjVzcVFSWEx1U3VpRjlTTG9peUtYdmJUb1UxNU9YZTNOWFNWTjNOdUdRWmlZWDU4OTFyZGtpZFIKL1NuN3VTTzJDWXNPK3l4QWlqbUZhQmZIeWpNUlZKak51WnpSbStwTDdoODFmNFQ5dDJ1MWpQeVpPbGRiCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
|
|
||||||
client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcFFJQkFBS0NBUUVBMXBPMjJHbmx3ZGhZaHR5ZStYelc0WXRRUjNUTzVPanRnaWJtUWE4TmVFVmtlWDcyCjcwK0xnQlppb0JCRjh1SThmNG9LZlJFYUQwV3FqMmRRUHVPNWhoQ0xaKzBiVUozQ091Nml5QzRFQlBIeDFTemgKVWgxQlhyU2pacFpXT0FQbCtVTStuOUJyU3dJTjRkbHZKNUc1WkxJd2xBZU1Cd01uN1B0MXBuMjBLQmQ2M3ZlUwpDZE9nWEhKdmZObnRWRUNaWUZkNHAreVQ3MHdtNDdadzdrWHNWTTY1TnBma1JtZVJtL21YU3U0RS95blA3VnplCnVSMnVHeThPb1U4UnU2bno4cjhrYldwMUY2YmZTRWtjS1RySGMyOWJoUlVtZ3Mxa0FHQWlMTFlzcE9aeXQxRzYKZjFTaXBKQzJKNkhGSit5ZVNqYmRoUEVxdXJ1M1hCSEkzVDJVSVFJREFRQUJBb0lCQUFkSElhWldkU29DMEt5RwpVc2dMTEJpZ245dVo3U013enFRaG9LRllDQ0RDV0hBOGdRWHpPenZnRzlQcVZBMElaUWZvWW9jRkZrNnY5Mk1xCkhHWjlxbjhQRkVOZjlKTmlrOElVUjZZbGdCSm1NdzhldzJldkZxd0QwWFQ3SXJmVXFLOWJKZ1p5b2I1U0RBUW8KaFU5MkdhL1RmQTFSUjR1OHJOVXFDWlFEamN3OFFSQTQ4SDBzOTJkU252QkN1SmJrQ0VIYXVtQTYwQVlsNHNMOApzS0o0NytFc29WTWZhK1dCOCsybnRYMHFqQlhLM1Yvc1UyZWJTN0tYTGZhVkg5Z21oU01LMFd2dG9peDRRQzlEClViV3RaTCtoSGN6WWxmcjZaYWQxeEFsaHRXYnNDS3p3ZWdjOGxQbVBqSUJmMUU0bjRDQW1OMmJ5R00wUlRrT1QKWHdvdWdEOENnWUVBNGVISWQ0Zy9FV3k0dmx0NGxUN2FnOFJKaVhxMHBOQXVDdTRBL25tVWpnTVVVcFFPbmd6cAora3d6ZjFNSUJnVGR0ejlHNU1zNmd6UHgxaTlYblVOZ1hEUlRuWTRSZkZ3Q256NXVNcW5LZDd3Njhwem9acUxGCjJpSVZ6SmtGUmVoaTNVbXVLWnJmRnJKekYrOFArMGtmZmpjNjcvZkF1c2pnellFbWl5dGxmQnNDZ1lFQTh6QU0KdUh3VG1WMC9aRFlyUUYxLzA2R1ZqbzRtT2Z4S0loUVBxdDZleVNuWElySGlBbUVnTjFOWTc1UHRtMGVVdXF0bApDanU4dmp4aHd0UUF6NnUwNEptTldpTzdZL0ZiYlVKNnAxcHJYaURVWXYvUkRwK3FHa1I1SExsd0gvWENrYzIxCnpnREhJMlVXMzZCUk4wMFhydjdGWThxaHNqU0dlZU1Gei9pNXZITUNnWUVBcDhJSklZVmwyYW9XZHdIMlIxbWIKN2xxOGhzZEVIRmVrcW1kakE1d0dVWVpGOUtLVFRKeW90VVVjeGdaRG9qekE4ZFNqOFU1aVVZa2xwZjRaSXVvawpTYlp2RjBlcEF1Uk82amZ5bmR2dVRBalcrdEsvNDJJbWNULzVVcStlOC9HSVkzTFNUNEgvQjV0VzBVS3lhdDArCjczMVRYMTl3bXdpUHRQQ2pVSjdWUzFzQ2dZRUF3NWthSWlocCt5aXRIQVVWdEtkL2NOQytZZktqZkhBWGtHRmkKV0tUR1FqYU0rekxuL2RIdy80N2lNWkJoeEV0R3JQMitQd1RkUW9WK2ZCM1lxVEFLUTd3OW5RcXdaaXB5eHVaNQprTEdCT2l4ZHAyTHEyMEJBcU8vNkdjaHREc2UwdjJFZG9adXVrQ0YyekZjOSs2VGVMN3ByT1dCNXZjUFJoYWU3CnZSTHBFVkVDZ1lFQXAyREYyWlJFRlZmZ3ZGc2dtdHRwVjFMemd2Qi9Fb0lFMTFpMmFPelZGTzRLb3pabWpHVlAKaTB6T3VlaVBsZmNCYU5ZanRIbkxrRUpYeGVwYm9sSnlvQUdWV0o2b2grcFhON2I5TURJVUhVV0E3ZFArc1NlMwpvS29adS9TVGdJa1VQb2xwa2lJNjJrRXBFdXE4bjRYOFVhUWV5M1E4c1VWNHpYM0dSa3d2QkFZPQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo=
|
|
||||||
|
|
||||||
4
docker/kube.exemple.env
Normal file
4
docker/kube.exemple.env
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
KUBERNETES_SERVICE_HOST=192.168.47.20
|
||||||
|
KUBE_CA="LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJkekNDQVIyZ0F3SUJBZ0lCQURBS0JnZ3Foa2pPUFFRREFqQWpNU0V3SHdZRFZRUUREQmhyTTNNdGMyVnkKZG1WeUxXTmhRREUzTWpNeE1USXdNell3SGhjTk1qUXdPREE0TVRBeE16VTJXaGNOTXpRd09EQTJNVEF4TXpVMgpXakFqTVNFd0h3WURWUVFEREJock0zTXRjMlZ5ZG1WeUxXTmhRREUzTWpNeE1USXdNell3V1RBVEJnY3Foa2pPClBRSUJCZ2dxaGtqT1BRTUJCd05DQUFTVlk3ZHZhNEdYTVdkMy9jMlhLN3JLYjlnWXgyNSthaEE0NmkyNVBkSFAKRktQL2UxSVMyWVF0dzNYZW1TTUQxaStZdzJSaVppNUQrSVZUamNtNHdhcnFvMEl3UURBT0JnTlZIUThCQWY4RQpCQU1DQXFRd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBZEJnTlZIUTRFRmdRVWtlUVJpNFJiODduME5yRnZaWjZHClc2SU55NnN3Q2dZSUtvWkl6ajBFQXdJRFNBQXdSUUlnRXA5ck04WmdNclRZSHYxZjNzOW5DZXZZeWVVa3lZUk4KWjUzazdoaytJS1FDSVFDbk05TnVGKzlTakIzNDFacGZ5ays2NEpWdkpSM3BhcmVaejdMd2lhNm9kdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K"
|
||||||
|
KUBE_CERT="LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJrVENDQVRlZ0F3SUJBZ0lJWUxWNkFPQkdrU1F3Q2dZSUtvWkl6ajBFQXdJd0l6RWhNQjhHQTFVRUF3d1kKYXpOekxXTnNhV1Z1ZEMxallVQXhOekl6TVRFeU1ETTJNQjRYRFRJME1EZ3dPREV3TVRNMU5sb1hEVEkxTURndwpPREV3TVRNMU5sb3dNREVYTUJVR0ExVUVDaE1PYzNsemRHVnRPbTFoYzNSbGNuTXhGVEFUQmdOVkJBTVRESE41CmMzUmxiVHBoWkcxcGJqQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJGQ2Q1MFdPeWdlQ2syQzcKV2FrOWY4MVAvSkJieVRIajRWOXBsTEo0ck5HeHFtSjJOb2xROFYxdUx5RjBtOTQ2Nkc0RmRDQ2dqaXFVSk92Swp3NVRPNnd5alNEQkdNQTRHQTFVZER3RUIvd1FFQXdJRm9EQVRCZ05WSFNVRUREQUtCZ2dyQmdFRkJRY0RBakFmCkJnTlZIU01FR0RBV2dCVFJkOFI5cXVWK2pjeUVmL0ovT1hQSzMyS09XekFLQmdncWhrak9QUVFEQWdOSUFEQkYKQWlFQTArbThqTDBJVldvUTZ0dnB4cFo4NVlMalF1SmpwdXM0aDdnSXRxS3NmUVVDSUI2M2ZNdzFBMm5OVWU1TgpIUGZOcEQwSEtwcVN0Wnk4djIyVzliYlJUNklZCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJlRENDQVIyZ0F3SUJBZ0lCQURBS0JnZ3Foa2pPUFFRREFqQWpNU0V3SHdZRFZRUUREQmhyTTNNdFkyeHAKWlc1MExXTmhRREUzTWpNeE1USXdNell3SGhjTk1qUXdPREE0TVRBeE16VTJXaGNOTXpRd09EQTJNVEF4TXpVMgpXakFqTVNFd0h3WURWUVFEREJock0zTXRZMnhwWlc1MExXTmhRREUzTWpNeE1USXdNell3V1RBVEJnY3Foa2pPClBRSUJCZ2dxaGtqT1BRTUJCd05DQUFRc3hXWk9pbnIrcVp4TmFEQjVGMGsvTDF5cE01VHAxOFRaeU92ektJazQKRTFsZWVqUm9STW0zNmhPeVljbnN3d3JoNnhSUnBpMW5RdGhyMzg0S0Z6MlBvMEl3UURBT0JnTlZIUThCQWY4RQpCQU1DQXFRd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBZEJnTlZIUTRFRmdRVTBYZkVmYXJsZm8zTWhIL3lmemx6Cnl0OWlqbHN3Q2dZSUtvWkl6ajBFQXdJRFNRQXdSZ0loQUxJL2dNYnNMT3MvUUpJa3U2WHVpRVMwTEE2cEJHMXgKcnBlTnpGdlZOekZsQWlFQW1wdjBubjZqN3M0MVI0QzFNMEpSL0djNE53MHdldlFmZWdEVGF1R2p3cFk9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K"
|
||||||
|
KUBE_DATA="LS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tCk1IY0NBUUVFSU5ZS1BFb1dhd1NKUzJlRW5oWmlYMk5VZlY1ZlhKV2krSVNnV09TNFE5VTlvQW9HQ0NxR1NNNDkKQXdFSG9VUURRZ0FFVUozblJZN0tCNEtUWUx0WnFUMS96VS84a0Z2Sk1lUGhYMm1Vc25pczBiR3FZblkyaVZEeApYVzR2SVhTYjNqcm9iZ1YwSUtDT0twUWs2OHJEbE03ckRBPT0KLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQo="
|
||||||
@@ -1,21 +1,12 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
server=$(grep 'server:' ~/.kube/config | awk '{print $2}')
|
KUBERNETES_ENV_FILE=$(realpath ${1:-"./kube.exemple.env"})
|
||||||
|
|
||||||
host=$(ip -4 addr show $(ip route | awk '/default/ {print $5}') | awk '/inet / {print $2}' | cut -d/ -f1)
|
|
||||||
port=6443
|
|
||||||
ca=$(kubectl config view --raw --minify -o jsonpath='{.clusters[0].cluster.certificate-authority-data}')
|
|
||||||
cert=$(kubectl config view --raw --minify -o jsonpath='{.users[0].user.client-certificate-data}')
|
|
||||||
key=$(kubectl config view --raw --minify -o jsonpath='{.users[0].user.client-key-data}')
|
|
||||||
|
|
||||||
HOST=${2:-"http://localhost:8000"}
|
HOST=${2:-"http://localhost:8000"}
|
||||||
docker network create oc | true
|
docker network create oc | true
|
||||||
|
|
||||||
docker compose down
|
docker compose down
|
||||||
|
|
||||||
cd ./tools && docker compose -f ./docker-compose.dev.yml up --force-recreate -d
|
cd ./tools && docker compose -f ./docker-compose.dev.yml up --force-recreate -d
|
||||||
docker compose -f ./docker-compose.traefik.yml up --force-recreate -d && cd ..
|
docker compose -f ./docker-compose.traefik.yml up --force-recreate -d && cd ..
|
||||||
|
|
||||||
|
|
||||||
cd ./db && ./add.sh && cd ..
|
cd ./db && ./add.sh && cd ..
|
||||||
|
|
||||||
cd ../..
|
cd ../..
|
||||||
@@ -39,10 +30,7 @@ do
|
|||||||
docker kill $i | true
|
docker kill $i | true
|
||||||
docker rm $i | true
|
docker rm $i | true
|
||||||
cd ./$i
|
cd ./$i
|
||||||
docker build . -t $i --build-arg=HOST=$HOST --build-arg=KUBERNETES_SERVICE_HOST=$host \
|
cp $KUBERNETES_ENV_FILE ./env.env
|
||||||
--build-arg=KUBERNETES_SERVICE_PORT=$port --build-arg=KUBE_CA=$ca --build-arg=KUBE_CERT=$cert \
|
docker build . -t $i --build-arg=HOST=$HOST && docker compose up -d
|
||||||
--build-arg=KUBE_DATA=$key && docker compose up -d
|
|
||||||
cd ..
|
cd ..
|
||||||
done
|
done
|
||||||
|
|
||||||
cd ./oc-deploy/docker/tools && docker compose -f ./docker-compose.dev.yml up hydra-client --force-recreate -d
|
|
||||||
|
|||||||
@@ -1,12 +1,5 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
server=$(grep 'server:' ~/.kube/config | awk '{print $2}')
|
export KUBERNETES_ENV_FILE=$(realpath ${KUBERNETES_ENV_FILE=:-"./kube.exemple.env"})
|
||||||
|
|
||||||
host=$(ip -4 addr show $(ip route | awk '/default/ {print $5}') | awk '/inet / {print $2}' | cut -d/ -f1)
|
|
||||||
port=6443
|
|
||||||
ca=$(kubectl config view --raw --minify -o jsonpath='{.clusters[0].cluster.certificate-authority-data}')
|
|
||||||
cert=$(kubectl config view --raw --minify -o jsonpath='{.users[0].user.client-certificate-data}')
|
|
||||||
key=$(kubectl config view --raw --minify -o jsonpath='{.users[0].user.client-key-data}')
|
|
||||||
|
|
||||||
export HOST=${HOST:-"http://localhost:8000"}
|
export HOST=${HOST:-"http://localhost:8000"}
|
||||||
docker network create oc | true
|
docker network create oc | true
|
||||||
|
|
||||||
@@ -14,7 +7,6 @@ docker compose down
|
|||||||
cd ./tools && docker compose -f ./docker-compose.dev.yml up --force-recreate -d
|
cd ./tools && docker compose -f ./docker-compose.dev.yml up --force-recreate -d
|
||||||
docker compose -f ./docker-compose.traefik.yml up --force-recreate -d && cd ..
|
docker compose -f ./docker-compose.traefik.yml up --force-recreate -d && cd ..
|
||||||
|
|
||||||
|
|
||||||
cd ../..
|
cd ../..
|
||||||
|
|
||||||
REPOS=(
|
REPOS=(
|
||||||
@@ -36,15 +28,7 @@ do
|
|||||||
docker kill $i | true
|
docker kill $i | true
|
||||||
docker rm $i | true
|
docker rm $i | true
|
||||||
cd ./$i
|
cd ./$i
|
||||||
cat > ./env.env <<EOF
|
cp $KUBERNETES_ENV_FILE ./env.env
|
||||||
KUBERNETES_SERVICE_HOST=$hostdocker
|
|
||||||
KUBERNETES_SERVICE_PORT=$port
|
|
||||||
KUBE_CA="$ca"
|
|
||||||
KUBE_CERT="$cert"
|
|
||||||
KUBE_DATA="$key"
|
|
||||||
EOF
|
|
||||||
make run-docker
|
make run-docker
|
||||||
cd ..
|
cd ..
|
||||||
done
|
done
|
||||||
|
|
||||||
cd ./oc-deploy/docker/tools && docker compose -f ./docker-compose.dev.yml up hydra-client --force-recreate -d
|
|
||||||
@@ -90,33 +90,6 @@ services:
|
|||||||
deploy:
|
deploy:
|
||||||
restart_policy:
|
restart_policy:
|
||||||
condition: on-failure
|
condition: on-failure
|
||||||
ldap:
|
|
||||||
image: pgarrett/ldap-alpine
|
|
||||||
container_name: ldap
|
|
||||||
volumes:
|
|
||||||
- "./ldap.ldif:/ldif/ldap.ldif"
|
|
||||||
networks:
|
|
||||||
- oc
|
|
||||||
ports:
|
|
||||||
- "390:389"
|
|
||||||
deploy:
|
|
||||||
restart_policy:
|
|
||||||
condition: on-failure
|
|
||||||
keto:
|
|
||||||
image: oryd/keto:v0.7.0-alpha.1-sqlite
|
|
||||||
ports:
|
|
||||||
- "4466:4466"
|
|
||||||
- "4467:4467"
|
|
||||||
command: serve -c /home/ory/keto.yml
|
|
||||||
restart: on-failure
|
|
||||||
volumes:
|
|
||||||
- type: bind
|
|
||||||
source: .
|
|
||||||
target: /home/ory
|
|
||||||
container_name: keto
|
|
||||||
networks:
|
|
||||||
- oc
|
|
||||||
|
|
||||||
hydra-client:
|
hydra-client:
|
||||||
image: oryd/hydra:v2.2.0
|
image: oryd/hydra:v2.2.0
|
||||||
container_name: hydra-client
|
container_name: hydra-client
|
||||||
@@ -154,6 +127,32 @@ services:
|
|||||||
interval: 10s
|
interval: 10s
|
||||||
timeout: 10s
|
timeout: 10s
|
||||||
retries: 10
|
retries: 10
|
||||||
|
ldap:
|
||||||
|
image: pgarrett/ldap-alpine
|
||||||
|
container_name: ldap
|
||||||
|
volumes:
|
||||||
|
- "./ldap.ldif:/ldif/ldap.ldif"
|
||||||
|
networks:
|
||||||
|
- oc
|
||||||
|
ports:
|
||||||
|
- "390:389"
|
||||||
|
deploy:
|
||||||
|
restart_policy:
|
||||||
|
condition: on-failure
|
||||||
|
keto:
|
||||||
|
image: oryd/keto:v0.7.0-alpha.1-sqlite
|
||||||
|
ports:
|
||||||
|
- "4466:4466"
|
||||||
|
- "4467:4467"
|
||||||
|
command: serve -c /home/ory/keto.yml
|
||||||
|
restart: on-failure
|
||||||
|
volumes:
|
||||||
|
- type: bind
|
||||||
|
source: .
|
||||||
|
target: /home/ory
|
||||||
|
container_name: keto
|
||||||
|
networks:
|
||||||
|
- oc
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
oc-data:
|
oc-data:
|
||||||
|
|||||||
9
env.env
9
env.env
@@ -1,5 +1,4 @@
|
|||||||
KUBERNETES_SERVICE_HOST=127.0.0.1
|
KUBERNETES_SERVICE_HOST=192.168.1.169
|
||||||
KUBERNETES_SERVICE_PORT=6443
|
KUBE_CA="LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJkekNDQVIyZ0F3SUJBZ0lCQURBS0JnZ3Foa2pPUFFRREFqQWpNU0V3SHdZRFZRUUREQmhyTTNNdGMyVnkKZG1WeUxXTmhRREUzTWpNeE1USXdNell3SGhjTk1qUXdPREE0TVRBeE16VTJXaGNOTXpRd09EQTJNVEF4TXpVMgpXakFqTVNFd0h3WURWUVFEREJock0zTXRjMlZ5ZG1WeUxXTmhRREUzTWpNeE1USXdNell3V1RBVEJnY3Foa2pPClBRSUJCZ2dxaGtqT1BRTUJCd05DQUFTVlk3ZHZhNEdYTVdkMy9jMlhLN3JLYjlnWXgyNSthaEE0NmkyNVBkSFAKRktQL2UxSVMyWVF0dzNYZW1TTUQxaStZdzJSaVppNUQrSVZUamNtNHdhcnFvMEl3UURBT0JnTlZIUThCQWY4RQpCQU1DQXFRd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBZEJnTlZIUTRFRmdRVWtlUVJpNFJiODduME5yRnZaWjZHClc2SU55NnN3Q2dZSUtvWkl6ajBFQXdJRFNBQXdSUUlnRXA5ck04WmdNclRZSHYxZjNzOW5DZXZZeWVVa3lZUk4KWjUzazdoaytJS1FDSVFDbk05TnVGKzlTakIzNDFacGZ5ays2NEpWdkpSM3BhcmVaejdMd2lhNm9kdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K"
|
||||||
KUBE_CA=""
|
KUBE_CERT="LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJrVENDQVRlZ0F3SUJBZ0lJWUxWNkFPQkdrU1F3Q2dZSUtvWkl6ajBFQXdJd0l6RWhNQjhHQTFVRUF3d1kKYXpOekxXTnNhV1Z1ZEMxallVQXhOekl6TVRFeU1ETTJNQjRYRFRJME1EZ3dPREV3TVRNMU5sb1hEVEkxTURndwpPREV3TVRNMU5sb3dNREVYTUJVR0ExVUVDaE1PYzNsemRHVnRPbTFoYzNSbGNuTXhGVEFUQmdOVkJBTVRESE41CmMzUmxiVHBoWkcxcGJqQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJGQ2Q1MFdPeWdlQ2syQzcKV2FrOWY4MVAvSkJieVRIajRWOXBsTEo0ck5HeHFtSjJOb2xROFYxdUx5RjBtOTQ2Nkc0RmRDQ2dqaXFVSk92Swp3NVRPNnd5alNEQkdNQTRHQTFVZER3RUIvd1FFQXdJRm9EQVRCZ05WSFNVRUREQUtCZ2dyQmdFRkJRY0RBakFmCkJnTlZIU01FR0RBV2dCVFJkOFI5cXVWK2pjeUVmL0ovT1hQSzMyS09XekFLQmdncWhrak9QUVFEQWdOSUFEQkYKQWlFQTArbThqTDBJVldvUTZ0dnB4cFo4NVlMalF1SmpwdXM0aDdnSXRxS3NmUVVDSUI2M2ZNdzFBMm5OVWU1TgpIUGZOcEQwSEtwcVN0Wnk4djIyVzliYlJUNklZCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJlRENDQVIyZ0F3SUJBZ0lCQURBS0JnZ3Foa2pPUFFRREFqQWpNU0V3SHdZRFZRUUREQmhyTTNNdFkyeHAKWlc1MExXTmhRREUzTWpNeE1USXdNell3SGhjTk1qUXdPREE0TVRBeE16VTJXaGNOTXpRd09EQTJNVEF4TXpVMgpXakFqTVNFd0h3WURWUVFEREJock0zTXRZMnhwWlc1MExXTmhRREUzTWpNeE1USXdNell3V1RBVEJnY3Foa2pPClBRSUJCZ2dxaGtqT1BRTUJCd05DQUFRc3hXWk9pbnIrcVp4TmFEQjVGMGsvTDF5cE01VHAxOFRaeU92ektJazQKRTFsZWVqUm9STW0zNmhPeVljbnN3d3JoNnhSUnBpMW5RdGhyMzg0S0Z6MlBvMEl3UURBT0JnTlZIUThCQWY4RQpCQU1DQXFRd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBZEJnTlZIUTRFRmdRVTBYZkVmYXJsZm8zTWhIL3lmemx6Cnl0OWlqbHN3Q2dZSUtvWkl6ajBFQXdJRFNRQXdSZ0loQUxJL2dNYnNMT3MvUUpJa3U2WHVpRVMwTEE2cEJHMXgKcnBlTnpGdlZOekZsQWlFQW1wdjBubjZqN3M0MVI0QzFNMEpSL0djNE53MHdldlFmZWdEVGF1R2p3cFk9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K"
|
||||||
KUBE_CERT=""
|
KUBE_DATA="LS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tCk1IY0NBUUVFSU5ZS1BFb1dhd1NKUzJlRW5oWmlYMk5VZlY1ZlhKV2krSVNnV09TNFE5VTlvQW9HQ0NxR1NNNDkKQXdFSG9VUURRZ0FFVUozblJZN0tCNEtUWUx0WnFUMS96VS84a0Z2Sk1lUGhYMm1Vc25pczBiR3FZblkyaVZEeApYVzR2SVhTYjNqcm9iZ1YwSUtDT0twUWs2OHJEbE03ckRBPT0KLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQo="
|
||||||
KUBE_DATA=""
|
|
||||||
@@ -7,11 +7,6 @@
|
|||||||
|
|
||||||
Feel free to modify/create a new opencloud/dev-values.yaml. Provided setup should work out of the box, but is not suitable for production usage.
|
Feel free to modify/create a new opencloud/dev-values.yaml. Provided setup should work out of the box, but is not suitable for production usage.
|
||||||
|
|
||||||
## k8s deployment
|
|
||||||
|
|
||||||
- Pull oc-k8s file put it in /usr/local/bin
|
|
||||||
- oc-k8s create values <namespace>
|
|
||||||
|
|
||||||
## Hostname settings
|
## Hostname settings
|
||||||
|
|
||||||
Edit your /etc/hosts file, and add following line:
|
Edit your /etc/hosts file, and add following line:
|
||||||
|
|||||||
@@ -1,2 +0,0 @@
|
|||||||
HOST=demo.cluster-1.com
|
|
||||||
CLUSTER_NAME=cluster-1
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
HOST=demo.cluster-2.com
|
|
||||||
CLUSTER_NAME=cluster-2
|
|
||||||
@@ -1,91 +0,0 @@
|
|||||||
[{
|
|
||||||
"_id":"7b989e97-c3e7-49d2-a3a7-f959da4870b5",
|
|
||||||
"abstractinstanciatedresource":{
|
|
||||||
"abstractresource":{
|
|
||||||
"type":"compute",
|
|
||||||
"abstractobject":{
|
|
||||||
"id":"7b989e97-c3e7-49d2-a3a7-f959da4870b5",
|
|
||||||
"name":"Mundi datacenter",
|
|
||||||
"is_draft":false,
|
|
||||||
"creator_id":"c0cece97-7730-4c2a-8c20-a30944564106",
|
|
||||||
"creation_date":"2021-09-30T14:00:00.000Z",
|
|
||||||
"update_date":"2021-09-30T14:00:00.000Z",
|
|
||||||
"updater_id":"c0cece97-7730-4c2a-8c20-a30944564106",
|
|
||||||
"access_mode":1
|
|
||||||
},
|
|
||||||
"logo":"https://cloud.o-forge.io/core/deperecated-oc-catalog/raw/branch/main/scripts/local_imgs/Mundi datacenter.png",
|
|
||||||
"description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
|
|
||||||
"short_description":"Mundi Opencloud Instance",
|
|
||||||
"owners":[{"name":"IRT Saint Exupery"}]},
|
|
||||||
"instances":[{
|
|
||||||
"resourceinstance":{
|
|
||||||
"abstractobject":{
|
|
||||||
"id":"7b989e97-c3e7-49d2-a3a7-f959da4870b5",
|
|
||||||
"name":"Mundi datacenter Toulouse"},
|
|
||||||
"location":{"latitude":50.62925,"longitude":3.057256},
|
|
||||||
"country":250,
|
|
||||||
"partnerships":[
|
|
||||||
|
|
||||||
]},
|
|
||||||
"security_level":"public",
|
|
||||||
"annual_co2_emissions":1000,
|
|
||||||
"power_sources":["solaire","charbon"],
|
|
||||||
"cpus":{
|
|
||||||
"Intel Core i7-14700KF":{
|
|
||||||
"model":"Intel Core i7-14700KF","frequency":3.6,"cores":16,"architecture":"x86"
|
|
||||||
}},
|
|
||||||
"gpus":{
|
|
||||||
"RTX 3090 FE":{"cores":{"cuda":10496,"tensor":328},"model":"RTX 3090 FE","memory":24000}
|
|
||||||
},
|
|
||||||
"nodes":[
|
|
||||||
{"name":"default","quantity":1,"ram":{"size":16384},"cpus":{"Intel Core i7-14700KF":1},"gpus":{"RTX 3090 FE":8}},{"name":"special","quantity":2,"ram":{"size":16384},"cpus":{"Intel Core i7-14700KF":10},"gpus":{"RTX 3090 FE":10}}
|
|
||||||
]
|
|
||||||
}]
|
|
||||||
},
|
|
||||||
"architecture":"x86",
|
|
||||||
"infrastructure":0
|
|
||||||
},{
|
|
||||||
"_id":"0bb77206-371a-428e-8ae3-ff11575071e2",
|
|
||||||
"abstractinstanciatedresource":{
|
|
||||||
"abstractresource":{
|
|
||||||
"type":"compute",
|
|
||||||
"abstractobject":{
|
|
||||||
"id":"0bb77206-371a-428e-8ae3-ff11575071e2",
|
|
||||||
"name":"VM Target 2",
|
|
||||||
"is_draft":false,
|
|
||||||
"creator_id":"6a3fc74d-8c06-4dbb-ad11-d5c53562775b",
|
|
||||||
"creation_date":"2021-09-30T14:00:00.000Z",
|
|
||||||
"update_date":"2021-09-30T14:00:00.000Z",
|
|
||||||
"updater_id":"c0cece97-7730-4c2a-8c20-a30944564106",
|
|
||||||
"access_mode":1
|
|
||||||
},
|
|
||||||
"logo":"https://cloud.o-forge.io/core/deprecated-oc-catalog/raw/branch/main/scripts/local_imgs/vm_logo.png",
|
|
||||||
"description":"IP Address 172.16.0.181",
|
|
||||||
"short_description":"VM created by pierre to test admiralty",
|
|
||||||
"owners":[{"name":"IRT Saint Exupery"}]},
|
|
||||||
"instances":[
|
|
||||||
{"resourceinstance":{
|
|
||||||
"abstractobject":{"id":"0bb77206-371a-428e-8ae3-ff11575071e2","name":"VM Proxmox Pierre 2"},
|
|
||||||
"location":{"latitude":50.62925,"longitude":3.057256},"country":250,"partnerships":[
|
|
||||||
|
|
||||||
]},
|
|
||||||
"security_level":"private",
|
|
||||||
"annual_co2_emissions":1000,
|
|
||||||
"power_sources":["Larmes d'alternant"],
|
|
||||||
"cpus":{
|
|
||||||
"Intel Core Ultra 9 285K":{
|
|
||||||
"model":"Intel Core Ultra 9 285K",
|
|
||||||
"frequency":3.6,
|
|
||||||
"cores":32,
|
|
||||||
"architecture":"x86"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nodes":[{"name":"default","quantity":1,"ram":{"size":16384},"cpus":{"Intel Core Ultra 9 285K":1}}]
|
|
||||||
}
|
|
||||||
]},
|
|
||||||
"architecture":"x86","infrastructure":0},
|
|
||||||
{"_id":"7fdccb9c-7090-40a5-bacd-7435bc56c90d","abstractinstanciatedresource":{"abstractresource":{"type":"compute","abstractobject":{"id":"7fdccb9c-7090-40a5-bacd-7435bc56c90d","name":"Meteo France datacenter","is_draft":false,"creator_id":"c0cece97-7730-4c2a-8c20-a30944564106","creation_date":"2021-09-30T14:00:00.000Z","update_date":"2021-09-30T14:00:00.000Z","updater_id":"c0cece97-7730-4c2a-8c20-a30944564106","access_mode":1},"logo":"https://cloud.o-forge.io/core/deperecated-oc-catalog/raw/branch/main/scripts/local_imgs/Meteo France datacenter.png","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.","short_description":"Meteo France Opencloud Instance","owners":[{"name":"Meteo France"}]},"instances":[{"resourceinstance":{"abstractobject":{"id":"7fdccb9c-7090-40a5-bacd-7435bc56c90d","name":"Meteo France datacenter Lille"},"location":{"latitude":50.62925,"longitude":3.057256},"country":250,
|
|
||||||
"partnerships":[]},"security_level":"sec num cloud","annual_co2_emissions":1000,"power_sources":["solaire","charbon"],"cpus":{"Intel Core i7-14700KF":{"model":"Intel Core i7-14700KF","frequency":3.6,"cores":16,"architecture":"x86"}},"gpus":{"RTX 3090 FE":{"cores":{"cuda":10496,"tensor":328},"model":"RTX 3090 FE","memory":24000}},"nodes":[{"name":"default","quantity":1,"ram":{"size":32786},"cpus":{"Intel Core i7-14700KF":1},"gpus":{"RTX 3090 FE":8}}]}]},"architecture":"x86","infrastructure":0},{"_id":"e22b8d96-d799-4f36-b921-982fc3c6952c","abstractinstanciatedresource":{"abstractresource":{"type":"compute","abstractobject":{"id":"e22b8d96-d799-4f36-b921-982fc3c6952c","name":"CNES datacenter","is_draft":false,"creator_id":"c0cece97-7730-4c2a-8c20-a30944564106","creation_date":"2021-09-30T14:00:00.000Z","update_date":"2021-09-30T14:00:00.000Z","updater_id":"c0cece97-7730-4c2a-8c20-a30944564106","access_mode":1},"logo":"https://cloud.o-forge.io/core/deperecated-oc-catalog/raw/branch/main/scripts/local_imgs/CNES datacenter.png","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.","short_description":"Mundi Opencloud Instance","owners":[{"name":"IRT Saint Exupery"}]},"instances":[{"resourceinstance":{"abstractobject":{"id":"e22b8d96-d799-4f36-b921-982fc3c6952c","name":"CNES datacenter Toulouse"},"location":{"latitude":50.62925,"longitude":3.057256},"country":250,
|
|
||||||
"partnerships":[]},"security_level":"private","annual_co2_emissions":1000,"power_sources":["solaire","charbon"],"cpus":{"Intel Core Ultra 9 285K":{"model":"Intel Core Ultra 9 285K","frequency":3.6,"cores":32,"architecture":"x86"}},"gpus":{"RTX 3090 FE":{"cores":{"cuda":10496,"tensor":328},"model":"RTX 3090 FE","memory":24000}},"nodes":[{"name":"default","quantity":1,"ram":{"size":16384},"cpus":{"Intel Core Ultra 9 285K":1}}]}]},"architecture":"x86","infrastructure":0},{"_id":"979776c3-9ae7-4e02-9138-7b30b25f22cc","abstractinstanciatedresource":{"abstractresource":{"type":"compute","abstractobject":{"id":"979776c3-9ae7-4e02-9138-7b30b25f22cc","name":"VM Target 1","is_draft":false,"creator_id":"c0cece97-7730-4c2a-8c20-a30944564106","creation_date":"2021-09-30T14:00:00.000Z","update_date":"2021-09-30T14:00:00.000Z","updater_id":"c0cece97-7730-4c2a-8c20-a30944564106","access_mode":1},"logo":"https://cloud.o-forge.io/core/deprecated-oc-catalog/raw/branch/main/scripts/local_imgs/vm_logo.png","description":"IP Address 172.16.0.181","short_description":"VM created by pierre to test admiralty","owners":[{"name":"IRT Saint Exupery"}]},"instances":[{"resourceinstance":{"abstractobject":{"id":"979776c3-9ae7-4e02-9138-7b30b25f22cc","name":"VM Proxmox Pierre 1"},"location":{"latitude":50.62925,"longitude":3.057256},"country":250,
|
|
||||||
"partnerships":[]},"security_level":"private","annual_co2_emissions":1000,"power_sources":["Larmes d'alternant"],"cpus":{"Intel Core Ultra 9 285K":{"model":"Intel Core Ultra 9 285K","frequency":3.6,"cores":32,"architecture":"x86"}},"nodes":[{"name":"default","quantity":1,"ram":{"size":16384},"cpus":{"Intel Core Ultra 9 285K":1}}]}]},"architecture":"x86","infrastructure":0},{"_id":"4222318f-660c-47ce-9d6b-67a4691a354e","abstractinstanciatedresource":{"abstractresource":{"type":"compute","abstractobject":{"id":"4222318f-660c-47ce-9d6b-67a4691a354e","name":"VM Target 3","is_draft":false,"creator_id":"c0cece97-7730-4c2a-8c20-a30944564106","creation_date":"2021-09-30T14:00:00.000Z","update_date":"2021-09-30T14:00:00.000Z","updater_id":"c0cece97-7730-4c2a-8c20-a30944564106","access_mode":1},"logo":"https://cloud.o-forge.io/core/deprecated-oc-catalog/raw/branch/main/scripts/local_imgs/vm_logo.png","description":"IP Address 172.16.0.181","short_description":"VM created by pierre to test admiralty","owners":[{"name":"IRT Saint Exupery"}]},"instances":[{"resourceinstance":{"abstractobject":{"id":"4222318f-660c-47ce-9d6b-67a4691a354e","name":"VM Proxmox Pierre 3"},"location":{"latitude":50.62925,"longitude":3.057256},"country":250,
|
|
||||||
"partnerships":[]},"security_level":"private","annual_co2_emissions":1000,"power_sources":["Larmes d'alternant"],"cpus":{"Intel Core Ultra 9 285K":{"model":"Intel Core Ultra 9 285K","frequency":3.6,"cores":32,"architecture":"x86"}},"nodes":[{"name":"default","quantity":1,"ram":{"size":16384},"cpus":{"Intel Core Ultra 9 285K":1}}]}]},"architecture":"x86","infrastructure":0}]
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
[{"_id":"292fb4c7-1ca8-4423-a969-d533b2ef3734","abstractinstanciatedresource":{"abstractresource":{"type":"data","abstractobject":{"id":"292fb4c7-1ca8-4423-a969-d533b2ef3734","name":"Mundi Sentienl 3 SRAL Images","is_draft":false,"creator_id":"c0cece97-7730-4c2a-8c20-a30944564106","creation_date":"2021-09-30T14:00:00.000Z","update_date":"2021-09-30T14:00:00.000Z","updater_id":"c0cece97-7730-4c2a-8c20-a30944564106","access_mode":1},"logo":"https://cloud.o-forge.io/core/deperecated-oc-catalog/raw/branch/main/scripts/local_imgs/Mundi Sentienl 3 SRAL Images.png","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.","short_description":"Mundi Sentinels 3 SAR Altiemter image","owners":[{"name":"Mundi Web"}],"source":"http://www.google.com"},"instances":[{"resourceinstance":{"abstractobject":{"id":"7fdccb9c-7090-40a5-bacd-7435bc56c90d","name":"Mundi Sentienl 3 SRAL Images Paris"},"location":{"latitude":50.62925,"longitude":3.057256},"country":250,
|
|
||||||
"partnerships":[]}}]},"quality":"low","open_data":false,"static":true,"size":0.59,"example":"tutut"},{"_id":"d573dc63-4de0-4e29-8a4e-c15cbb3aed06","abstractinstanciatedresource":{"abstractresource":{"type":"data","abstractobject":{"id":"d573dc63-4de0-4e29-8a4e-c15cbb3aed06","name":"Red Car","is_draft":false,"creator_id":"c0cece97-7730-4c2a-8c20-a30944564106","creation_date":"2021-09-30T14:00:00.000Z","update_date":"2021-09-30T14:00:00.000Z","updater_id":"c0cece97-7730-4c2a-8c20-a30944564106","access_mode":1},"logo":"https://images.wondershare.com/repairit/article/guide-on-jpeg-repair-online-01.png","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.","short_description":"A casual red car","owners":[{"name":"Red Car"}]},"instances":[{"source":"http://plates.openalpr.com/h786poj.jpg","resourceinstance":{"env":[{"attr":"source","readonly":true}],"abstractobject":{"id":"7fdccb9c-7090-40a5-bacd-7435bc56c90d","name":"Red Car"},"location":{"latitude":50.62925,"longitude":3.057256},"country":250,
|
|
||||||
"partnerships":[]}}]},"quality":"low","open_data":false,"static":true,"size":0.59,"example":"tutut"},{"_id":"811d4b6d-0170-400f-b4a5-9e1597dc7620","abstractinstanciatedresource":{"abstractresource":{"type":"data","abstractobject":{"id":"811d4b6d-0170-400f-b4a5-9e1597dc7620","name":"Meteo-France forecasts","is_draft":false,"creator_id":"c0cece97-7730-4c2a-8c20-a30944564106","creation_date":"2021-09-30T14:00:00.000Z","update_date":"2021-09-30T14:00:00.000Z","updater_id":"c0cece97-7730-4c2a-8c20-a30944564106","access_mode":1},"logo":"https://cloud.o-forge.io/core/deperecated-oc-catalog/raw/branch/main/scripts/local_imgs/Meteo-France forecasts.png","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.","short_description":"Meteo France weather forecasts","owners":[{"name":"Meteo France"}],"source":"http://www.google.com"},"instances":[{"resourceinstance":{"abstractobject":{"id":"7fdccb9c-7090-40a5-bacd-7435bc56c90d","name":"Meteo-France forecasts Paris"},"location":{"latitude":50.62925,"longitude":3.057256},"country":250,
|
|
||||||
"partnerships":[]}}]},"quality":"medium","open_data":true,"static":true,"size":0.59,"example":"tutut"},{"_id":"fdfd135c-b0c1-4c34-89d5-0189b4b2bf2d","abstractinstanciatedresource":{"abstractresource":{"type":"data","abstractobject":{"id":"fdfd135c-b0c1-4c34-89d5-0189b4b2bf2d","name":"Mundi Sentienl 3 OLCI Images","is_draft":false,"creator_id":"c0cece97-7730-4c2a-8c20-a30944564106","creation_date":"2021-09-30T14:00:00.000Z","update_date":"2021-09-30T14:00:00.000Z","updater_id":"c0cece97-7730-4c2a-8c20-a30944564106","access_mode":1},"logo":"https://cloud.o-forge.io/core/deperecated-oc-catalog/raw/branch/main/scripts/local_imgs/Mundi Sentienl 3 OLCI Images.png","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.","short_description":"Mundi Sentinels 3 Ocean and land color Altiemter image","owners":[{"name":"Mundi Web"}],"source":"http://www.google.com"},"instances":[{"resourceinstance":{"abstractobject":{"id":"7fdccb9c-7090-40a5-bacd-7435bc56c90d","name":"Mundi Sentienl 3 OLCI Images Paris"},"location":{"latitude":50.62925,"longitude":3.057256},"country":250,
|
|
||||||
"partnerships":[]}}]},"quality":"low","open_data":true,"static":true,"size":0.59,"example":"tutut"}]
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
[{
|
|
||||||
"_id":"c0cece97-7730-4c2a-8c20-a30944564106",
|
|
||||||
"failed_execution":null,
|
|
||||||
"abstractobject":{
|
|
||||||
"update_date":{"$date":"2025-03-27T09:13:13.230Z"},"access_mode":0,
|
|
||||||
"id":"c0cece97-7730-4c2a-8c20-a30944564106",
|
|
||||||
"name":"local","is_draft":false,
|
|
||||||
"creation_date":{"$date":"2025-03-27T09:13:13.230Z"}},
|
|
||||||
"api_url":"http://192.168.1.1",
|
|
||||||
"nats_address": "nats://nats:4222",
|
|
||||||
"stream_address":"/ip4/192.168.1.1/tcp/4001/p2p/QmXkKz9kE7pY3Yw4m6x9FhJ3JY5P2QJpX9C7Yz2T4H8WvA",
|
|
||||||
"wallet_address":"my-wallet",
|
|
||||||
"public_key":"MCowBQYDK2VwAyEAZ2nLJBL8a5opfa8nFeVj0SZToW8pl4+zgcSUkeZFRO4=",
|
|
||||||
"state":1,
|
|
||||||
"peer_id": "QmXkKz9kE7pY3Yw4m6x9FhJ3JY5P2QJpX9C7Yz2T4H8WvA",
|
|
||||||
"relation": 1
|
|
||||||
}, {
|
|
||||||
"_id":"6a3fc74d-8c06-4dbb-ad11-d5c53562775b",
|
|
||||||
"failed_execution":null,
|
|
||||||
"abstractobject":{
|
|
||||||
"update_date":{"$date":"2025-03-27T09:13:13.230Z"},"access_mode":0,
|
|
||||||
"id":"6a3fc74d-8c06-4dbb-ad11-d5c53562775b",
|
|
||||||
"name":"local","is_draft":false,
|
|
||||||
"creation_date":{"$date":"2025-03-27T09:13:13.230Z"}},
|
|
||||||
"api_url":"http://192.168.1.2",
|
|
||||||
"nats_address": "nats://nats:4222",
|
|
||||||
"stream_address":"/ip4/192.168.1.1/tcp/4002/p2p/QmTzQ1NwFz9bYH7Kp8Zs4XyJQk3E6C5R9H1m2A8L7V",
|
|
||||||
"peer_id": "QmTzQ1NwFz9bYH7Kp8Zs4XyJQk3E6C5R9H1m2A8L7V",
|
|
||||||
"wallet_address":"my-wallet",
|
|
||||||
"public_key":"MCowBQYDK2VwAyEAZ2nLJBL8a5opfa8nFeVj0SZToW8pl4+zgcSUkeZFRO4=",
|
|
||||||
"state":2,
|
|
||||||
"relation": 1
|
|
||||||
}]
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
[{"_id":"523c03fe-e2db-475c-93c6-82c5bc85ec3d","abstractinstanciatedresource":{"abstractresource":{"type":"processing","abstractobject":{"id":"523c03fe-e2db-475c-93c6-82c5bc85ec3d","name":"SAR High points","is_draft":false,"creator_id":"c0cece97-7730-4c2a-8c20-a30944564106","creation_date":"2021-09-30T14:00:00.000Z","update_date":"2021-09-30T14:00:00.000Z","updater_id":"c0cece97-7730-4c2a-8c20-a30944564106","access_mode":1},"logo":"https://cloud.o-forge.io/core/deperecated-oc-catalog/raw/branch/main/scripts/local_imgs/SAR High points.png","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.","short_description":"SAR Altimeter High points extraction Software","owners":[{"name":"IRT"}]},"instances":[{"resourceinstance":{"abstractobject":{"id":"7fdccb9c-7090-40a5-bacd-7435bc56c90d","name":"SAR High points Lille"},"location":{"latitude":50.62925,"longitude":3.057256},"country":250,
|
|
||||||
"partnerships":[]}}]},"license":"GPLv2","infrastructure":0,"usage":{"storage":0.3,"scaling_model":"2"}},{"_id":"f463b2fe-0522-4382-b2ec-c82b97b9c8b0","abstractinstanciatedresource":{"abstractresource":{"type":"processing","abstractobject":{"id":"f463b2fe-0522-4382-b2ec-c82b97b9c8b0","name":"Environment builder","is_draft":false,"creator_id":"c0cece97-7730-4c2a-8c20-a30944564106","creation_date":"2021-09-30T14:00:00.000Z","update_date":"2021-09-30T14:00:00.000Z","updater_id":"c0cece97-7730-4c2a-8c20-a30944564106","access_mode":1},"logo":"https://cloud.o-forge.io/core/deperecated-oc-catalog/raw/branch/main/scripts/local_imgs/Environment builder.png","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.","short_description":"build simulated environment from real environmental data and fire mitigation rules","owners":[{"name":"Gob.fr"}]},"instances":[{"resourceinstance":{"abstractobject":{"id":"7fdccb9c-7090-40a5-bacd-7435bc56c90d","name":"Environment builder Lille"},"location":{"latitude":50.62925,"longitude":3.057256},"country":250,
|
|
||||||
"partnerships":[]}}]},"license":"GPLv3","infrastructure":0,"usage":{"storage":0.3,"scaling_model":"2"}},{"_id":"f3c8346b-3536-4c99-8b11-1be9c01697de","abstractinstanciatedresource":{"abstractresource":{"type":"processing","abstractobject":{"id":"f3c8346b-3536-4c99-8b11-1be9c01697de","name":"imagemagic","is_draft":false,"creator_id":"c0cece97-7730-4c2a-8c20-a30944564106","creation_date":"2021-09-30T14:00:00.000Z","update_date":"2021-09-30T14:00:00.000Z","updater_id":"c0cece97-7730-4c2a-8c20-a30944564106","access_mode":1},"logo":"https://cloud.o-forge.io/core/deperecated-oc-catalog/raw/branch/main/scripts/local_imgs/imagemagic-logo.png","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.","short_description":"ImageMagick® is a free, open-source software suite, used for editing and manipulating digital images.","owners":[{"name":"IRT"}]},"instances":[{"access":{"container":{"image":"dpokidov/imagemagick:7.1.0-62-2"}},"resourceinstance":{"abstractobject":{"id":"7fdccb9c-7090-40a5-bacd-7435bc56c90d","name":"imagemagic Lille"},"location":{"latitude":50.62925,"longitude":3.057256},"country":250,
|
|
||||||
"partnerships":[]}}]},"license":"GPLv2","infrastructure":0,"usage":{"storage":0.3,"scaling_model":"2"}},{"_id":"1b762b65-479c-45e6-a5de-fe67fd9e0f1b","abstractinstanciatedresource":{"abstractresource":{"type":"processing","abstractobject":{"id":"1b762b65-479c-45e6-a5de-fe67fd9e0f1b","name":"Long term fire risk mitigation planner","is_draft":false,"creator_id":"c0cece97-7730-4c2a-8c20-a30944564106","creation_date":"2021-09-30T14:00:00.000Z","update_date":"2021-09-30T14:00:00.000Z","updater_id":"c0cece97-7730-4c2a-8c20-a30944564106","access_mode":1},"logo":"https://cloud.o-forge.io/core/deperecated-oc-catalog/raw/branch/main/scripts/local_imgs/Long term fire risk mitigation planner.png","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.","short_description":"Long term fire risk mitigation planner : provides list of actions to be performed to mitigate fire propagation","owners":[{"name":"Gob.fr"}]},"instances":[{"processinginstance":{"abstractobject":{"id":"7fdccb9c-7090-40a5-bacd-7435bc56c90d","name":"Long term fire risk mitigation planner Lille"},"location":{"latitude":50.62925,"longitude":3.057256},"country":250,
|
|
||||||
"partnerships":[]}}]},"license":"GPLv2","infrastructure":0,"usage":{"storage":0.3,"scaling_model":"2"}},{"_id":"e518d7a4-426a-4900-94e5-300767b1bb31","abstractinstanciatedresource":{"abstractresource":{"type":"processing","abstractobject":{"id":"e518d7a4-426a-4900-94e5-300767b1bb31","name":"Mosquito server","is_draft":false,"creator_id":"c0cece97-7730-4c2a-8c20-a30944564106","creation_date":"2021-09-30T14:00:00.000Z","update_date":"2021-09-30T14:00:00.000Z","updater_id":"c0cece97-7730-4c2a-8c20-a30944564106","access_mode":1},"logo":"https://cloud.o-forge.io/core/deperecated-oc-catalog/raw/branch/main/scripts/local_imgs/mosquitto-logo.png","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.","short_description":"open source message broker that implements the MQTT protocol versions 5.0, 3.1.1 and 3.1.","owners":[{"name":"IRT"}]},"instances":[{"access":{"container":{"image":"eclipse-mosquitto:2.0.15"}},"resourceinstance":{"abstractobject":{"id":"7fdccb9c-7090-40a5-bacd-7435bc56c90d","name":"Mosquito server Lille"},"location":{"latitude":50.62925,"longitude":3.057256},"country":250,
|
|
||||||
"partnerships":[]}}]},"license":"GPLv2","infrastructure":0,"usage":{"storage":0.3,"scaling_model":"2"}},{"_id":"0d565c87-50ae-4a73-843d-f8b2d4047772","abstractinstanciatedresource":{"abstractresource":{"type":"processing","abstractobject":{"id":"0d565c87-50ae-4a73-843d-f8b2d4047772","name":"CURL","is_draft":false,"creator_id":"c0cece97-7730-4c2a-8c20-a30944564106","creation_date":"2021-09-30T14:00:00.000Z","update_date":"2021-09-30T14:00:00.000Z","updater_id":"c0cece97-7730-4c2a-8c20-a30944564106","access_mode":1},"logo":"https://cloud.o-forge.io/core/deperecated-oc-catalog/raw/branch/main/scripts/local_imgs/curl-logo.png","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.","short_description":"Transfer or retrieve information from or to a server","owners":[{"name":"IRT"}]},"instances":[{"access":{"container":{"image":"curlimages/curl:7.88.1"}},"resourceinstance":{"abstractobject":{"id":"7fdccb9c-7090-40a5-bacd-7435bc56c90d","name":"CURL Lille"},"location":{"latitude":50.62925,"longitude":3.057256},"country":250,
|
|
||||||
"partnerships":[]}}]},"license":"GPLv2","infrastructure":0,"usage":{"storage":0.3,"scaling_model":"2"}},{"_id":"7cf24357-b272-4a4b-b2d8-479887e1c937","abstractinstanciatedresource":{"abstractresource":{"type":"processing","abstractobject":{"id":"7cf24357-b272-4a4b-b2d8-479887e1c937","name":"Fire propagation simulator","is_draft":false,"creator_id":"c0cece97-7730-4c2a-8c20-a30944564106","creation_date":"2021-09-30T14:00:00.000Z","update_date":"2021-09-30T14:00:00.000Z","updater_id":"c0cece97-7730-4c2a-8c20-a30944564106","access_mode":1},"logo":"https://cloud.o-forge.io/core/deperecated-oc-catalog/raw/branch/main/scripts/local_imgs/Fire propagation simulator.png","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.","short_description":"Fire propagation simulator","owners":[{"name":"Gob.fr"}]},"instances":[{"resourceinstance":{"abstractobject":{"id":"7fdccb9c-7090-40a5-bacd-7435bc56c90d","name":"Fire propagation simulator Lille"},"location":{"latitude":50.62925,"longitude":3.057256},"country":250,
|
|
||||||
"partnerships":[]}}]},"license":"GPLv3","infrastructure":0,"usage":{"storage":3,"scaling_model":"2"}},{"_id":"3041990c-5c5d-40c4-8329-c1df1b812dc3","abstractinstanciatedresource":{"abstractresource":{"type":"processing","abstractobject":{"id":"3041990c-5c5d-40c4-8329-c1df1b812dc3","name":"alpr","is_draft":false,"creator_id":"c0cece97-7730-4c2a-8c20-a30944564106","creation_date":"2021-09-30T14:00:00.000Z","update_date":"2021-09-30T14:00:00.000Z","updater_id":"c0cece97-7730-4c2a-8c20-a30944564106","access_mode":1},"logo":"https://cloud.o-forge.io/core/deperecated-oc-catalog/raw/branch/main/scripts/local_imgs/alpr-logo.png","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.","short_description":"Open source Automatic License Plate Recognition library.","owners":[{"name":"IRT"}]},"instances":[{"access":{"container":{"image":"openalpr/openalpr"}},"resourceinstance":{"abstractobject":{"id":"7fdccb9c-7090-40a5-bacd-7435bc56c90d","name":"alpr Lille"},"location":{"latitude":50.62925,"longitude":3.057256},"country":250,
|
|
||||||
"partnerships":[]}}]},"license":"GPLv3","infrastructure":0,"usage":{"storage":0.3,"scaling_model":"2"}},{"_id":"2ce0323f-a85d-4b8b-a783-5280f48d634a","abstractinstanciatedresource":{"abstractresource":{"type":"processing","abstractobject":{"id":"2ce0323f-a85d-4b8b-a783-5280f48d634a","name":"alpine","is_draft":false,"creator_id":"c0cece97-7730-4c2a-8c20-a30944564106","creation_date":"2021-09-30T14:00:00.000Z","update_date":"2021-09-30T14:00:00.000Z","updater_id":"c0cece97-7730-4c2a-8c20-a30944564106","access_mode":1},"logo":"https://cloud.o-forge.io/core/deperecated-oc-catalog/raw/branch/main/scripts/local_imgs/alpine-logo.png","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.","short_description":"A minimal Docker image","owners":[{"name":"IRT"}]},"instances":[{"access":{"container":{"image":"alpine:3.7"}},"resourceinstance":{"abstractobject":{"id":"7fdccb9c-7090-40a5-bacd-7435bc56c90d","name":"alpine Lille"},"location":{"latitude":50.62925,"longitude":3.057256},"country":250,
|
|
||||||
"partnerships":[]}}]},"license":"GPLv2","infrastructure":0,"usage":{"storage":0.3,"scaling_model":"2"}},{"_id":"8a78cecc-8222-40ed-9303-04e24d136f49","abstractinstanciatedresource":{"abstractresource":{"type":"processing","abstractobject":{"id":"8a78cecc-8222-40ed-9303-04e24d136f49","name":"Flammable vegetation slicer","is_draft":false,"creator_id":"c0cece97-7730-4c2a-8c20-a30944564106","creation_date":"2021-09-30T14:00:00.000Z","update_date":"2021-09-30T14:00:00.000Z","updater_id":"c0cece97-7730-4c2a-8c20-a30944564106","access_mode":1},"logo":"https://cloud.o-forge.io/core/deperecated-oc-catalog/raw/branch/main/scripts/local_imgs/Flammable vegetation slicer.png","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.","short_description":"Analyze land cover and define optimum vegetation slices to prevent fire propagation","owners":[{"name":"Gob.fr"}]},"instances":[{"resourceinstance":{"abstractobject":{"id":"7fdccb9c-7090-40a5-bacd-7435bc56c90d","name":"Flammable vegetation slicer Lille"},"location":{"latitude":50.62925,"longitude":3.057256},"country":250,
|
|
||||||
"partnerships":[]}}]},"license":"Copyright","infrastructure":0,"usage":{"storage":0.3,"scaling_model":"2"}}]
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
[{"_id":"04bc70b5-8d7b-44e6-9015-fadfa0fb102d","abstractinstanciatedresource":{"abstractresource":{"type":"storage","abstractobject":{"id":"04bc70b5-8d7b-44e6-9015-fadfa0fb102d","name":"IRT risk database","is_draft":false,"creator_id":"c0cece97-7730-4c2a-8c20-a30944564106","creation_date":"2021-09-30T14:00:00.000Z","update_date":"2021-09-30T14:00:00.000Z","updater_id":"c0cece97-7730-4c2a-8c20-a30944564106","access_mode":1},"logo":"https://cloud.o-forge.io/core/deperecated-oc-catalog/raw/branch/main/scripts/local_imgs/IRT risk database.png","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.","short_description":"S3 compliant IRT file storage","owners":[{"name":"IRT"}]},"instances":[{"env":[{"attr":"source","readonly":true}],"resourceinstance":{"abstractobject":{"id":"7fdccb9c-7090-40a5-bacd-7435bc56c90d","name":"IRT local file storage Marseille"},"location":{"latitude":50.62925,"longitude":3.057256},"country":250,
|
|
||||||
"partnerships":[]},"source":"/mnt/vol","local":false,"security_level":"public","size":50,"size_type":3,"redundancy":"RAID5","throughput":"r:200,w:150"}]},"storage_type":5,"acronym":"DC_myDC"},{"_id":"e726020a-b68e-4abc-ab36-c3640ea3f557","abstractinstanciatedresource":{"abstractresource":{"type":"storage","abstractobject":{"id":"e726020a-b68e-4abc-ab36-c3640ea3f557","name":"IRT local file storage","is_draft":false,"creator_id":"c0cece97-7730-4c2a-8c20-a30944564106","creation_date":"2021-09-30T14:00:00.000Z","update_date":"2021-09-30T14:00:00.000Z","updater_id":"c0cece97-7730-4c2a-8c20-a30944564106","access_mode":1},"logo":"https://cloud.o-forge.io/core/deperecated-oc-catalog/raw/branch/main/scripts/local_imgs/IRT local file storage.png","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.","short_description":"S3 compliant IRT file storage","owners":[{"name":"IRT"}]},"instances":[{"resourceinstance":{"env":[{"attr":"source","readonly":true}],"abstractobject":{"id":"7fdccb9c-7090-40a5-bacd-7435bc56c90d","name":"IRT local file storage Marseille"},"location":{"latitude":50.62925,"longitude":3.057256},"country":250,
|
|
||||||
"partnerships":[]},"source":"/mnt/vol","local":true,"security_level":"public","size":500,"size_type":0,"encryption":true,"redundancy":"RAID5S","throughput":"r:300,w:350"}]},"storage_type":5,"acronym":"DC_myDC"}]
|
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,5 +0,0 @@
|
|||||||
[{"_id":"292fb4c7-1ca8-4423-a969-d533b2ef3734","abstractinstanciatedresource":{"abstractresource":{"type":"data","abstractobject":{"id":"292fb4c7-1ca8-4423-a969-d533b2ef3734","name":"Mundi Sentienl 3 SRAL Images","is_draft":false,"creator_id":"c0cece97-7730-4c2a-8c20-a30944564106","creation_date":"2021-09-30T14:00:00.000Z","update_date":"2021-09-30T14:00:00.000Z","updater_id":"c0cece97-7730-4c2a-8c20-a30944564106","access_mode":1},"logo":"https://cloud.o-forge.io/core/deperecated-oc-catalog/raw/branch/main/scripts/local_imgs/Mundi Sentienl 3 SRAL Images.png","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.","short_description":"Mundi Sentinels 3 SAR Altiemter image","owners":[{"name":"Mundi Web"}],"source":"http://www.google.com"},"instances":[{"resourceinstance":{"abstractobject":{"id":"7fdccb9c-7090-40a5-bacd-7435bc56c90d","name":"Mundi Sentienl 3 SRAL Images Paris"},"location":{"latitude":50.62925,"longitude":3.057256},"country":250,
|
|
||||||
"partnerships":[]}}]},"quality":"low","open_data":false,"static":true,"size":0.59,"example":"tutut"},{"_id":"d573dc63-4de0-4e29-8a4e-c15cbb3aed06","abstractinstanciatedresource":{"abstractresource":{"type":"data","abstractobject":{"id":"d573dc63-4de0-4e29-8a4e-c15cbb3aed06","name":"Red Car","is_draft":false,"creator_id":"c0cece97-7730-4c2a-8c20-a30944564106","creation_date":"2021-09-30T14:00:00.000Z","update_date":"2021-09-30T14:00:00.000Z","updater_id":"c0cece97-7730-4c2a-8c20-a30944564106","access_mode":1},"logo":"https://images.wondershare.com/repairit/article/guide-on-jpeg-repair-online-01.png","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.","short_description":"A casual red car","owners":[{"name":"Red Car"}]},"instances":[{"source":"http://plates.openalpr.com/h786poj.jpg","resourceinstance":{"env":[{"attr":"source","readonly":true}],"abstractobject":{"id":"7fdccb9c-7090-40a5-bacd-7435bc56c90d","name":"Red Car"},"location":{"latitude":50.62925,"longitude":3.057256},"country":250,
|
|
||||||
"partnerships":[]}}]},"quality":"low","open_data":false,"static":true,"size":0.59,"example":"tutut"},{"_id":"811d4b6d-0170-400f-b4a5-9e1597dc7620","abstractinstanciatedresource":{"abstractresource":{"type":"data","abstractobject":{"id":"811d4b6d-0170-400f-b4a5-9e1597dc7620","name":"Meteo-France forecasts","is_draft":false,"creator_id":"c0cece97-7730-4c2a-8c20-a30944564106","creation_date":"2021-09-30T14:00:00.000Z","update_date":"2021-09-30T14:00:00.000Z","updater_id":"c0cece97-7730-4c2a-8c20-a30944564106","access_mode":1},"logo":"https://cloud.o-forge.io/core/deperecated-oc-catalog/raw/branch/main/scripts/local_imgs/Meteo-France forecasts.png","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.","short_description":"Meteo France weather forecasts","owners":[{"name":"Meteo France"}],"source":"http://www.google.com"},"instances":[{"resourceinstance":{"abstractobject":{"id":"7fdccb9c-7090-40a5-bacd-7435bc56c90d","name":"Meteo-France forecasts Paris"},"location":{"latitude":50.62925,"longitude":3.057256},"country":250,
|
|
||||||
"partnerships":[]}}]},"quality":"medium","open_data":true,"static":true,"size":0.59,"example":"tutut"},{"_id":"fdfd135c-b0c1-4c34-89d5-0189b4b2bf2d","abstractinstanciatedresource":{"abstractresource":{"type":"data","abstractobject":{"id":"fdfd135c-b0c1-4c34-89d5-0189b4b2bf2d","name":"Mundi Sentienl 3 OLCI Images","is_draft":false,"creator_id":"c0cece97-7730-4c2a-8c20-a30944564106","creation_date":"2021-09-30T14:00:00.000Z","update_date":"2021-09-30T14:00:00.000Z","updater_id":"c0cece97-7730-4c2a-8c20-a30944564106","access_mode":1},"logo":"https://cloud.o-forge.io/core/deperecated-oc-catalog/raw/branch/main/scripts/local_imgs/Mundi Sentienl 3 OLCI Images.png","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.","short_description":"Mundi Sentinels 3 Ocean and land color Altiemter image","owners":[{"name":"Mundi Web"}],"source":"http://www.google.com"},"instances":[{"resourceinstance":{"abstractobject":{"id":"7fdccb9c-7090-40a5-bacd-7435bc56c90d","name":"Mundi Sentienl 3 OLCI Images Paris"},"location":{"latitude":50.62925,"longitude":3.057256},"country":250,
|
|
||||||
"partnerships":[]}}]},"quality":"low","open_data":true,"static":true,"size":0.59,"example":"tutut"}]
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
[{
|
|
||||||
"_id":"c0cece97-7730-4c2a-8c20-a30944564106",
|
|
||||||
"failed_execution":null,
|
|
||||||
"abstractobject":{
|
|
||||||
"update_date":{"$date":"2025-03-27T09:13:13.230Z"},"access_mode":0,
|
|
||||||
"id":"c0cece97-7730-4c2a-8c20-a30944564106",
|
|
||||||
"name":"local","is_draft":false,
|
|
||||||
"creation_date":{"$date":"2025-03-27T09:13:13.230Z"}},
|
|
||||||
"url":"http://192.168.1.1",
|
|
||||||
"wallet_address":"my-wallet",
|
|
||||||
"public_key":"-----BEGIN RSA PUBLIC KEY-----\nMIICCgKCAgEAw2pdG6wMtuLcP0+k1LFvIb0DQo/oHW2uNJaEJK74plXqp4ztz2dR\nb+RQHFLeLuqk4i/zc3b4K3fKPXSlwnVPJCwzPrnyT8jYGOZVlWlETiV9xeJhu6s/\nBh6g1PWz75XjjwV50iv/CEiLNBT23f/3J44wrQzygqNQCiQSALdxWLAEl4l5kHSa\n9oMyV70/Uql94/ayMARZsHgp9ZvqQKbkZPw6yzVMfCBxQozlNlo315OHevudhnhp\nDRjN5I7zWmqYt6rbXJJC7Y3Izdvzn7QI88RqjSRST5I/7Kz3ndCqrOnI+OQUE5NT\nREyQebphvQfTDTKlRPXkdyktdK2DH28Zj6ZF3yjQvN35Q4zhOzlq77dO5IhhopI7\nct8dZH1T1nYkvdyCA/EVMtQsASmBOitH0Y0ACoXQK5Kb6nm/TcM/9ZSJUNiEMuy5\ngBZ3YKE9oa4cpTpPXwcA+S/cU7HPNnQAsvD3iJi8GTW9uJs84pn4/WhpQqmXd4rv\nhKWECCN3fHy01fUs/U0PaSj2jDY/kQVeXoikNMzPUjdZd9m816TIBh3v3aVXCH/0\niTHHAxctvDgMRb2fpvRJ/wwnYjFG9RpamVFDMvC9NffuYzWAA9IRIY4cqgerfHrV\nZ2HHiPTDDvDAIsvImXZc/h7mXN6m3RCQ4Qywy993wd9gUdgg/qnynHcCAwEAAQ==\n-----END RSA PUBLIC KEY-----\n",
|
|
||||||
"state":2,
|
|
||||||
"relation": 1
|
|
||||||
}, {
|
|
||||||
"_id":"6a3fc74d-8c06-4dbb-ad11-d5c53562775b",
|
|
||||||
"failed_execution":null,
|
|
||||||
"abstractobject":{
|
|
||||||
"update_date":{"$date":"2025-03-27T09:13:13.230Z"},"access_mode":0,
|
|
||||||
"id":"6a3fc74d-8c06-4dbb-ad11-d5c53562775b",
|
|
||||||
"name":"local","is_draft":false,
|
|
||||||
"creation_date":{"$date":"2025-03-27T09:13:13.230Z"}},
|
|
||||||
"url":"http://192.168.1.2",
|
|
||||||
"wallet_address":"my-wallet",
|
|
||||||
"public_key":"-----BEGIN RSA PUBLIC KEY-----\nMIICCgKCAgEAw2pdG6wMtuLcP0+k1LFvIb0DQo/oHW2uNJaEJK74plXqp4ztz2dR\nb+RQHFLeLuqk4i/zc3b4K3fKPXSlwnVPJCwzPrnyT8jYGOZVlWlETiV9xeJhu6s/\nBh6g1PWz75XjjwV50iv/CEiLNBT23f/3J44wrQzygqNQCiQSALdxWLAEl4l5kHSa\n9oMyV70/Uql94/ayMARZsHgp9ZvqQKbkZPw6yzVMfCBxQozlNlo315OHevudhnhp\nDRjN5I7zWmqYt6rbXJJC7Y3Izdvzn7QI88RqjSRST5I/7Kz3ndCqrOnI+OQUE5NT\nREyQebphvQfTDTKlRPXkdyktdK2DH28Zj6ZF3yjQvN35Q4zhOzlq77dO5IhhopI7\nct8dZH1T1nYkvdyCA/EVMtQsASmBOitH0Y0ACoXQK5Kb6nm/TcM/9ZSJUNiEMuy5\ngBZ3YKE9oa4cpTpPXwcA+S/cU7HPNnQAsvD3iJi8GTW9uJs84pn4/WhpQqmXd4rv\nhKWECCN3fHy01fUs/U0PaSj2jDY/kQVeXoikNMzPUjdZd9m816TIBh3v3aVXCH/0\niTHHAxctvDgMRb2fpvRJ/wwnYjFG9RpamVFDMvC9NffuYzWAA9IRIY4cqgerfHrV\nZ2HHiPTDDvDAIsvImXZc/h7mXN6m3RCQ4Qywy993wd9gUdgg/qnynHcCAwEAAQ==\n-----END RSA PUBLIC KEY-----\n",
|
|
||||||
"state":1,
|
|
||||||
"relation": 1
|
|
||||||
}]
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
[{"_id":"523c03fe-e2db-475c-93c6-82c5bc85ec3d","abstractinstanciatedresource":{"abstractresource":{"type":"processing","abstractobject":{"id":"523c03fe-e2db-475c-93c6-82c5bc85ec3d","name":"SAR High points","is_draft":false,"creator_id":"c0cece97-7730-4c2a-8c20-a30944564106","creation_date":"2021-09-30T14:00:00.000Z","update_date":"2021-09-30T14:00:00.000Z","updater_id":"c0cece97-7730-4c2a-8c20-a30944564106","access_mode":1},"logo":"https://cloud.o-forge.io/core/deperecated-oc-catalog/raw/branch/main/scripts/local_imgs/SAR High points.png","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.","short_description":"SAR Altimeter High points extraction Software","owners":[{"name":"IRT"}]},"instances":[{"resourceinstance":{"abstractobject":{"id":"7fdccb9c-7090-40a5-bacd-7435bc56c90d","name":"SAR High points Lille"},"location":{"latitude":50.62925,"longitude":3.057256},"country":250,
|
|
||||||
"partnerships":[]}}]},"license":"GPLv2","infrastructure":0,"usage":{"storage":0.3,"scaling_model":"2"}},{"_id":"f463b2fe-0522-4382-b2ec-c82b97b9c8b0","abstractinstanciatedresource":{"abstractresource":{"type":"processing","abstractobject":{"id":"f463b2fe-0522-4382-b2ec-c82b97b9c8b0","name":"Environment builder","is_draft":false,"creator_id":"c0cece97-7730-4c2a-8c20-a30944564106","creation_date":"2021-09-30T14:00:00.000Z","update_date":"2021-09-30T14:00:00.000Z","updater_id":"c0cece97-7730-4c2a-8c20-a30944564106","access_mode":1},"logo":"https://cloud.o-forge.io/core/deperecated-oc-catalog/raw/branch/main/scripts/local_imgs/Environment builder.png","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.","short_description":"build simulated environment from real environmental data and fire mitigation rules","owners":[{"name":"Gob.fr"}]},"instances":[{"resourceinstance":{"abstractobject":{"id":"7fdccb9c-7090-40a5-bacd-7435bc56c90d","name":"Environment builder Lille"},"location":{"latitude":50.62925,"longitude":3.057256},"country":250,
|
|
||||||
"partnerships":[]}}]},"license":"GPLv3","infrastructure":0,"usage":{"storage":0.3,"scaling_model":"2"}},{"_id":"f3c8346b-3536-4c99-8b11-1be9c01697de","abstractinstanciatedresource":{"abstractresource":{"type":"processing","abstractobject":{"id":"f3c8346b-3536-4c99-8b11-1be9c01697de","name":"imagemagic","is_draft":false,"creator_id":"c0cece97-7730-4c2a-8c20-a30944564106","creation_date":"2021-09-30T14:00:00.000Z","update_date":"2021-09-30T14:00:00.000Z","updater_id":"c0cece97-7730-4c2a-8c20-a30944564106","access_mode":1},"logo":"https://cloud.o-forge.io/core/deperecated-oc-catalog/raw/branch/main/scripts/local_imgs/imagemagic-logo.png","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.","short_description":"ImageMagick® is a free, open-source software suite, used for editing and manipulating digital images.","owners":[{"name":"IRT"}]},"instances":[{"access":{"container":{"image":"dpokidov/imagemagick:7.1.0-62-2"}},"resourceinstance":{"abstractobject":{"id":"7fdccb9c-7090-40a5-bacd-7435bc56c90d","name":"imagemagic Lille"},"location":{"latitude":50.62925,"longitude":3.057256},"country":250,
|
|
||||||
"partnerships":[]}}]},"license":"GPLv2","infrastructure":0,"usage":{"storage":0.3,"scaling_model":"2"}},{"_id":"1b762b65-479c-45e6-a5de-fe67fd9e0f1b","abstractinstanciatedresource":{"abstractresource":{"type":"processing","abstractobject":{"id":"1b762b65-479c-45e6-a5de-fe67fd9e0f1b","name":"Long term fire risk mitigation planner","is_draft":false,"creator_id":"c0cece97-7730-4c2a-8c20-a30944564106","creation_date":"2021-09-30T14:00:00.000Z","update_date":"2021-09-30T14:00:00.000Z","updater_id":"c0cece97-7730-4c2a-8c20-a30944564106","access_mode":1},"logo":"https://cloud.o-forge.io/core/deperecated-oc-catalog/raw/branch/main/scripts/local_imgs/Long term fire risk mitigation planner.png","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.","short_description":"Long term fire risk mitigation planner : provides list of actions to be performed to mitigate fire propagation","owners":[{"name":"Gob.fr"}]},"instances":[{"processinginstance":{"abstractobject":{"id":"7fdccb9c-7090-40a5-bacd-7435bc56c90d","name":"Long term fire risk mitigation planner Lille"},"location":{"latitude":50.62925,"longitude":3.057256},"country":250,
|
|
||||||
"partnerships":[]}}]},"license":"GPLv2","infrastructure":0,"usage":{"storage":0.3,"scaling_model":"2"}},{"_id":"e518d7a4-426a-4900-94e5-300767b1bb31","abstractinstanciatedresource":{"abstractresource":{"type":"processing","abstractobject":{"id":"e518d7a4-426a-4900-94e5-300767b1bb31","name":"Mosquito server","is_draft":false,"creator_id":"c0cece97-7730-4c2a-8c20-a30944564106","creation_date":"2021-09-30T14:00:00.000Z","update_date":"2021-09-30T14:00:00.000Z","updater_id":"c0cece97-7730-4c2a-8c20-a30944564106","access_mode":1},"logo":"https://cloud.o-forge.io/core/deperecated-oc-catalog/raw/branch/main/scripts/local_imgs/mosquitto-logo.png","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.","short_description":"open source message broker that implements the MQTT protocol versions 5.0, 3.1.1 and 3.1.","owners":[{"name":"IRT"}]},"instances":[{"access":{"container":{"image":"eclipse-mosquitto:2.0.15"}},"resourceinstance":{"abstractobject":{"id":"7fdccb9c-7090-40a5-bacd-7435bc56c90d","name":"Mosquito server Lille"},"location":{"latitude":50.62925,"longitude":3.057256},"country":250,
|
|
||||||
"partnerships":[]}}]},"license":"GPLv2","infrastructure":0,"usage":{"storage":0.3,"scaling_model":"2"}},{"_id":"0d565c87-50ae-4a73-843d-f8b2d4047772","abstractinstanciatedresource":{"abstractresource":{"type":"processing","abstractobject":{"id":"0d565c87-50ae-4a73-843d-f8b2d4047772","name":"CURL","is_draft":false,"creator_id":"c0cece97-7730-4c2a-8c20-a30944564106","creation_date":"2021-09-30T14:00:00.000Z","update_date":"2021-09-30T14:00:00.000Z","updater_id":"c0cece97-7730-4c2a-8c20-a30944564106","access_mode":1},"logo":"https://cloud.o-forge.io/core/deperecated-oc-catalog/raw/branch/main/scripts/local_imgs/curl-logo.png","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.","short_description":"Transfer or retrieve information from or to a server","owners":[{"name":"IRT"}]},"instances":[{"access":{"container":{"image":"curlimages/curl:7.88.1"}},"resourceinstance":{"abstractobject":{"id":"7fdccb9c-7090-40a5-bacd-7435bc56c90d","name":"CURL Lille"},"location":{"latitude":50.62925,"longitude":3.057256},"country":250,
|
|
||||||
"partnerships":[]}}]},"license":"GPLv2","infrastructure":0,"usage":{"storage":0.3,"scaling_model":"2"}},{"_id":"7cf24357-b272-4a4b-b2d8-479887e1c937","abstractinstanciatedresource":{"abstractresource":{"type":"processing","abstractobject":{"id":"7cf24357-b272-4a4b-b2d8-479887e1c937","name":"Fire propagation simulator","is_draft":false,"creator_id":"c0cece97-7730-4c2a-8c20-a30944564106","creation_date":"2021-09-30T14:00:00.000Z","update_date":"2021-09-30T14:00:00.000Z","updater_id":"c0cece97-7730-4c2a-8c20-a30944564106","access_mode":1},"logo":"https://cloud.o-forge.io/core/deperecated-oc-catalog/raw/branch/main/scripts/local_imgs/Fire propagation simulator.png","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.","short_description":"Fire propagation simulator","owners":[{"name":"Gob.fr"}]},"instances":[{"resourceinstance":{"abstractobject":{"id":"7fdccb9c-7090-40a5-bacd-7435bc56c90d","name":"Fire propagation simulator Lille"},"location":{"latitude":50.62925,"longitude":3.057256},"country":250,
|
|
||||||
"partnerships":[]}}]},"license":"GPLv3","infrastructure":0,"usage":{"storage":3,"scaling_model":"2"}},{"_id":"3041990c-5c5d-40c4-8329-c1df1b812dc3","abstractinstanciatedresource":{"abstractresource":{"type":"processing","abstractobject":{"id":"3041990c-5c5d-40c4-8329-c1df1b812dc3","name":"alpr","is_draft":false,"creator_id":"c0cece97-7730-4c2a-8c20-a30944564106","creation_date":"2021-09-30T14:00:00.000Z","update_date":"2021-09-30T14:00:00.000Z","updater_id":"c0cece97-7730-4c2a-8c20-a30944564106","access_mode":1},"logo":"https://cloud.o-forge.io/core/deperecated-oc-catalog/raw/branch/main/scripts/local_imgs/alpr-logo.png","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.","short_description":"Open source Automatic License Plate Recognition library.","owners":[{"name":"IRT"}]},"instances":[{"access":{"container":{"image":"openalpr/openalpr"}},"resourceinstance":{"abstractobject":{"id":"7fdccb9c-7090-40a5-bacd-7435bc56c90d","name":"alpr Lille"},"location":{"latitude":50.62925,"longitude":3.057256},"country":250,
|
|
||||||
"partnerships":[]}}]},"license":"GPLv3","infrastructure":0,"usage":{"storage":0.3,"scaling_model":"2"}},{"_id":"2ce0323f-a85d-4b8b-a783-5280f48d634a","abstractinstanciatedresource":{"abstractresource":{"type":"processing","abstractobject":{"id":"2ce0323f-a85d-4b8b-a783-5280f48d634a","name":"alpine","is_draft":false,"creator_id":"c0cece97-7730-4c2a-8c20-a30944564106","creation_date":"2021-09-30T14:00:00.000Z","update_date":"2021-09-30T14:00:00.000Z","updater_id":"c0cece97-7730-4c2a-8c20-a30944564106","access_mode":1},"logo":"https://cloud.o-forge.io/core/deperecated-oc-catalog/raw/branch/main/scripts/local_imgs/alpine-logo.png","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.","short_description":"A minimal Docker image","owners":[{"name":"IRT"}]},"instances":[{"access":{"container":{"image":"alpine:3.7"}},"resourceinstance":{"abstractobject":{"id":"7fdccb9c-7090-40a5-bacd-7435bc56c90d","name":"alpine Lille"},"location":{"latitude":50.62925,"longitude":3.057256},"country":250,
|
|
||||||
"partnerships":[]}}]},"license":"GPLv2","infrastructure":0,"usage":{"storage":0.3,"scaling_model":"2"}},{"_id":"8a78cecc-8222-40ed-9303-04e24d136f49","abstractinstanciatedresource":{"abstractresource":{"type":"processing","abstractobject":{"id":"8a78cecc-8222-40ed-9303-04e24d136f49","name":"Flammable vegetation slicer","is_draft":false,"creator_id":"c0cece97-7730-4c2a-8c20-a30944564106","creation_date":"2021-09-30T14:00:00.000Z","update_date":"2021-09-30T14:00:00.000Z","updater_id":"c0cece97-7730-4c2a-8c20-a30944564106","access_mode":1},"logo":"https://cloud.o-forge.io/core/deperecated-oc-catalog/raw/branch/main/scripts/local_imgs/Flammable vegetation slicer.png","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.","short_description":"Analyze land cover and define optimum vegetation slices to prevent fire propagation","owners":[{"name":"Gob.fr"}]},"instances":[{"resourceinstance":{"abstractobject":{"id":"7fdccb9c-7090-40a5-bacd-7435bc56c90d","name":"Flammable vegetation slicer Lille"},"location":{"latitude":50.62925,"longitude":3.057256},"country":250,
|
|
||||||
"partnerships":[]}}]},"license":"Copyright","infrastructure":0,"usage":{"storage":0.3,"scaling_model":"2"}}]
|
|
||||||
File diff suppressed because one or more lines are too long
@@ -1,22 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
mode=${2:-demo}
|
|
||||||
branch=${3:-main}
|
|
||||||
path=${4:-.}
|
|
||||||
|
|
||||||
port=${5:-80}
|
|
||||||
portTLS=${6:-443}
|
|
||||||
|
|
||||||
start=1
|
|
||||||
end=${1:-1}
|
|
||||||
|
|
||||||
cp $HOME/.kube/config $HOME/.kube/config_past
|
|
||||||
|
|
||||||
for ((i=start; i<=end; i++)); do
|
|
||||||
sudo cp /etc/rancher/k3s/k3s.yaml $HOME/.kube/config
|
|
||||||
|
|
||||||
./start.sh $mode $branch "cluster-$i" $path $port $portTLS
|
|
||||||
|
|
||||||
sudo cp $HOME/.kube/config $HOME/.kube/configCluster$i
|
|
||||||
sudo chown $(id -u):$(id -g) $HOME/.kube/configCluster$i
|
|
||||||
export KUBECONFIG="$HOME/.kube/configCluster$i"
|
|
||||||
done
|
|
||||||
23
k8s/start.sh
23
k8s/start.sh
@@ -1,10 +1,8 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
mode=${1:-dev}
|
mode=${1:-dev}
|
||||||
branch=${2:-main}
|
branch=${2:-main}
|
||||||
clustername=${3:-opencloud}
|
|
||||||
path=${4:-.}
|
cd ../..
|
||||||
port=${5:-80}
|
|
||||||
portTLS=${6:-443}
|
|
||||||
|
|
||||||
if [ ! -d "oc-k8s" ]; then
|
if [ ! -d "oc-k8s" ]; then
|
||||||
echo "Cloning repository: $repo_name"
|
echo "Cloning repository: $repo_name"
|
||||||
@@ -14,17 +12,10 @@ if [ ! -d "oc-k8s" ]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cp -rf ./datas/$clustername ./oc-k8s/opencloud/charts/mongodb/start_files
|
|
||||||
|
|
||||||
echo "Repository 'oc-k8s' already exists. Pulling latest changes..."
|
echo "Repository 'oc-k8s' already exists. Pulling latest changes..."
|
||||||
cd "oc-k8s" && git checkout main && git pull
|
cd "oc-k8s" && git checkout $branch && git pull
|
||||||
|
|
||||||
if [ -f "./conf/$clustername.conf" ]; then
|
./create_kind_cluster.sh
|
||||||
oc-k8s create values -r $clustername -f $path -c "./conf/$clustername.conf"
|
./clone_opencloud_microservices.sh $branch
|
||||||
else
|
./build_opencloud_microservices.sh
|
||||||
oc-k8s create values -r $clustername -f $path
|
./install.sh $mode
|
||||||
fi
|
|
||||||
|
|
||||||
oc-k8s install
|
|
||||||
oc-k8s start -f $path -r $clustername -n $clustername -t $mode -b $branch -p $port -P $portTLS
|
|
||||||
|
|||||||
@@ -2,6 +2,8 @@
|
|||||||
mode=${1:-dev}
|
mode=${1:-dev}
|
||||||
branch=${2:-main}
|
branch=${2:-main}
|
||||||
|
|
||||||
|
cd ../..
|
||||||
|
|
||||||
if [ ! -d "oc-k8s" ];
|
if [ ! -d "oc-k8s" ];
|
||||||
echo "Cloning repository: $repo_name"
|
echo "Cloning repository: $repo_name"
|
||||||
git clone "https://cloud.o-forge.io/core/oc-k8s.git"
|
git clone "https://cloud.o-forge.io/core/oc-k8s.git"
|
||||||
@@ -13,5 +15,6 @@ fi
|
|||||||
echo "Repository 'oc-k8s' already exists. Pulling latest changes..."
|
echo "Repository 'oc-k8s' already exists. Pulling latest changes..."
|
||||||
cd "oc-k8s" && git checkout $branch && git pull
|
cd "oc-k8s" && git checkout $branch && git pull
|
||||||
|
|
||||||
./oc-k8s.sh stop $mode
|
./uninstall.sh $mode
|
||||||
|
./delete_kind_cluster.sh
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user