始终使用Ansible在单个主机上运行任务?

时间:2015-10-10 09:04:21

标签: ansible ansible-playbook

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

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

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

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

这项任务是否正确?

1 个答案:

答案 0 :(得分:4)

如果你需要发生的只是它只运行一次而不是每个主机,你可以改为使用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