summaryrefslogtreecommitdiffstats
path: root/roles/locales
diff options
context:
space:
mode:
authorAhmed Abdelhalim <[email protected]>2025-09-02 16:44:46 +0200
committerAhmed Abdelhalim <[email protected]>2025-09-02 17:52:11 +0200
commitdf383276d03786dcb4d703366b932421a9e9b74f (patch)
tree88033c8f875452c4a0887bc9d8521ec42639ab14 /roles/locales
parent42df64b843574407c7876fd7fc8d03256d0a841e (diff)
Fix locales role to idempotent generate regardless of system state
Diffstat (limited to 'roles/locales')
-rw-r--r--roles/locales/handlers/main.yml6
-rw-r--r--roles/locales/tasks/main.yml42
2 files changed, 34 insertions, 14 deletions
diff --git a/roles/locales/handlers/main.yml b/roles/locales/handlers/main.yml
deleted file mode 100644
index fce9c52a..00000000
--- a/roles/locales/handlers/main.yml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-- name: "Run locale-gen"
- become: true
- ansible.builtin.command:
- cmd: "locale-gen"
- changed_when: true
diff --git a/roles/locales/tasks/main.yml b/roles/locales/tasks/main.yml
index d257877d..8c534adb 100644
--- a/roles/locales/tasks/main.yml
+++ b/roles/locales/tasks/main.yml
@@ -8,15 +8,41 @@
name: "{{ locales_pkg }}"
state: "present"
-- name: "Update locale.gen"
- become: true
- ansible.builtin.lineinfile:
- dest: "/etc/locale.gen"
- mode: "0644"
- regexp: "^#{{ item }}"
- line: "{{ item }}"
+- name: "Read locale.gen file"
+ ansible.builtin.slurp:
+ src: "/etc/locale.gen"
+ register: locale_gen_content
+
+- name: "Validate locale entries exist in locale.gen"
+ ansible.builtin.assert:
+ that:
+ - "item in (locale_gen_content.content | b64decode)"
+ fail_msg: "Locale '{{ item }}' not found in /etc/locale.gen."
with_items: "{{ locales }}"
- notify: "Run locale-gen"
+
+- name: "Check if required locales are generated"
+ ansible.builtin.shell: |
+ set -o pipefail
+ locale -a | grep 'utf8$' | sed 's/.utf8$/.UTF-8 UTF-8/'
+ register: available_locales
+ changed_when: false
+
+- name: "Generate locales if missing"
+ become: true
+ when: locales | difference(available_locales.stdout_lines) | length > 0
+ block:
+ - name: "Update locale.gen"
+ ansible.builtin.lineinfile:
+ dest: "/etc/locale.gen"
+ mode: "0644"
+ regexp: "^#{{ item }}"
+ line: "{{ item }}"
+ with_items: "{{ locales }}"
+
+ - name: "Generate locales"
+ ansible.builtin.command:
+ cmd: "locale-gen"
+ changed_when: true
- name: "Update locale.conf"
become: true