Je suis à la recherche d'un rôle/d'une tâche idempotent ansible pour garantir qu'une certaine locale (comme en_US.UTF-8) est définie par défaut. Il doit générer les paramètres régionaux (uniquement si nécessaire) et les définir par défaut (également uniquement si nécessaire).
Pour la première partie, j'enregistrais la sortie de locale -a | grep "{{ locale_name }}"
et générer si nécessaire.
Pour la deuxième partie, je me demande si l'exécution de update-locale à chaque fois est assez bonne car cette commande elle-même est de toute façon idempotente.
La commande localectl
de @mniess answer sera toujours signalée comme "modifiée" même si les nouvelles valeurs sont égales aux valeurs actuelles. Voici ce que j'ai fini par définir à la fois LANG
et LANGUAGE
et résoudre ce problème:
- name: Ensure localisation files for '{{ config_system_locale }}' are available
locale_gen:
name: "{{ config_system_locale }}"
state: present
- name: Ensure localisation files for '{{ config_system_language }}' are available
locale_gen:
name: "{{ config_system_language }}"
state: present
- name: Get current locale and language configuration
command: localectl status
register: locale_status
changed_when: false
- name: Parse 'LANG' from current locale and language configuration
set_fact:
locale_lang: "{{ locale_status.stdout | regex_search('LANG=([^\n]+)', '\\1') | first }}"
- name: Parse 'LANGUAGE' from current locale and language configuration
set_fact:
locale_language: "{{ locale_status.stdout | regex_search('LANGUAGE=([^\n]+)', '\\1') | default([locale_lang], true) | first }}"
- name: Configure locale to '{{ config_system_locale }}' and language to '{{ config_system_language }}'
command: localectl set-locale LANG={{ config_system_locale }} LANGUAGE={{ config_system_language }}
changed_when: locale_lang != config_system_locale or locale_language != config_system_language
Aussi, c'est ce que j'ai chez group_vars/main.yml
:
config_system_locale: 'pt_PT.UTF-8'
config_system_language: 'en_US.UTF-8'
Voici ce que j'ai fini avec:
- name: Ensure the locale exists
locale_gen:
name: en_US.UTF-8
state: present
- name: set as default locale
command: localectl set-locale LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8