在Ansible Playbook 中,有时候会出现任务执行两次的情况,这可能会导致程序出现异常或不必要的重复操作。
造成问题的原因通常是由于在 Playbook 中,同一任务被定义了多次或者是多次引用了同一个角色。为了解决这个问题,需要定位到出现问题的 Playbook 和任务,并对其进行逐一排查。
以下是一些可能有帮助的解决方案:
检查 Playbook 文件中的任务,确保同一个任务没有被定义了多次;
检查引用的角色中是否存在重复的任务定义;
在 Playbook 的执行过程中加入 debug 等 log 语句,观察任务执行的情况,从而排除问题。
下面是一个代码示例,可以通过名为 “roles/common/tasks/main.yml” 的文件中,引用 roles 中其它目录的任务:
- import_tasks: '../other_role/tasks/main.yml'
- name: Install common dependencies
package:
name: "{{ item }}"
state: installed
with_items:
- python
- python-virtualenv