E405 v4.0.0远程软件包任务应重试软件包
操作不可靠,因为它们需要网络通信和远程服务器的可用性。为了减轻潜在的问题,应通过以下寄存器重试:my_result,直到:
my_result |成功
运行
ansible-lint
时出现以下错误:[405] Remote package tasks should have a retry
plays/sample.yml:31
Task/Handler: Install list of packages
给出示例代码:
- name: Install list of packages
apt:
name: [jq, vim, curl, unzip, dnsutils]
state: present
如何解决?
#1 楼
ansible-lint
警告405
在某些情况下可能会非常令人烦恼,例如,在本地运行时,重试不太可能产生任何效果。实际上,解决该问题通常只是添加以下内容的一种情况:register: task_result
until: task_result is success
retries: 10
delay: 2
将其添加到任务中后,Ansible将重试十次,每次重试之间有两秒钟的延迟直到
returncode
是0
。#2 楼
pip install --upgrade ansible-lint>=4.1.0
在https://github.com/ansible/ansible-lint/issues/456
中的讨论之后,规则405已被删除
评论
在我看来,这似乎是一个极其挑剔的规则……在某些情况下,这样做会很不错,但是在现实世界中,我认为我已经在与包装相关的任务上看到了这一点,可能不到1%的时间。这就是为什么我打开405远程打包任务应该重试的原因-太挑剔了?
–geerlingguy
19年1月4日在3:35
我不认为这太挑剔了-我经常发现添加更多行仅仅是为了安抚Ansible-lint,而不是提供价值,这似乎是错误的。默认情况下重试似乎是明智的。
–Richard Slater
19年1月4日在17:44
如果您在部署期间执行了一些数字操作,那么1%就是一个巨大的数字。甚至1/1000也足够高,可以请求重试逻辑。不要忘记乘法系数和失败的代价。
–索林
19年2月4日在15:41