anthos-bm-edge-deployment/roles/abm-software/tasks/create-snapshot.yaml (76 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. # Make directory to store snapshot config - name: Create Snapshot Config folder file: path: '{{ snapshot_config_folder }}' state: directory mode: '0700' # Copy snapshot config (template) - name: "Setup snapshot configuration" template: src: snapshot-config.yaml.j2 dest: "{{ snapshot_config_file }}" # Make directory to store snapshot (if needed) - name: Create Snapshot Output folder file: path: '{{ snapshot_output_folder }}' state: directory mode: '0700' # Get date/time from CLI - name: Get Date Time command: cmd: date -u +"%Y%m%dT%H%M%SZ" register: date_time # Create Snapshot File Name - name: Set current date set_fact: current_date_time: "{{ date_time.stdout }}" - name: Set output name set_fact: snapshot_output_file_name: "{{cluster_name}}-cluster-snapshot-{{ current_date_time }}.tar.gz" - name: Set file path set_fact: snapshot_output_file: "{{ snapshot_output_folder }}/{{ snapshot_output_file_name }}" - name: debug debug: msg: "Snapshot Name: {{ snapshot_output_file }}" tags: - debug - never - name: Set fact for if uploading set_fact: upload_snapshot: "{{ snapshot_gcs_bucket_base is defined and snapshot_gcs_bucket_base | length > 0 }}" # Create (if needed) GCS bucket for uploading - name: Check snapshot bucket existance debug: msg: "Checking/creating bucket '{{ snapshot_gcs_bucket_base }}'" when: - upload_snapshot == True tags: - debug - never - name: Does GCS bucket exist? command: cmd: gsutil ls -p {{ google_project_id }} gs://{{ snapshot_gcs_bucket_base }} ignore_errors: true register: bucket_exists - name: Create if missing command: cmd: gsutil mb -p {{ google_project_id }} gs://{{ snapshot_gcs_bucket_base }} when: - bucket_exists.rc > 0 # Perform Snapshot collection & push to bucket - name: Create snapshot command: cmd: bmctl check cluster --snapshot --snapshot-config {{ snapshot_config_file }} --cluster {{ cluster_name }} --service-account-key-file /var/keys/gsa-key.json --snapshot-output {{ snapshot_output_file }} --kubeconfig {{ kubeconfig_shared_location }} args: chdir: "{{ abm_install_folder }}" - name: Upload snapshot to GCS command: cmd: gsutil cp {{ snapshot_output_file }} gs://{{ snapshot_gcs_bucket_base }}/{{ cluster_name }}/{{ snapshot_output_file_name }} register: success_upload args: chdir: "{{ abm_install_folder }}" when: - upload_snapshot == True - name: Ouptut IF error uploading compressed file debug: msg: "{{ success_upload }}" when: - upload_snapshot == True - success_upload.rc > 0 tags: - debug - never