Locale Ansible Role¶
Manage system locale on Debian-based systems using only built-in modules:
- Generate required locales by editing
/etc/locale.genand runninglocale-gen - Set the default system locale by ensuring
/etc/default/localecontains LANG and optional LC_* pairs
Installation (role)¶
roles:
- name: locale
src: https://gitlab.com/niclas-zone/tools/ansible/roles/locale.git
version: 1.0.0
scm: git
Role Variables¶
| Variable | Default | Type | Description |
|---|---|---|---|
locale_lang |
de_CH.UTF-8 |
string | Default LANG to set |
locale_environment |
see defaults | dict | Extra LC_* pairs to set (e.g., LC_TIME, etc.). Empty values are ignored. |
locale_generate |
[locale_lang] |
list | Locales to generate (e.g., de_CH.UTF-8, en_US.UTF-8) |
locale_default_charset |
UTF-8 |
string | Charset appended in /etc/locale.gen when not present in the locale string |
Notes:
- For
/etc/locale.gen, the role writes lines likede_CH.UTF-8 UTF-8. If a locale inlocale_generatealready includes a charset (e.g.,de_CH.ISO-8859-1), that charset is used; otherwiselocale_default_charsetis applied. /etc/default/localelines are written asKEY="VALUE".
Example Playbooks¶
Basic (Swiss German)¶
Custom locale¶
- hosts: servers
become: true
roles:
- role: locale
vars:
locale_lang: "en_GB.UTF-8"
locale_environment:
LC_TIME: "en_GB.UTF-8"
locale_generate:
- "en_GB.UTF-8"
- "de_CH.UTF-8"
British English language, Swiss German LC_*¶
- hosts: servers
become: true
roles:
- role: locale
vars:
locale_lang: "en_GB.UTF-8"
locale_environment:
LC_TIME: "de_CH.UTF-8"
LC_NUMERIC: "de_CH.UTF-8"
LC_MONETARY: "de_CH.UTF-8"
LC_PAPER: "de_CH.UTF-8"
LC_MEASUREMENT: "de_CH.UTF-8"
locale_generate:
- "en_GB.UTF-8"
- "de_CH.UTF-8"
Note: Keyboard layout is not managed by locales; configure it separately (e.g., console-setup or XKB).