- 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作为默认设置?为什么?
答案 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