实例学习Ansible系列(19)drop-if-exist不出错的写法

本文介绍了如何在Ansible中实现drop-if-exist的幂等性操作,以确保任务执行的正确性。通过提供一个数据库建表的示例,阐述了drop-if-exist的必要性和可能出现的问题。文中详细展示了如何结合`ignore_errors`和逻辑运算符避免首次执行时的错误,提出了一种改进的脚本写法,以确保在数据库表、Kubernetes资源等场景下,任务能够稳定运行。
摘要由CSDN通过智能技术生成

在脚本的世界里,数据库建表过程是最为常见的drop-if-exist的使用示例,

drop-if-exist的使用场景
以数据库建表为例,无论事前存在与否都首先要Drop(删除原有表),然后创建新的表。实际上跟Ansible中的幂等性的原则基本上是一致的,无论是之前表存在还是不存在,用户所关心的是这个task执行之后表的存在。但是问题在于如果在于首次执行表不存在的时候会出现删除出错,然后需要用户自行判断原因是否还有其他可能,所以drop if exist的写法就是为了判断是否之前是否存在此表,这种方式在很多情况下都存在,比如创建database、tablespace,以及kubernetes中的namespace、clusterrolebinding等。

使用示例

比如如下写法就是一个clusterrolebinding的典型写法,先删除,然后再创建。原因就是如果不先删除,如果事前此clusterrolebinding存在的话就会无法创建。但是如果首次执行或者执行时不存在clusterrolebinding,删除的任务就会失败,但是结合ignore_errors的写法至少能够对应clusterrolebinding存在和不存在的两种情况。

- name: delete clusterrolebinding
  shell: "kubectl delete clusterrolebinding {
  { var_kubeconfig_client_kubelet }}"
  ignore_errors: true

- name: create clusterrolebinding
  shell: "kubectl create clusterrolebinding {
  { var
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值