将一个剧本导入到另一个剧本中,而无需定义主机

将一个剧本导入到另一个剧本中,而无需定义主机

我正在尝试使用 Ansible 创建一个剧本,其中包含不同的剧本作为其任务之一。

澄清一下,该剧本旨在部署 Linux 服务器,其中步骤之一是克隆 git 存储库。

导入它时(我尝试使用import_tasksinclude_tasksimport_playbookinclude_playbook),Ansible 返回以下错误:

ERROR! conflicting action statements: hosts, gather_facts

果然,当我编辑 git playbook 并远程该hosts语句时,导入工作没有问题。

然而,git 克隆也意味着独立运行(以保持所述存储库同步),因此hosts也必须包含该指令。

我本质上正在寻找一种导入剧本任务的方法,使用导入剧本的主机而不是导入剧本的主机。

我可以简单地从 git playbook 中删除主机指令并通过其他一些 playbook 调用它,但我想知道是否有更简单的方法,或者也许我只是缺少正确的语法。

有没有一种简单的方法可以在没有主机的情况下导入剧本的任务?

谢谢!

答案1

hosts:并且gather_facts:只能存在于剧的最顶层。

你应该

  1. 将您的剧本编写为连接到目标服务器的角色
  2. 删除冲突的语句并delegate_to:在包含剧本任务时使用。

相关内容