Ansible 给出“ansible.utils.display.initialize_locale 尚未被调用”警告

问题描述 投票:0回答:4

我收到此警告

ansible.utils.display.initialize_locale has not been called
,但我找不到修复它的文档。

[WARNING]: ansible.utils.display.initialize_locale has not been called, this may result in incorrectly calculated text widths that can cause Display to print incorrect line lengths

剧本:

- name: Create Docker Swarm Cluster
  hosts: localhost
  connection: local

  vars:
    # Project name to used as part of resource names
    project_name: swarm

    # The location of the Azure resources
    location: eastus

运行它:

ansible-playbook provision.yml

使用

python3 -m venv env
设置环境。

还有ansible版本:

$ ansible --version
ansible [core 2.11.1] 
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/home/pomatti/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /home/pomatti/projects/personal/docker-swarm-cluster-with-ansible/env/lib/python3.8/site-packages/ansible
  ansible collection location = /home/pomatti/.ansible/collections:/usr/share/ansible/collections
  executable location = /home/pomatti/projects/personal/docker-swarm-cluster-with-ansible/env/bin/ansible
  python version = 3.8.5 (default, May 27 2021, 13:30:53) [GCC 9.3.0]
  jinja version = 3.0.1
  libyaml = True
ansible
4个回答
5
投票

在错误显示的 python 文件 display.py 中添加以下函数: /home/user/.local/lib/python3.8/site-packages/ansible/utils/display.py

definitialize_locale(): 返回真


0
投票

在 Ansible 中,有一个文件名为:

/usr/local/lib/*/*/ansible/utils/display.py

这就是

initialize_locale()
函数所在的地方 - 很难判断 Ansible 在哪里调用它,但它只是查看是否找到/初始化了语言环境(带有变量)。如果它无法定义区域设置,则会定义
LOCALE_INITIALIZATION_ERR
(为 true)。稍后有一个条件检查变量,如果为 True,则仅输出 a/烦人的警告。 TBH,而不是进一步挖掘,因为这是 显然这是一个奇怪的错误,他们会在某个时候修复,我刚刚评论过 输出输出警告的函数调用(在两个地方),然后 将其替换为“pass”(不执行任何操作)。有点老套,但有警告 现在消失了。

有趣的是,使用 AWX 时并没有出现警告 在这个控制节点上!


0
投票

当恢复如下时似乎会发生这种情况:

pip install -r requirements

以 ansible 命令以外的其他用户身份运行。 确保两者都以同一用户身份运行,或者以您运行 ansible 的用户身份再次运行 pip 命令。


0
投票

如果有人像我一样也是菜鸟,不明白在哪里粘贴 shivam vishwakarma 行:

  • 打开 lib display.py(或找到它
    whereis display.py
    )在我的例子中,包位于
    /usr/local/lib/python3.10/dist-packages/ansible/utils/display.py
  • 在 display.py 中找到行
    def get_text_width(text: str) -> int:
    并在该行上方粘贴
    def initialize_locale(): return True
© www.soinside.com 2019 - 2024. All rights reserved.