Como resolver “E405: Tarefas remotas de pacotes devem ter uma nova tentativa” no Ansible?


7

E405 v4.0.0 tarefas pacote remoto deve ter uma nova tentativa operações do pacote não são confiáveis como eles exigem a comunicação de rede e da disponibilidade de servidores remotos. Para mitigar os problemas em potencial, tentativas devem ser usadas via registrador: my_result e até: my_result | sucesso

Isso aparece ao executar ansible-lintcomo o seguinte erro:

[405] Remote package tasks should have a retry
plays/sample.yml:31
Task/Handler: Install list of packages

Dado o código de exemplo:

- name: Install list of packages
  apt:
    name: [jq, vim, curl, unzip, dnsutils]
    state: present

Como resolver isso?

Respostas:


8

ansible-linto aviso 405pode ser bastante irritante, como em certos casos, ou seja, ao executar a nova tentativa local, é muito improvável que faça alguma diferença. Na verdade, resolvê-lo normalmente é apenas um caso de adicionar o seguinte:

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

Quando isso é adicionado à tarefa, o Ansible tentará novamente dez vezes, com um atraso de dois segundos entre cada nova tentativa até que returncodeseja 0.


2
Parece uma regra extremamente cuidadosa para mim ... há alguns casos em que isso seria bom, mas no mundo real acho que já vi isso em tarefas relacionadas a pacotes, talvez <1% das vezes. É por isso que abri 405 as tarefas de pacotes remotos que devem ser repetidas - muito exigentes?
precisa saber é o seguinte

Eu não acho muito exigente - acho que, mais frequentemente, adiciono linhas extras apenas para apaziguar o Ansible-fiapo, em vez de agregar valor, isso parece errado. Repetir por padrão parece sensato.
Richard Slater

1% é um número enorme se você fizer as operações de número realizadas durante uma implantação. Mesmo 1/1000 seria alto o suficiente para solicitar uma lógica de nova tentativa. Não esqueça o fator de multiplicação e o custo de uma falha.
sorin

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.