Ansibleで「E405:リモートパッケージタスクには再試行が必要」を解決する方法


7

E405 v4.0.0リモートパッケージタスクには再試行が必要ですパッケージ操作はネットワーク通信とリモートサーバーの可用性を必要とするため、信頼できません。潜在的な問題を軽減するために、再試行はregister:my_resultおよびuntil: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

これを解決するには?

回答:


8

ansible-lint警告405は特定の場合のように非常に苛立たしい場合があります。つまり、ローカルで実行している場合、再試行しても違いはほとんどありません。実際にそれを解決するのは、通常、以下を追加する場合にすぎません。

register: task_result
until: task_result is success
retries: 10
delay: 2

これがタスクに追加されると、Ansibleは10回再試行します。再試行の間隔は2秒returncodeです0


2
私にとっては非常に厄介なルールのようです...これがいい場合もあるかもしれませんが、現実の世界では、おそらくパッケージ関連のタスクでこれを1%未満で見たと思います。405のリモートパッケージタスクを
geerlingguy

私はそれがあまりにもうるさいというわけではないと思います-価値を提供するためではなく、Ansible-lintをなだめるためだけに余分な行を追加することがよくありますが、これは間違っているようです。デフォルトで再試行するのが賢明なようです。
Richard Slater

1%は、展開中に実行される分子操作の場合、非常に大きな数字です。1/1000でも、再試行ロジックを要求するのに十分な高さになります。倍率と失敗のコストを忘れないでください。
ソリン

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.