ansible debconf模块无法正确设置默认语言环境

时间:2018-09-20 09:13:49

标签: ansible locale

- name: Generate required locales
  locale_gen: 
name: "{{ item }}"
state: present
  with_items:
  - "fr_FR"
  - "fr_FR.UTF-8"
  - "fr_FR@euro"
  become: yes

- name: rebuild locales database
  command: "{{ item }}"
  with_items:
    - dpkg-reconfigure locales -f noninteractive
    - /usr/sbin/locale-gen
  become: yes

- name: Set defaultt locale to fr_FR.UTF-8
  debconf:
    name: locales
    question: locales/default_environment_locale
    value: fr_FR.UTF-8
    vtype: select
  become: yes

- name: rebuild locales database3
  command: "{{ item }}"
  with_items:
    - dpkg-reconfigure locales -f noninteractive
    - /usr/sbin/locale-gen
  become: yes

2个开头的任务运行良好(如果我这样做:sudo dpkg-reconfigure locales,则选择了我想要的3个fr_FR),但第二部分:ansible表示其工作(已更改),但是如果我这样做:cat / etc /默认/区域设置我仍然将EN作为默认设置?为什么?

2 个答案:

答案 0 :(得分:0)

我没有找到使该模块正常工作的方法,因此我改用locale_gen和fileinline来替换/ etc / default / locale中的默认语言环境。 这不是我要找的答案,但这是一种使任何人遇到或将遇到相同问题的事情都可以解决的方法。

答案 1 :(得分:0)

根据我在locales中可以看到的内容,这个特定的/etc/locale.gen包始终会从/etc/default/locale/var/lib/dpkg/info/locales.config文件中重新读取其配置。

因此,在这种特定情况下,您不能使用debconf模块。相反,您必须首先使用locale_gen模块选择可用的语言环境,然后使用lineinfile上的/etc/default/locale模块选择默认语言环境,最后使用command模块启动dpkg-reconfigure -f noninteractive locales(将依次运行locale-gen命令)以将所有这些信息应用到系统。

debconf配置将相应更新。看起来好像是相反的方式(文件通常是从debconf选择中更新的),但这就是现在的方式。

这是我实际使用的完整解决方案:

vars:
  locales_generated:
    - en_US.UTF-8
    - fr_CA.UTF-8
    - fr_FR.UTF-8
  locales_default: fr_CA.UTF-8

tasks:

- name: select locales to be generated
  locale_gen:
    name: "{{ item }}"
    state: present
  loop: "{{ locales_generated }}"
  notify: reconfigure locales

- name: set default locale
  lineinfile:
    dest: "/etc/default/locale"
    regexp: "^LANG="
    line: "LANG={{ locales_default }}"
  notify: reconfigure locales

handlers:

- name: reconfigure locales
  command: dpkg-reconfigure -f noninteractive locales