运行 单个主机上的任务总是使用 Ansible?

Running a task on a single host always with Ansible?

我正在编写一个从特定位置下载数据库转储的任务。在同一台主机上它将始终是 运行。

所以我在主剧本中包括了如下任务:

tasks:
  include: tasks/dl-db.yml

任务内容为:

---
   - name: Fetch the Database
     fetch: src=/home/ubuntu/mydb.sql.gz dest=/tmp/mydb.sql.bz fail_on_missing=yes

但我希望它从单个特定主机而不是所有主机获取。

任务是正确的方法吗?

如果您只需要 运行 一次而不是在每个主机上发生,您可以像这样使用 run_once

---
   - name: Fetch the Database
     run_once: true
     fetch: src=/home/ubuntu/mydb.sql.gz dest=/tmp/mydb.sql.bz fail_on_missing=yes

这将是 运行 来自第一个 运行 任务的主机。如果您想专门针对特定主机,可以使用 delegate_to 进一步限制:

---
   - name: Fetch the Database
     run_once: true
     delegate_to: node1
     fetch: src=/home/ubuntu/mydb.sql.gz dest=/tmp/mydb.sql.bz fail_on_missing=yes