📅  最后修改于: 2023-12-03 14:39:15.150000             🧑  作者: Mango
Ansible 是一款自动化IT工具,它能够自动化部署、配置、管理IT环境。在使用 Ansible 时,你可能会遇到一个问题:Ansible 总是在最后运行任务。
"Ansible 总是在最后运行任务"是指,当 Ansible 执行任务时,无论你指定的任务顺序是什么,Ansible 都会最后运行一个 Shell/Bash 任务。这个任务通常被称为 "Gathering Facts" 任务。它会收集有关目标远程主机的信息,并将其返回给 Ansible。
"Ansible 总是在最后运行任务"的原因是 Ansible 的执行模型。Ansible 采用模块化设计,每个任务都由一个模块来执行。当你运行一个任务时,Ansible 首先会加载要使用的模块,并将其传递给目标主机。在传递模块之前,Ansible 首先需要收集一些有关目标主机的信息,这就是 "Gathering Facts" 任务要做的事情。因此,这个任务总是运行在最后。
如果你不希望 Ansible 运行 "Gathering Facts" 任务,可以采取以下两种方法:
你可以在使用 ansible
命令时使用 -f
参数指定 0
,来禁用 "Gathering Facts" 任务,例如:
ansible -i inventory.ini -m ping all -f 0
这个命令将不会运行 "Gathering Facts" 任务。
如果你想在 playbook 中禁用 "Gathering Facts" 任务,可以在 playbook 中设置 gather_facts
参数为 no
,例如:
- name: Example playbook
hosts: all
gather_facts: no
tasks:
- name: Task 1
debug:
msg: "Hello World!"
这个 playbook 不会运行 "Gathering Facts" 任务。
"Ansible 总是在最后运行任务"可以说是 Ansible 的一个特征,是由于其模块化执行模型所致。如果你想禁用 "Gathering Facts" 任务,可以使用命令行参数或在 playbook 中设置 gather_facts
参数为 no
。