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将重试十次,每次重试之间有两秒钟的延迟直到returncode0

评论


在我看来,这似乎是一个极其挑剔的规则……在某些情况下,这样做会很不错,但是在现实世界中,我认为我已经在与包装相关的任务上看到了这一点,可能不到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

#2 楼

pip install --upgrade ansible-lint>=4.1.0


在https://github.com/ansible/ansible-lint/issues/456
中的讨论之后,规则405已被删除