diff options
| author | Ahmed Abdelhalim <[email protected]> | 2025-08-11 00:32:07 +0200 |
|---|---|---|
| committer | Ahmed Abdelhalim <[email protected]> | 2025-08-11 00:32:07 +0200 |
| commit | ac7bb521873b59feb43303b4b1d46c37d16ad8b0 (patch) | |
| tree | 796a4879c1a925908dd03130dec1320060795b72 | |
| parent | 93326d8c042101c59b969f57b4b9989e3ab7aaeb (diff) | |
Refactor: move the locales into its own role
| -rw-r--r-- | molecule/default/converge.yml | 3 | ||||
| -rw-r--r-- | roles/locales/README.md | 27 | ||||
| -rw-r--r-- | roles/locales/defaults/main.yml | 18 | ||||
| -rw-r--r-- | roles/locales/handlers/main.yml (renamed from roles/settings/handlers/main.yml) | 0 | ||||
| -rw-r--r-- | roles/locales/meta/argument_specs.yml | 65 | ||||
| -rw-r--r-- | roles/locales/meta/main.yml | 19 | ||||
| -rw-r--r-- | roles/locales/tasks/main.yml | 40 | ||||
| -rw-r--r-- | roles/locales/vars/archlinux.yml | 2 | ||||
| -rw-r--r-- | roles/locales/vars/debian.yml | 2 | ||||
| -rw-r--r-- | roles/settings/README.md | 19 | ||||
| -rw-r--r-- | roles/settings/defaults/main.yml | 18 | ||||
| -rw-r--r-- | roles/settings/meta/argument_specs.yml | 61 | ||||
| -rw-r--r-- | roles/settings/tasks/main.yml | 32 | ||||
| -rw-r--r-- | roles/settings/vars/archlinux.yml | 1 | ||||
| -rw-r--r-- | roles/settings/vars/debian.yml | 1 | ||||
| -rw-r--r-- | site.yml | 1 |
16 files changed, 176 insertions, 133 deletions
diff --git a/molecule/default/converge.yml b/molecule/default/converge.yml index b0e73070..9f3e5f72 100644 --- a/molecule/default/converge.yml +++ b/molecule/default/converge.yml @@ -8,11 +8,12 @@ username: test_user user_groups: ["wheel", "test_group"] ssh_port: 1337 - settings_locales: + locales: - "en_US.UTF-8 UTF-8" settings_timezone: "GMT" roles: - role: network - role: user - role: ssh + - role: locales - role: settings diff --git a/roles/locales/README.md b/roles/locales/README.md new file mode 100644 index 00000000..9fd2a2bc --- /dev/null +++ b/roles/locales/README.md @@ -0,0 +1,27 @@ +# Ansible Role: locales + +This role configure the machine locales. + +## Role Variables + +- `locales` the list of locales to be generated. (default: `de_DE`) +- `locales_lang`: `LANG=` default `de_DE.UTF-8` +- `locales_language`: `LANGUAGE=` default `de_DE.UTF-8:de:C` +- `locales_lc_ctype`: `LC_CTYPE=` default `de_DE.UTF-8` +- `locales_lc_numeric`: `LC_NUMERIC=` default `de_DE.UTF-8` +- `locales_lc_time`: `LC_TIME=` default `de_DE.UTF-8` +- `locales_lc_collate`: `LC_COLLATE=` default `de_DE.UTF-8` +- `locales_lc_monetary`: `LC_MONETARY=` default `de_DE.UTF-8` +- `locales_lc_messages`: `LC_MESSAGES=` default `de_DE.UTF-8` +- `locales_lc_paper`: `LC_PAPER=` default `de_DE.UTF-8` +- `locales_lc_name`: `LC_NAME=` default `de_DE.UTF-8` +- `locales_lc_address`: `LC_ADDRESS=` default `de_DE.UTF-8` +- `locales_lc_telephone`: `LC_TELEPHONE=` default `de_DE.UTF-8` +- `locales_lc_measurement`: `LC_MEASUREMENT=` default `de_DE.UTF-8` +- `locales_lc_identification`: `LC_IDENTIFICATION=` default `de_DE.UTF-8` + +## Docs + +- https://manpages.debian.org/buster/manpages/locale.1.en.html +- https://manpages.debian.org/buster/locales/locale-gen.8.en.html +- https://manpages.debian.org/buster/manpages/localedef.1.en.html diff --git a/roles/locales/defaults/main.yml b/roles/locales/defaults/main.yml new file mode 100644 index 00000000..4f9cbd62 --- /dev/null +++ b/roles/locales/defaults/main.yml @@ -0,0 +1,18 @@ +--- +# noqa var-naming[no-role-prefix] +locales: + - "de_DE.UTF-8 UTF-8" +locales_lang: "de_DE.UTF-8" +locales_language: "de_DE:de:C" +locales_lc_ctype: "de_DE.UTF-8" +locales_lc_numeric: "de_DE.UTF-8" +locales_lc_time: "de_DE.UTF-8" +locales_lc_collate: "de_DE.UTF-8" +locales_lc_monetary: "de_DE.UTF-8" +locales_lc_messages: "de_DE.UTF-8" +locales_lc_paper: "de_DE.UTF-8" +locales_lc_name: "de_DE.UTF-8" +locales_lc_address: "de_DE.UTF-8" +locales_lc_telephone: "de_DE.UTF-8" +locales_lc_measurement: "de_DE.UTF-8" +locales_lc_identification: "de_DE.UTF-8" diff --git a/roles/settings/handlers/main.yml b/roles/locales/handlers/main.yml index fce9c52a..fce9c52a 100644 --- a/roles/settings/handlers/main.yml +++ b/roles/locales/handlers/main.yml diff --git a/roles/locales/meta/argument_specs.yml b/roles/locales/meta/argument_specs.yml new file mode 100644 index 00000000..606f8be3 --- /dev/null +++ b/roles/locales/meta/argument_specs.yml @@ -0,0 +1,65 @@ +--- +argument_specs: + main: + options: + locales: + type: "list" + default: ["de_DE.UTF-8 UTF-8"] + elements: "str" + description: "The default locales to generate" + locales_lang: + type: "str" + description: "configuration of LANG=" + default: "de_DE.UTF-8" + locales_language: + type: "str" + description: "configuration of LANGUAGE=" + default: "de_DE.UTF-8:de:C" + locales_lc_ctype: + type: "str" + description: "configuration of LC_CTYPE=" + default: "de_DE.UTF-8" + locales_lc_numeric: + type: "str" + description: "configuration of LC_NUMERIC=" + default: "de_DE.UTF-8" + locales_lc_time: + type: "str" + description: "configuration of LC_TIME=" + default: "de_DE.UTF-8" + locales_lc_collate: + type: "str" + description: "configuration of LC_COLLATE=" + default: "de_DE.UTF-8" + locales_lc_monetary: + type: "str" + description: "configuration of LC_MONETARY=" + default: "de_DE.UTF-8" + locales_lc_messages: + type: "str" + description: "configuration of LC_MESSAGES=" + default: "de_DE.UTF-8" + locales_lc_paper: + type: "str" + description: "configuration of LC_PAPER=" + default: "de_DE.UTF-8" + locales_lc_name: + type: "str" + description: "configuration of LC_NAME=" + default: "de_DE.UTF-8" + locales_lc_address: + type: "str" + description: "configuration of LC_ADDRESS=" + default: "de_DE.UTF-8" + locales_lc_telephone: + type: "str" + description: "configuration of LC_TELEPHONE=" + default: "de_DE.UTF-8" + locales_lc_measurement: + type: "str" + description: "configuration of LC_MEASUREMENT=" + default: "de_DE.UTF-8" + locales_lc_identification: + type: "str" + description: "configuration of LC_IDENTIFICATION=" + default: "de_DE.UTF-8" diff --git a/roles/locales/meta/main.yml b/roles/locales/meta/main.yml new file mode 100644 index 00000000..4ddcf24c --- /dev/null +++ b/roles/locales/meta/main.yml @@ -0,0 +1,19 @@ +--- +dependencies: [] +galaxy_info: + role_name: locales + author: a14m + description: "Configure the linux distro locales" + company: "kartoffeln.work GmbH." + license: "license MIT" + min_ansible_version: "2.18" + platforms: + - name: ArchLinux + versions: + - all + - name: Ubuntu + versions: + - noble + - name: Debian + versions: + - bookworm diff --git a/roles/locales/tasks/main.yml b/roles/locales/tasks/main.yml new file mode 100644 index 00000000..d257877d --- /dev/null +++ b/roles/locales/tasks/main.yml @@ -0,0 +1,40 @@ +--- +- name: "Include OS-specific variables" + ansible.builtin.include_vars: "{{ ansible_os_family | lower }}.yml" + +- name: "Ensure locales package is installed" + become: true + ansible.builtin.package: + name: "{{ locales_pkg }}" + state: "present" + +- name: "Update locale.gen" + become: true + ansible.builtin.lineinfile: + dest: "/etc/locale.gen" + mode: "0644" + regexp: "^#{{ item }}" + line: "{{ item }}" + with_items: "{{ locales }}" + notify: "Run locale-gen" + +- name: "Update locale.conf" + become: true + ansible.builtin.copy: + dest: "/etc/locale.conf" + mode: "0644" + content: | + LANG={{ locales_lang }} + LANGUAGE={{ locales_language }} + LC_CTYPE={{ locales_lc_ctype }} + LC_NUMERIC={{ locales_lc_numeric }} + LC_TIME={{ locales_lc_time }} + LC_COLLATE={{ locales_lc_collate }} + LC_MONETARY={{ locales_lc_monetary }} + LC_MESSAGES={{ locales_lc_messages }} + LC_PAPER={{ locales_lc_paper }} + LC_NAME={{ locales_lc_name }} + LC_ADDRESS={{ locales_lc_address }} + LC_TELEPHONE={{ locales_lc_telephone }} + LC_MEASUREMENT={{ locales_lc_measurement }} + LC_IDENTIFICATION={{ locales_lc_identification }} diff --git a/roles/locales/vars/archlinux.yml b/roles/locales/vars/archlinux.yml new file mode 100644 index 00000000..10e7754b --- /dev/null +++ b/roles/locales/vars/archlinux.yml @@ -0,0 +1,2 @@ +--- +locales_pkg: "glibc" diff --git a/roles/locales/vars/debian.yml b/roles/locales/vars/debian.yml new file mode 100644 index 00000000..0bd86457 --- /dev/null +++ b/roles/locales/vars/debian.yml @@ -0,0 +1,2 @@ +--- +locales_pkg: "locales" diff --git a/roles/settings/README.md b/roles/settings/README.md index b88ee173..9f6c7bb9 100644 --- a/roles/settings/README.md +++ b/roles/settings/README.md @@ -6,22 +6,6 @@ This role configure the machine settings (locales/timezone/password policy/etc.) - `settings_timezone` the timezone default `CET` -- `settings_locales` the list of locales to be generated. (default: `de_DE`) -- `settings_locales_lang`: `LANG=` default `de_DE.UTF-8` -- `settings_locales_language`: `LANGUAGE=` default `de_DE.UTF-8:de:C` -- `settings_locales_lc_ctype`: `LC_CTYPE=` default `de_DE.UTF-8` -- `settings_locales_lc_numeric`: `LC_NUMERIC=` default `de_DE.UTF-8` -- `settings_locales_lc_time`: `LC_TIME=` default `de_DE.UTF-8` -- `settings_locales_lc_collate`: `LC_COLLATE=` default `de_DE.UTF-8` -- `settings_locales_lc_monetary`: `LC_MONETARY=` default `de_DE.UTF-8` -- `settings_locales_lc_messages`: `LC_MESSAGES=` default `de_DE.UTF-8` -- `settings_locales_lc_paper`: `LC_PAPER=` default `de_DE.UTF-8` -- `settings_locales_lc_name`: `LC_NAME=` default `de_DE.UTF-8` -- `settings_locales_lc_address`: `LC_ADDRESS=` default `de_DE.UTF-8` -- `settings_locales_lc_telephone`: `LC_TELEPHONE=` default `de_DE.UTF-8` -- `settings_locales_lc_measurement`: `LC_MEASUREMENT=` default `de_DE.UTF-8` -- `settings_locales_lc_identification`: `LC_IDENTIFICATION=` default `de_DE.UTF-8` - - `settings_pw_policy_enabled` boolean to enable or disable the enforcement of password policy - `settings_pw_policy_difok` the number of differences between new and old password (default 0 - disabled) - `settings_pw_policy_minlen` min password length (default 8) @@ -36,7 +20,4 @@ This role configure the machine settings (locales/timezone/password policy/etc.) ## Docs -- https://manpages.debian.org/buster/manpages/locale.1.en.html -- https://manpages.debian.org/buster/locales/locale-gen.8.en.html -- https://manpages.debian.org/buster/manpages/localedef.1.en.html - https://linux.die.net/man/8/pam_pwquality diff --git a/roles/settings/defaults/main.yml b/roles/settings/defaults/main.yml index a8c2bfa3..683eeb55 100644 --- a/roles/settings/defaults/main.yml +++ b/roles/settings/defaults/main.yml @@ -1,22 +1,4 @@ --- -# Locales -settings_locales: - - "de_DE.UTF-8 UTF-8" -settings_locales_lang: "de_DE.UTF-8" -settings_locales_language: "de_DE:de:C" -settings_locales_lc_ctype: "de_DE.UTF-8" -settings_locales_lc_numeric: "de_DE.UTF-8" -settings_locales_lc_time: "de_DE.UTF-8" -settings_locales_lc_collate: "de_DE.UTF-8" -settings_locales_lc_monetary: "de_DE.UTF-8" -settings_locales_lc_messages: "de_DE.UTF-8" -settings_locales_lc_paper: "de_DE.UTF-8" -settings_locales_lc_name: "de_DE.UTF-8" -settings_locales_lc_address: "de_DE.UTF-8" -settings_locales_lc_telephone: "de_DE.UTF-8" -settings_locales_lc_measurement: "de_DE.UTF-8" -settings_locales_lc_identification: "de_DE.UTF-8" - # Timezone settings_timezone: "CET" diff --git a/roles/settings/meta/argument_specs.yml b/roles/settings/meta/argument_specs.yml index 0ff9459d..0507db86 100644 --- a/roles/settings/meta/argument_specs.yml +++ b/roles/settings/meta/argument_specs.yml @@ -6,67 +6,6 @@ argument_specs: type: "str" description: "timezone configuration to use" default: "UTC" - settings_locales: - type: "list" - default: ["de_DE.UTF-8 UTF-8"] - elements: "str" - description: "The default locales to generate" - settings_locales_lang: - type: "str" - description: "configuration of LANG=" - default: "de_DE.UTF-8" - settings_locales_language: - type: "str" - description: "configuration of LANGUAGE=" - default: "de_DE.UTF-8:de:C" - settings_locales_lc_ctype: - type: "str" - description: "configuration of LC_CTYPE=" - default: "de_DE.UTF-8" - settings_locales_lc_numeric: - type: "str" - description: "configuration of LC_NUMERIC=" - default: "de_DE.UTF-8" - settings_locales_lc_time: - type: "str" - description: "configuration of LC_TIME=" - default: "de_DE.UTF-8" - settings_locales_lc_collate: - type: "str" - description: "configuration of LC_COLLATE=" - default: "de_DE.UTF-8" - settings_locales_lc_monetary: - type: "str" - description: "configuration of LC_MONETARY=" - default: "de_DE.UTF-8" - settings_locales_lc_messages: - type: "str" - description: "configuration of LC_MESSAGES=" - default: "de_DE.UTF-8" - settings_locales_lc_paper: - type: "str" - description: "configuration of LC_PAPER=" - default: "de_DE.UTF-8" - settings_locales_lc_name: - type: "str" - description: "configuration of LC_NAME=" - default: "de_DE.UTF-8" - settings_locales_lc_address: - type: "str" - description: "configuration of LC_ADDRESS=" - default: "de_DE.UTF-8" - settings_locales_lc_telephone: - type: "str" - description: "configuration of LC_TELEPHONE=" - default: "de_DE.UTF-8" - settings_locales_lc_measurement: - type: "str" - description: "configuration of LC_MEASUREMENT=" - default: "de_DE.UTF-8" - settings_locales_lc_identification: - type: "str" - description: "configuration of LC_IDENTIFICATION=" - default: "de_DE.UTF-8" settings_pw_policy_enabled: type: "bool" description: "Enable password policy" diff --git a/roles/settings/tasks/main.yml b/roles/settings/tasks/main.yml index 24a34224..1c545d41 100644 --- a/roles/settings/tasks/main.yml +++ b/roles/settings/tasks/main.yml @@ -9,7 +9,6 @@ state: "present" with_items: - "{{ settings_pw_quality }}" - - "{{ settings_locale_pkg }}" - "tzdata" - name: "Link localtime" @@ -24,37 +23,6 @@ community.general.timezone: name: "{{ settings_timezone }}" -- name: "Update locale.gen" - become: true - ansible.builtin.lineinfile: - dest: "/etc/locale.gen" - mode: "0644" - regexp: "^#{{ item }}" - line: "{{ item }}" - with_items: "{{ settings_locales }}" - notify: "Run locale-gen" - -- name: "Update locale.conf" - become: true - ansible.builtin.copy: - dest: "/etc/locale.conf" - mode: "0644" - content: | - LANG={{ settings_locales_lang }} - LANGUAGE={{ settings_locales_language }} - LC_CTYPE={{ settings_locales_lc_ctype }} - LC_NUMERIC={{ settings_locales_lc_numeric }} - LC_TIME={{ settings_locales_lc_time }} - LC_COLLATE={{ settings_locales_lc_collate }} - LC_MONETARY={{ settings_locales_lc_monetary }} - LC_MESSAGES={{ settings_locales_lc_messages }} - LC_PAPER={{ settings_locales_lc_paper }} - LC_NAME={{ settings_locales_lc_name }} - LC_ADDRESS={{ settings_locales_lc_address }} - LC_TELEPHONE={{ settings_locales_lc_telephone }} - LC_MEASUREMENT={{ settings_locales_lc_measurement }} - LC_IDENTIFICATION={{ settings_locales_lc_identification }} - - name: "Configure archlinux password policy" become: true ansible.builtin.template: diff --git a/roles/settings/vars/archlinux.yml b/roles/settings/vars/archlinux.yml index 1ad63cbb..cbe08e80 100644 --- a/roles/settings/vars/archlinux.yml +++ b/roles/settings/vars/archlinux.yml @@ -1,3 +1,2 @@ --- settings_pw_quality: "libpwquality" -settings_locale_pkg: "glibc" diff --git a/roles/settings/vars/debian.yml b/roles/settings/vars/debian.yml index 60891320..6767ffd7 100644 --- a/roles/settings/vars/debian.yml +++ b/roles/settings/vars/debian.yml @@ -1,3 +1,2 @@ --- settings_pw_quality: "libpam-pwquality" -settings_locale_pkg: "locales" @@ -11,6 +11,7 @@ tags: ["required_for_boot"] - role: "ssh" tags: ["required_for_boot"] + - role: "locales" - role: "settings" pre_tasks: |
