运行 单个主机上的任务总是使用 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
我正在编写一个从特定位置下载数据库转储的任务。在同一台主机上它将始终是 运行。
所以我在主剧本中包括了如下任务:
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