首页 > 解决方案 > 如何使 Ansible Shell 任务具有幂等性?

问题描述

我正在接管一个用于部署和升级应用程序的 ansible playbook。

由于 shell 任务、sql、依赖项等原因,playbook 需要数小时才能运行,并且在多个地方不是幂等的。

我有标签来限制剧本的某些部分,但我希望有一种方法可以使每个任务都具有幂等性。
例如

- name: Add release application config
  become: yes  
  shell: "./applicationConfig.sh"
  tags: upgrade

- name: Add release database config
  become: yes  
  shell: "./databaseConfig.sh"
  tags: upgrade

是否可以在任务成功时执行诸如创建文件之类的操作,并且仅在文件不存在时才重新运行它/将其标记为已更改?

最重要的是,是否有可能在一个地方执行此操作,并将其应用于每个游戏中的所有任务,以减少每个任务中的重复和混乱?

标签: ansible

解决方案


推荐阅读