Ansible 在导入的任务中的不同主机上运行任务
呼叫剧本包括:Ansible 在导入的任务中的不同主机上运行任务,ansible,Ansible,呼叫剧本包括: - hosts: ssh_servers tasks: - import_tasks: create_files.yml 然后,在create_files.yml中,我想在ssh_服务器以外的主机上运行一些任务,例如: - Hosts: other_servers tasks: - file: 我得到:错误!冲突的操作语句:主机、任务 这是因为我试图运行的主机从未包含在调用任务中吗? 除了在呼叫手册中,是否有其他方法可以实现这一点: - hosts:
- hosts: ssh_servers
tasks:
- import_tasks: create_files.yml
然后,在create_files.yml中,我想在ssh_服务器以外的主机上运行一些任务,例如:
- Hosts: other_servers
tasks:
- file:
我得到:错误!冲突的操作语句:主机、任务
这是因为我试图运行的主机从未包含在调用任务中吗?
除了在呼叫手册中,是否有其他方法可以实现这一点:
- hosts:
- ssh_servers
- other_servers
tasks:
- import_tasks: create_files.yml
多谢各位
这是因为我试图运行的主机从未包含在调用任务中吗?除了在呼叫手册中,还有其他方法可以实现这一点吗
我相信答案是肯定的,尽管这会很奇怪,并且可能会导致后来与你的剧本互动的人产生一些困惑
假设create_files.yml
为:
-name:create/tmp/hello\u主机上的世界“启动时未知”
文件:
路径:/tmp/hello\u world
国家:现在
委托给:“{{item}”
有以下项:“{groups[“not_known_at_launch_time”]}”
然后把它们连接起来所需要的胶水就是
-主机:ssh\u主机
任务:
-添加\u主机:
组:启动时未知
名称:secret-host-0
ansible#u主机:192.168.1.1#或其他
# ... 这里的其他旅舍。。。
-包括任务:创建文件.yml
可以通过一些共享的vars:
将create_files.yml
中的那些文件组合在一起,这些vars:说明应将哪个主机和ip添加到魔法组名,这也有利于将魔法组名本地化到使用它的文件中
请注意,我确实测试了这个,但没有进行广泛的测试,因此可能会有一些奇怪的事情,比如需要在它们上运行一次:是的
,以防止任务被运行组。ssh\u主机| length
次或类似的东西
正如弗拉基米尔正确指出的那样,你真正想要的是使这种关系正式化:
-主机:ssh\u主机
任务:
... 不管你以前有什么任务
-添加\u主机:。。。和以前一样。。。
-主持人:匿名组名在这里
任务:
-包括任务:创建文件.yml
-主机:ssh\u主机
任务:
-调试:
msg:现在你又回到ssh_主机上,来了解当你停止发布时他们应该做什么
无法嵌套。用例是什么?我担心这是真的,我想当时Ansible的要求太多了。当我把它当作自己的剧本运行时,我开始怀疑。。递归将使复杂性呈指数级。谢谢,这是有意义的。我同意这通常不是一个好主意,我宁愿尝试其他风险较小的解决方案。这更像是对我这一方的绝望尝试,我可能应该避免这样做。