可以循环直到结果不为空

Ansible to loop until result is not empty

我正在尝试创建一个简单的 Ansible 脚本,该脚本循环执行一个命令,直到它 return 成为一个 IP。这是我的

- name: Get Shipa API address
  shell: kubectl --namespace=shipa-system get svc shipa-ingress-nginx -o jsonpath="{.status.loadBalancer.ingress[0].ip}"
  environment:
    TERM: dumb      
  register: shipa_api 
  until: shipa_api.stdout | lenght > 3
  retries: 5
  delay: 90

- set_fact:
    shipa_apiaddr: '{{ shipa_api.stdout | trim }}' 

这肯定行不通,需要注意的一点是上面的命令可能 return 一个简单的 % 当它为空时,所以我需要确保 Ansible 只移动到有真实IP或超过X个字符时的下一个任务

我该怎么做?非常感谢任何帮助

为此有一个名为 ipaddr 的过滤器。

所以你可以去:

- name: Get Shipa API address
  shell: kubectl --namespace=shipa-system get svc shipa-ingress-nginx -o jsonpath="{.status.loadBalancer.ingress[0].ip}"
  environment:
    TERM: dumb      
  register: shipa_api 
  until: shipa_api.stdout | ipaddr
  retries: 5
  delay: 90