我在一个角色/测试/任务中有一个main.YAML文件。即/roles/test/tasks/main.yaml。在main.yaml中,我定义了多个任务,并希望在多个主机上运行这些任务。说-前两个任务应该在hostA上运行,接下来的两个任务应该在hostB上运行,依此类推...我该怎么做..?
我尝试过为角色中的多个任务分配标签,然后在主剧本中调用它们:
- hosts: A
tags:
- master
role:
test
- hosts: B
tags:
- slave
role:
test
但是在角色中定义的任务正在所有主机而不是指定主机上运行。
我正在跑步:ansible-playbook -i hosts mail.yaml
请帮助!!!
答案 0 :(得分:0)
Q:“前两个任务应在主机A上运行,下两个任务应在主机B上运行,依此类推。”
A:在main.yml中有几个任务
$ cat roles/test/tasks/main.yaml
- debug:
msg: Task1
tags: t1
- debug:
msg: Task2
tags: t2
- debug:
msg: Task3
tags: t3
- debug:
msg: Task4
tags: t4
此剧本应运行“主机A上的前两个任务”
$ cat playbookA.yml
- hosts: A
roles:
- test
$ ansible-playbook playbookA.yml -t t1,t2
此剧本应运行“主机B上的下两个任务”
$ cat playbookB.yml
- hosts: B
roles:
- test
$ ansible-playbook playbookB.yml -t t3,t4
问:“我不想在运行剧本时使用标签标记。还有其他方法吗?”
A:不。“ ansible-playbook”没有其他方法。
-t, --tags only run plays and tasks tagged with these values
$ ansible-playbook playbookB.yml -t t3,t4
$ export ANSIBLE_RUN_TAGS='t3,t4'
$ ansible-playbook playbookB.yml
-标记一个,两个--skip-标记三个-u ansible-成为