To recover from a failure or allow to quickly reset to known state we need to know with what playbook-commit the sever is installed. This commit saves the GIT hash/status when we run the playbook in a file called git_hash.yml. It also backs up that file by copying it to the target machine.

This commit is contained in:
ikkemaniac 2022-06-19 11:30:28 +02:00
parent fe1f49d5e7
commit 80e57417f4
2 changed files with 57 additions and 0 deletions

View file

@ -298,3 +298,7 @@ run_setup: true
run_self_check: true
run_start: true
run_stop: true
# Saves the git hash in a file called git_hash.yml
# Set this to false if GIT is not installed on the local system (the system where the ansible command is run on)
git_save_hash: true

View file

@ -19,6 +19,59 @@
mode: '0660'
when: "matrix_vars_yml_snapshotting_enabled | bool"
- name: Save current git-repo status on the target to aid with restoring in case of problems
block:
- name: Get local git hash
delegate_to: 127.0.0.1
become: false
register: git_describe
shell:
git describe
--always
--tags
--dirty
--long
--all
- set_fact:
git_hash: "{{ git_describe.stdout }}"
- name: Git hash
debug:
msg: "Git hash: {{ git_hash }}"
- name: Save git hash in git_hash.yml
become: false
local_action:
copy
content="git_hash_last_run{{ ":" }} {{ git_hash }}\n"
dest="{{ matrix_vars_yml_snapshotting_src }}/git_hash.yml"
- name: Copy git_hash.yml file to target
copy:
src: "{{ matrix_vars_yml_snapshotting_src }}/git_hash.yml"
dest: "{{ matrix_base_data_path }}/git_hash.yml"
owner: "{{ matrix_user_username }}"
group: "{{ matrix_user_groupname }}"
mode: '0660'
rescue:
- name: GIT not found error
ansible.builtin.debug:
msg: >-
Couldn't find GIT on the local machine. Continuing without saving the GIT hash.
You can disable saving the GIT hash by setting 'git_save_hash: false' in vars.yml
when: "git_describe.stderr.find('not found') != -1"
- name: GIT hash error
ansible.builtin.fail:
msg: >-
Error when trying to get the GIT hash.
You can disable saving the GIT hash by setting 'git_save_hash: false' in vars.yml
when: "git_describe.stderr.find('not found') == -1"
when: "matrix_vars_yml_snapshotting_enabled|bool and git_save_hash|bool"
- name: Ensure Matrix network is created in Docker
community.docker.docker_network:
name: "{{ matrix_docker_network }}"