From 1f7cc5a2edabbd51f3b56abd63206e07f7b6f219 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jarom=C3=ADr=20Hradil?= <jaromir.hradil@cesnet.cz>
Date: Mon, 26 Aug 2024 17:35:21 +0200
Subject: [PATCH] Adding an automated accounting deploy

---
 .../accounting-config.yaml                    | 13 ++++++
 common/playbooks/accounting.yaml              | 44 +++++++++++++++++++
 .../accounting-config.yaml                    |  1 +
 staging1/playbooks/accounting.yaml            |  1 +
 .../accounting-config.yaml                    |  1 +
 staging2/playbooks/accounting.yaml            |  1 +
 6 files changed, 61 insertions(+)
 create mode 100644 common/accounting_deployments/accounting-config.yaml
 create mode 100644 common/playbooks/accounting.yaml
 create mode 120000 staging1/accounting_deployments/accounting-config.yaml
 create mode 120000 staging1/playbooks/accounting.yaml
 create mode 120000 staging2/accounting_deployments/accounting-config.yaml
 create mode 120000 staging2/playbooks/accounting.yaml

diff --git a/common/accounting_deployments/accounting-config.yaml b/common/accounting_deployments/accounting-config.yaml
new file mode 100644
index 0000000..0335719
--- /dev/null
+++ b/common/accounting_deployments/accounting-config.yaml
@@ -0,0 +1,13 @@
+eosc:
+  tokenUrl: "https://{{ secrets['checkin_host'] }}/OIDC/token"
+  clientId: "{{ secrets['client_id'] }}"
+  clientSecret: "{{ secrets['client_secret'] }}"
+  accountingUrl: "https://{{ secrets['accounting_host'] }}"
+  accountingInstallationId: "{{ secrets['accounting_install_id'] }}"
+  flavorMetrics:
+    small-environment-2-vcpu-4-gb-ram: 668bdd5988e1d617b217ecb9
+    medium-environment-4-vcpu-8-gb-ram: 668bdd75d1bc0f46a16be8a2
+    large-environment-8-vcpu-16-gb-ram-gpu: 668bdd8b88e1d617b217ecba
+    large-environment-8-vcpu-16-gb-ram: 6694d9eb744c3c7ae7531917
+
+
diff --git a/common/playbooks/accounting.yaml b/common/playbooks/accounting.yaml
new file mode 100644
index 0000000..293a4c2
--- /dev/null
+++ b/common/playbooks/accounting.yaml
@@ -0,0 +1,44 @@
+- name: EOSC accounting deployment
+  hosts: master
+  become: true
+  tasks:
+    - name: Configure helm repo
+      shell: |-
+        helm repo add egi-accounting https://egi-federation.github.io/egi-notebooks-accounting
+        helm repo update
+      when: "'egi-accounting' not in ansible_local.helm_repos | map(attribute='name') | list"
+    - name: Get credentials from Vault for accounting
+      set_fact:
+        secrets: "{{ lookup('community.hashi_vault.hashi_vault', (vault_mount_point, 'accounting') | path_join,
+          token_validate=false) }}"
+    - name: Get accounting installation ID from Vault
+      set_fact:
+        secrets: "{{ secrets | combine(lookup('community.hashi_vault.hashi_vault', (vault_mount_point, 'site-' + site_name) | path_join,
+          token_validate=false)) }}"
+    - name: Debug accounting secrets
+      debug:
+        msg: "{{ item.key }} = {{ item.value }}"
+      loop: "{{ secrets | dict2items }}"
+    - name: Copy config file to master   
+      template:
+        src: "../accounting_deployments/accounting-config.yaml"
+        dest: "/tmp/accounting-config.yaml"
+        mode: 0600
+    - name: Deploy/upgrade accounting instance
+      vars:
+        name: "notebooks-accounting"
+        version: "0.2.0" 
+      shell: |-
+        helm status --namespace accounting {{ name }}
+        if [ $? -ne 0 ]; then
+            helm install --create-namespace --namespace accounting \
+                -f /tmp/accounting-config.yaml --version {{ version }} \
+                 {{ name }} egi-accounting/notebooks-accounting
+        else
+            helm upgrade --version {{ version }} -f /tmp/accounting-config.yaml \
+                --namespace accounting {{ name }} egi-accounting/notebooks-accounting
+        fi
+      environment:
+        KUBECONFIG: /etc/kubernetes/admin.conf
+        PATH: /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
+      when: true
\ No newline at end of file
diff --git a/staging1/accounting_deployments/accounting-config.yaml b/staging1/accounting_deployments/accounting-config.yaml
new file mode 120000
index 0000000..c064841
--- /dev/null
+++ b/staging1/accounting_deployments/accounting-config.yaml
@@ -0,0 +1 @@
+../../common/accounting_deployments/accounting-config.yaml
\ No newline at end of file
diff --git a/staging1/playbooks/accounting.yaml b/staging1/playbooks/accounting.yaml
new file mode 120000
index 0000000..8928484
--- /dev/null
+++ b/staging1/playbooks/accounting.yaml
@@ -0,0 +1 @@
+../../common/playbooks/accounting.yaml
\ No newline at end of file
diff --git a/staging2/accounting_deployments/accounting-config.yaml b/staging2/accounting_deployments/accounting-config.yaml
new file mode 120000
index 0000000..c064841
--- /dev/null
+++ b/staging2/accounting_deployments/accounting-config.yaml
@@ -0,0 +1 @@
+../../common/accounting_deployments/accounting-config.yaml
\ No newline at end of file
diff --git a/staging2/playbooks/accounting.yaml b/staging2/playbooks/accounting.yaml
new file mode 120000
index 0000000..8928484
--- /dev/null
+++ b/staging2/playbooks/accounting.yaml
@@ -0,0 +1 @@
+../../common/playbooks/accounting.yaml
\ No newline at end of file
-- 
GitLab