实例学习Ansible系列(20)retry + sleep的常见写法
发布日期:2021-06-30 20:16:05 浏览次数:2 分类:技术文章

本文共 1639 字,大约阅读时间需要 5 分钟。

一定时间间隔内多次重试是脚本书写中的常见场景,一般就是循环+sleep,这篇文章以kubernetes的证书签名请求自动批准为例介绍一下这种常见的写法。

手动证书签名请求批准

  • 使用kubectl get csr获取当前的证书签名请求
[root@host132 ansible]# kubectl get csrNAME        AGE   REQUESTOR                     CONDITIONcsr-4mnvj   12m   kubelet-bootstrap             Approved,Issuedcsr-b9mmc   12m   kubelet-bootstrap             Pendingcsr-z2hrz   12m   system:node:192.168.163.133   Pending[root@host132 ansible]#
  • 对pending中的请求进行approve动作
[root@host132 ansible]# kubectl certificate approve csr-b9mmccertificatesigningrequest.certificates.k8s.io/csr-b9mmc approved[root@host132 ansible]# kubectl get csrNAME        AGE   REQUESTOR                     CONDITIONcsr-4mnvj   14m   kubelet-bootstrap             Approved,Issuedcsr-b9mmc   14m   kubelet-bootstrap             Approved,Issuedcsr-mz4bb   4s    system:node:192.168.163.132   Pendingcsr-z2hrz   14m   system:node:192.168.163.133   Pending[root@host132 ansible]#

retry + sleep

- name: wait for kubelet csr requestor  shell: "kubectl get csr | grep kubelet-bootstrap |grep Pending"  register: csr_status  until: '"Pending" in csr_status.stdout'  retries: "{
{ var_retry_max }}" delay: "{
{ var_delay_cnt }}" tags: - "csr-approve"- name: auto approve kubelet csr requestor shell: "csr_name=`kubectl get csr | grep kubelet-bootstrap |grep Pending|grep -v grep |head -n1 |awk '{print $1}'` \ && kubectl certificate approve ${csr_name}" register: approve_status until: '"approved" in approve_status.stdout' retries: "{
{ var_retry_max }}" delay: "{
{ var_delay_cnt }}" tags: - "csr-approve"

总结

可以看到上述的写法基本上已经没有新的知识点,就像前面提到的drop-if-exist的写法那样都是在Ansible的脚本中常见的写法。

转载地址:https://liumiaocn.blog.csdn.net/article/details/103708513 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:实例学习Ansible系列(21)从标准输出获取循环的列表
下一篇:实例学习Ansible系列(19)drop-if-exist不出错的写法

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年04月14日 06时08分30秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章