diff options
Diffstat (limited to 'roles/etckeeper')
-rw-r--r-- | roles/etckeeper/defaults/main.yml | 15 | ||||
-rw-r--r-- | roles/etckeeper/handlers/commit.yml (renamed from roles/etckeeper/handlers/commit_conf.yml) | 4 | ||||
-rw-r--r-- | roles/etckeeper/handlers/main.yml | 12 | ||||
-rw-r--r-- | roles/etckeeper/tasks/ignore.yml | 18 | ||||
-rw-r--r-- | roles/etckeeper/tasks/main.yml | 12 |
5 files changed, 58 insertions, 3 deletions
diff --git a/roles/etckeeper/defaults/main.yml b/roles/etckeeper/defaults/main.yml index 176453c..e783002 100644 --- a/roles/etckeeper/defaults/main.yml +++ b/roles/etckeeper/defaults/main.yml @@ -3,3 +3,18 @@ git_email: Egor.Tensin@gmail.com etckeeper_remote_name: origin #etckeeper_remote_url: + +etckeeper_ignored_paths: + # My resolv.conf is typically managed, by either systemd or NetworkManager. + - /resolv.conf + # This is just a stupid systemd file. + - /.updated + # I really don't need all the Wi-Fi networks. + - /NetworkManager/system-connections/ + # I'm unsure about this; but it does make pacman upgrades much easier - I + # don't need to account for /etc/pacman.d/gnupg suddenly having changes. + - /pacman.d/gnupg/ + # I run rate-mirrors before every upgrade pretty much. + - /pacman.d/mirrorlist + +etckeeper_extra_ignored_paths: [] diff --git a/roles/etckeeper/handlers/commit_conf.yml b/roles/etckeeper/handlers/commit.yml index 134e264..f48db8f 100644 --- a/roles/etckeeper/handlers/commit_conf.yml +++ b/roles/etckeeper/handlers/commit.yml @@ -4,7 +4,7 @@ set -o pipefail && \ git status --porcelain=v1 \ | cut -c 4- \ - | grep -G -v '^etckeeper/etckeeper.conf' + | grep -G -v '^{{ paths | map("regex_replace", "^/", "") | list | join("\|^") }}' args: chdir: /etc register: git_status @@ -21,4 +21,4 @@ - name: etckeeper commit become: true ansible.builtin.command: | - etckeeper commit 'configure etckeeper' + etckeeper commit '{{ commit_msg }}' diff --git a/roles/etckeeper/handlers/main.yml b/roles/etckeeper/handlers/main.yml index 9993ed5..ca6beaa 100644 --- a/roles/etckeeper/handlers/main.yml +++ b/roles/etckeeper/handlers/main.yml @@ -1,3 +1,13 @@ - name: Commit etckeeper.conf - ansible.builtin.include_tasks: commit_conf.yml + ansible.builtin.include_tasks: commit.yml + vars: + paths: [etckeeper/etckeeper.conf] + commit_msg: configure etckeeper listen: etckeeper_commit_conf + +- name: Commit .gitignore + ansible.builtin.include_tasks: commit.yml + vars: + paths: '{{ [".gitignore"] + etckeeper_ignored_paths + etckeeper_extra_ignored_paths }}' + commit_msg: configure ignored files + listen: etckeeper_commit_gitignore diff --git a/roles/etckeeper/tasks/ignore.yml b/roles/etckeeper/tasks/ignore.yml new file mode 100644 index 0000000..a798368 --- /dev/null +++ b/roles/etckeeper/tasks/ignore.yml @@ -0,0 +1,18 @@ +- name: Add line to .gitignore + become: true + ansible.builtin.lineinfile: + path: /etc/.gitignore + line: '{{ ignore_path }}' + state: present + owner: root + group: root + mode: '644' + register: gitignore + notify: etckeeper_commit_gitignore + +- name: Remove path from cache + when: gitignore.changed + become: true + ansible.builtin.command: # noqa: command-instead-of-module + cmd: git rm -r --ignore-unmatch --cached -- '{{ ignore_path | regex_replace("^/", "") }}' + chdir: /etc diff --git a/roles/etckeeper/tasks/main.yml b/roles/etckeeper/tasks/main.yml index 431a378..f609ce7 100644 --- a/roles/etckeeper/tasks/main.yml +++ b/roles/etckeeper/tasks/main.yml @@ -74,3 +74,15 @@ option: PUSH_REMOTE value: '{{ etckeeper_remote_name }}' notify: etckeeper_commit_conf + +- name: Commit etckeeper.conf if necessary + ansible.builtin.meta: flush_handlers + +- name: Configure ignored paths + ansible.builtin.include_tasks: ignore.yml + loop: '{{ etckeeper_ignored_paths + etckeeper_extra_ignored_paths }}' + loop_control: + loop_var: ignore_path + +- name: Commit .gitignore if necessary + ansible.builtin.meta: flush_handlers |