diff options
| author | Ahmed Abdelhalim <[email protected]> | 2025-09-02 16:44:46 +0200 |
|---|---|---|
| committer | Ahmed Abdelhalim <[email protected]> | 2025-09-02 17:52:11 +0200 |
| commit | df383276d03786dcb4d703366b932421a9e9b74f (patch) | |
| tree | 88033c8f875452c4a0887bc9d8521ec42639ab14 | |
| parent | 42df64b843574407c7876fd7fc8d03256d0a841e (diff) | |
Fix locales role to idempotent generate regardless of system state
| -rw-r--r-- | roles/locales/handlers/main.yml | 6 | ||||
| -rw-r--r-- | roles/locales/tasks/main.yml | 42 |
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 |
