diff options
| author | Egor Tensin <egor@tensin.name> | 2025-11-14 16:11:15 +0100 |
|---|---|---|
| committer | Egor Tensin <egor@tensin.name> | 2025-11-14 16:11:15 +0100 |
| commit | 81e573b7be68568b6b1a2a1fd538003c31a709ee (patch) | |
| tree | 66344f975e4ca82bfea5ac79d36803abc7ce301f | |
| parent | etckeeper: clarify a comment (diff) | |
| download | infra-ansible-81e573b7be68568b6b1a2a1fd538003c31a709ee.tar.gz infra-ansible-81e573b7be68568b6b1a2a1fd538003c31a709ee.zip | |
etckeeper: copy commit functionality into etckeeper_commmit
| -rw-r--r-- | roles/etckeeper/handlers/commit.yml | 4 | ||||
| -rw-r--r-- | roles/etckeeper_commit/README.md | 2 | ||||
| -rw-r--r-- | roles/etckeeper_commit/defaults/main.yml | 2 | ||||
| -rw-r--r-- | roles/etckeeper_commit/tasks/main.yml | 28 |
4 files changed, 36 insertions, 0 deletions
diff --git a/roles/etckeeper/handlers/commit.yml b/roles/etckeeper/handlers/commit.yml index f48db8f..e066503 100644 --- a/roles/etckeeper/handlers/commit.yml +++ b/roles/etckeeper/handlers/commit.yml @@ -1,3 +1,7 @@ +# This was copied to role etckeeper_commit. +# +# TODO: figure out how to dedupe this (handlers cannot use include_role). + - name: Get list of modified files become: true ansible.builtin.shell: | diff --git a/roles/etckeeper_commit/README.md b/roles/etckeeper_commit/README.md new file mode 100644 index 0000000..77cea17 --- /dev/null +++ b/roles/etckeeper_commit/README.md @@ -0,0 +1,2 @@ +This is a helper role; it helps to check that the expected paths were modified +in /etc, and runs `etckeeper commit` with the specified message. diff --git a/roles/etckeeper_commit/defaults/main.yml b/roles/etckeeper_commit/defaults/main.yml new file mode 100644 index 0000000..4a75c85 --- /dev/null +++ b/roles/etckeeper_commit/defaults/main.yml @@ -0,0 +1,2 @@ +#etckeeper_commit_paths: [] +#etckeeper_commit_msg: '' diff --git a/roles/etckeeper_commit/tasks/main.yml b/roles/etckeeper_commit/tasks/main.yml new file mode 100644 index 0000000..b983819 --- /dev/null +++ b/roles/etckeeper_commit/tasks/main.yml @@ -0,0 +1,28 @@ +# This was copied from role etckeeper's handlers. +# +# TODO: figure out how to dedupe this (handlers cannot use include_role). + +- name: Get list of modified files + become: true + ansible.builtin.shell: | + set -o pipefail && \ + git status --porcelain=v1 \ + | cut -c 4- \ + | grep -G -v '^{{ etckeeper_commit_paths | map("regex_replace", "^/", "") | list | join("\|^") }}' + args: + chdir: /etc + register: git_status + changed_when: false + failed_when: git_status.rc not in [0, 1] + +- name: Fail if unexpected files were modified + ansible.builtin.fail: + msg: | + Unexpected files were modified: + {{ git_status.stdout }} + when: git_status.rc == 0 + +- name: etckeeper commit + become: true + ansible.builtin.command: | + etckeeper commit '{{ etckeeper_commit_msg }}' |
