我创建了一个角色,我在其中定义了所有合理的任务。另外,我在库存中有主机A和主机B.是否有可能在主机A上执行90%的任务,在主机B上执行10%的任务?我的Ansible控制器是主机C.在不同的主机上执行Ansible任务
回答
我认为这样做的第一种方法是基于库存的条件。
在清单中为创建一个组,并为B.一组,我会调用这些group_A和group_B
# inventory
[group_A]
192.168.1.20
[group_B]
192.168.1.30
然后使用条件上你的任务
- name: run this on A
debug: msg="this runs only on A
when: "'group_A' in {{group_names}}"
- name: run this on B
debug: msg="this runs only on B
when: "'group_B' in {{group_names}}"
根据有多少任务你有,对每个任务都附加条件可能太多了,所以你可以在包含条件上使用,如下所示:
文件结构:
-tasks
|- main.yml
|- A_tasks.yml
|- B_tasks.yml
main.yml:
- include: A_tasks.yml
when: "'group_A' in {{group_names}}"
- include: B_tasks.yml
when: "'group_B' in {{group_names}}"
A_tasks.yml:
- name: run on A
debug: msg="this only runs on A"
B_tasks.yml:
- name: run on B
debug: msg="this only runs on B"
这可能在旧版本的Ansible中正常工作,但至少从版本2.4.2.0开始,条件应该是'when:'group_names“'中的'group_A'。 –
如果你正在分裂的所有任务在一个两个不同主机之间的角色,那么这两个主机都没有这个角色,是吗?我想说,当你真的有两个角色时,将所有这些任务集中到一个角色中,这是对角色系统的滥用。
如果您有多台主机As,会发生什么情况?怎么样多个主机Bs?
在我看来,你实际上并不想在这里使用角色 - 你只想使用普通的ol剧本。
- hosts: A
tasks:
[...]
- hosts: B
tasks:
[...]
剧本是按照特定的顺序定义了一系列的行动,而你的“做B本的东西做这个东西之后只A”是。
我倾向于同意,但理论上您可以设计一个用于设置Hadoop集群的角色,并且您需要在主服务器和从服务器上运行不同的任务。这超出了配置管理到基础架构部署,但它在Ansible中得到了支持。 – smiller171
- 1. Ansible在不同的主机上执行每个角色
- 2. 在“server_1”或“server_2”以外的主机上运行Ansible任务
- 3. Bamboo在不同的机器上执行任务
- 4. Ansible Tower:在不同的服务器上执行剧本
- 5. Ansible playbook>如何执行与不同主机不同的角色
- 6. 在一个剧本中执行多主机上的任务
- 7. 是否有可能在不同主机的playbbok中执行每个任务?
- 8. 上的特定主机组运行ansible
- 9. 试图使用ansible执行任务
- 10. Can Capistrano可以连续执行主机上的任务吗?
- 11. 运行在EC2上instanse ansible任务
- 12. Ansible - 以with_together方式对主机运行任务
- 13. 从Ansible配置的Ansible任务可以在没有SSH的远程主机上运行?
- 14. 使用Ansible主机引发`--limit`不匹配任何主机
- 15. Ansible任务已授权的主机上运行的问题时,文件名匹配的主机名
- 16. Ansible:我如何在不同的主机上部署并行角色
- 17. 不同的执行任务的方式
- 18. 对主机组运行Ansible
- 19. 在iOS中的不同线程上执行后台任务
- 20. Ansible不同的主机,不同的动作
- 21. 装载机不执行任务异步
- 22. 在Windows上的本地主机上运行Ansible-Playbook
- 23. Pentaho的 - 执行不同的主机上simultaneouslyl存储过程
- 24. Ansible使用当前主机的任务作为变量
- 25. Ansible如何比较同一任务中多个主机的输出
- 26. 如何在至少一个主机上成功完成Ansible任务
- 27. Ansible剧本:在不同的主机上在同组同一任务的多次运行后注册变量的值
- 28. 动态gradle复制任务不执行任务主体
- 29. 在MapReduce中,如何在多台机器上执行相同的reduce任务?
- 30. 同步grunt.js任务执行
对于主机A而言,90%的任务和主机B上的10个任务意味着什么? – shaps
我在主机A上部署堆栈,我想在主机B上执行配置后脚本。这些脚本应该从可控制器(主机C)或从主机A到主机B,但我不确定如何实现。 – tgcloud
但是,我设法通过提取主机C并使用“delegate_to”来在主机B上执行scp来推送脚本,但无法执行这些脚本。 – tgcloud