anthos-bm-edge-deployment/roles/abm-software/tasks/csi-longhorn.yaml (90 lines of code) (raw):

# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # Get HMAC secret from Secret Manager - name: Get the HMAC cloud stroage key from Secret Manager IF it exists run_once: true ignore_errors: true shell: | export HAS_SECRET=$(gcloud secrets list --filter="name~{{ longhorn_secret_name }}" --format="value(name)" --project="{{ google_project_id }}") if [ -z "$HAS_SECRET" ]; then exit 1 else VERSION_EXISTS=$(gcloud secrets versions list {{ longhorn_secret_name }} --filter="state=enabled" --format="value(name)" --project="{{ google_project_id }}") if [ -z "${VERSION_EXISTS}" ]; then # no valid versions found, need to create a new one exit 1 fi exit 0 fi args: executable: /bin/bash environment: PATH: "{{ tools_base_path }}/google-cloud-sdk/bin:{{ ansible_env.PATH }}" register: hmac_longhorn_secret changed_when: hmac_longhorn_secret.rc != 0 tags: - longhorn-hmac-keys - longhorn-install # TODO: Check for exsiting secret and/or HMAC key on bucket before creating a new one - name: Create new HMAC key for longhorn backup to cloud stoarge and push to Secret Manager run_once: true shell: | gsutil hmac create longhorn-cloud-storage@{{ google_project_id }}.iam.gserviceaccount.com > /tmp/hmackey.txt access_key=`cat /tmp/hmackey.txt | awk -F: '{print $2}' | xargs | awk '{print $1}'` access_secret=`cat /tmp/hmackey.txt | awk -F: '{print $2}' | xargs | awk '{print $2}'` echo "{\"access_key\": \"${access_key}\", \"access_secret\": \"${access_secret}\" , \"endpoint\" : \"https://storage.googleapis.com\" }" > /tmp/hmacsecret.json gcloud secrets create {{ longhorn_secret_name }} --replication-policy="automatic" --project="{{ google_project_id }}" gcloud secrets versions add {{ longhorn_secret_name }} --data-file="/tmp/hmacsecret.json" rm -rf /tmp/hmacsecret.json /tmp/hmackey.txt # delete temp file exit $? args: executable: /bin/bash environment: PATH: "{{ tools_base_path }}/google-cloud-sdk/bin:{{ ansible_env.PATH }}" when: hmac_longhorn_secret.rc > 0 tags: - longhorn-hmac-keys - longhorn-install - name: Copy Longhorn namespace and configmap template: src: longhorn-default-setting.yaml.j2 dest: "{{ acm_config_files }}/longhorn-default-setting.yaml" when: - (primary_cluster_machine is defined) - (primary_cluster_machine == true) tags: - longhorn-config-management - longhorn-install - name: Create Longhorn namespace and configmap command: cmd: kubectl apply -f {{ acm_config_files }}/longhorn-default-setting.yaml when: - (primary_cluster_machine is defined) - (primary_cluster_machine == true) retries: 3 register: cmc_result until: cmc_result.rc == 0 environment: KUBECONFIG: "{{ kubeconfig_shared_location }}" tags: - longhorn-config-management - name: Download Longhorn YAML installation script ansible.builtin.get_url: url: "{{ longhorn_installation_yaml_url }}" dest: "{{ longhorn_installation_dir }}/longhorn.yaml" mode: '0400' when: - (primary_cluster_machine is defined) - (primary_cluster_machine == true) tags: - longhorn-config-management - longhorn-install - name: Create Longhorn namespace and configmap command: cmd: kubectl apply -f {{ longhorn_installation_dir }}/longhorn.yaml when: - (primary_cluster_machine is defined) - (primary_cluster_machine == true) retries: 3 register: long_result until: long_result.rc == 0 environment: KUBECONFIG: "{{ kubeconfig_shared_location }}" tags: - longhorn-config-management - longhorn-install