Eu tenho o seguinte loop. Estou tentando obter o servidor atual de uma lista de servidores:
- name: "Checking LB status"
loop: "{{ lb_response.json.load_balancer.targets }}"
when: "item.server.id | string == server_id.content"
register: current_lb_status
No entanto, isso dá o seguinte erro:
ERROR! no module/action detected in task.
The offending line appears to be:
- name: "Checking LB status"
^ here
No meu caso, não quero realizar nenhuma ação quando encontrar este item. Eu só quero registrar o resultado.
(Na verdade, estou tentando escrever um manual que execute essa ação, em loop, até que não current_lb_status
seja saudável. Portanto, se não estiver no caminho certo, estou interessado no feedback!)
set_fact
é o módulo para registrar uma variável.Então, você poderia fazer algo como:
Um loop, aqui, seria um exagero, já que você poderia acessá-lo imediatamente, usando o
selectattr
filter .Então, registrando de uma só vez:
Observação lateral : você não nos informou qual provedor de nuvem está usando, mas é provável que já exista um módulo para fazer o que você procura:
community.aws.elb_classic_lb_info
azure.azcollection.azure_rm_loadbalancer
google.cloud.gcp_compute_backend_service module
/google.cloud.gcp_compute_forwarding_rule module
E para o seu objetivo real, o
until
loop pode muito bem ser incorporado na chamada do módulo que fornece informações sobre seus balanceadores de carga: