web-dev-qa-db-fra.com

Comment générer et définir les paramètres régionaux en utilisant ansible?

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.

7
mniess

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'
5
rfgamaral

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
5
mniess