aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorEgor Tensin <egor@tensin.name>2025-11-14 16:11:15 +0100
committerEgor Tensin <egor@tensin.name>2025-11-14 16:11:15 +0100
commit81e573b7be68568b6b1a2a1fd538003c31a709ee (patch)
tree66344f975e4ca82bfea5ac79d36803abc7ce301f
parentetckeeper: clarify a comment (diff)
downloadinfra-ansible-81e573b7be68568b6b1a2a1fd538003c31a709ee.tar.gz
infra-ansible-81e573b7be68568b6b1a2a1fd538003c31a709ee.zip
etckeeper: copy commit functionality into etckeeper_commmit
-rw-r--r--roles/etckeeper/handlers/commit.yml4
-rw-r--r--roles/etckeeper_commit/README.md2
-rw-r--r--roles/etckeeper_commit/defaults/main.yml2
-rw-r--r--roles/etckeeper_commit/tasks/main.yml28
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 }}'