我收到此警告
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
在错误显示的 python 文件 display.py 中添加以下函数: /home/user/.local/lib/python3.8/site-packages/ansible/utils/display.py
definitialize_locale(): 返回真
在 Ansible 中,有一个文件名为:
/usr/local/lib/*/*/ansible/utils/display.py
这就是
initialize_locale()
函数所在的地方 - 很难判断 Ansible 在哪里调用它,但它只是查看是否找到/初始化了语言环境(带有变量)。如果它无法定义区域设置,则会定义 LOCALE_INITIALIZATION_ERR
(为 true)。稍后有一个条件检查变量,如果为 True,则仅输出
a/烦人的警告。 TBH,而不是进一步挖掘,因为这是
显然这是一个奇怪的错误,他们会在某个时候修复,我刚刚评论过
输出输出警告的函数调用(在两个地方),然后
将其替换为“pass”(不执行任何操作)。有点老套,但有警告
现在消失了。
有趣的是,使用 AWX 时并没有出现警告 在这个控制节点上!
当恢复如下时似乎会发生这种情况:
pip install -r requirements
以 ansible 命令以外的其他用户身份运行。 确保两者都以同一用户身份运行,或者以您运行 ansible 的用户身份再次运行 pip 命令。
如果有人像我一样也是菜鸟,不明白在哪里粘贴 shivam vishwakarma 行:
whereis display.py
)在我的例子中,包位于 /usr/local/lib/python3.10/dist-packages/ansible/utils/display.py
def get_text_width(text: str) -> int:
并在该行上方粘贴 def initialize_locale(): return True