Advertisement

通过实例学习Ansible系列(19)中正确使用drop-if-exist命令

阅读量:

在编程世界中,数据库建表过程最常被用来作为drop-if-exist函数的应用案例。

在实际操作中,默认情况下若删除已存在的对象可能引发错误
比如说在创建数据库实例时
首先会删除原有表
然后创建新的数据库
这种行为与其说是一种具体的命令使用
与其说是一种特定的操作方式
其实更接近于ansible提供的幂等性操作
不管原表是否存在
用户只需关注最终的目标状态即可

但在实际运行过程中会遇到一个问题:
当第一次执行该命令时
若原表不存在会导致"删除不存在对象"的操作异常出现

因此这种情况下就需要谨慎处理了

这种机制不仅适用于数据库操作
同样适用于kubernetes中的namespace、clusterrolebinding等命名空间配置

使用示例

比如以下这种方式就是一个典型的clusterrolebinding实现:首先执行删除操作后再进行创建操作。具体原因在于,在没有预先执行删除操作的情况下(即在已有clusterrolebinding存在时),创建操作将无法成功完成。然而,在首次运行或运行环境中当前未有clusterrolebinding存在的情况下,则会导致删除任务出现错误;不过通过配置ignore_errors参数则可同时处理这两种情况

复制代码
    - name: delete clus

全部评论 (0)

还没有任何评论哟~