summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAhmed Abdelhalim <[email protected]>2025-08-11 00:32:07 +0200
committerAhmed Abdelhalim <[email protected]>2025-08-11 00:32:07 +0200
commitac7bb521873b59feb43303b4b1d46c37d16ad8b0 (patch)
tree796a4879c1a925908dd03130dec1320060795b72
parent93326d8c042101c59b969f57b4b9989e3ab7aaeb (diff)
Refactor: move the locales into its own role
-rw-r--r--molecule/default/converge.yml3
-rw-r--r--roles/locales/README.md27
-rw-r--r--roles/locales/defaults/main.yml18
-rw-r--r--roles/locales/handlers/main.yml (renamed from roles/settings/handlers/main.yml)0
-rw-r--r--roles/locales/meta/argument_specs.yml65
-rw-r--r--roles/locales/meta/main.yml19
-rw-r--r--roles/locales/tasks/main.yml40
-rw-r--r--roles/locales/vars/archlinux.yml2
-rw-r--r--roles/locales/vars/debian.yml2
-rw-r--r--roles/settings/README.md19
-rw-r--r--roles/settings/defaults/main.yml18
-rw-r--r--roles/settings/meta/argument_specs.yml61
-rw-r--r--roles/settings/tasks/main.yml32
-rw-r--r--roles/settings/vars/archlinux.yml1
-rw-r--r--roles/settings/vars/debian.yml1
-rw-r--r--site.yml1
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"
diff --git a/site.yml b/site.yml
index 9b03e6df..bd3742a4 100644
--- a/site.yml
+++ b/site.yml
@@ -11,6 +11,7 @@
tags: ["required_for_boot"]
- role: "ssh"
tags: ["required_for_boot"]
+ - role: "locales"
- role: "settings"
pre_tasks: