--- - name: is /etc clean? command: git status --porcelain args: chdir: /etc changed_when: false register: git_status when: not ansible_check_mode ignore_errors: true tags: - etc-git - commit-etc - debug: var: git_status verbosity: 3 tags: - etc-git - commit-etc - name: fetch current Git user.email git_config: name: user.email repo: /etc scope: local register: git_config_user_email ignore_errors: true tags: - etc-git - commit-etc - name: set commit author set_fact: commit_author: > {% if ansible_env.SUDO_USER is not defined %} root {% else %} {{ ansible_env.SUDO_USER }} {% endif %} commit_email: > {% if git_config_user_email.config_value is not defined or git_config_user_email.config_value == "" %} root@localhost {% else %} {{ git_config_user_email.config_value }} {% endif %} tags: - etc-git - commit-etc - name: /etc modifications are committed shell: > git add -A . && git commit -m "{{ commit_message | mandatory }}" --author "{{ commit_author | mandatory }} <{{ commit_email | mandatory }}>" args: chdir: /etc register: etc_commit_end_run when: not ansible_check_mode and git_status.stdout != "" ignore_errors: true tags: - etc-git - commit-etc - debug: var: etc_commit_end_run verbosity: 4 tags: - etc-git - commit-etc