如何将ansible playbook导入到集合中运行

73次阅读
没有评论

问题描述

希望开发一套可在Docker容器中运行的可重用playbook集合。他不想在多个容器中共享重复的代码,也不想让容器运行多个playbook。他想要开发这样一个方案:有一个 playbooks/doit.yml 文件和一个 .ansible/collections/playbooks/x/y/playbooks/thing-to-do.yml playbook,他可以将后者导入到前者中。然而,目前的文档都没有解释如何实现这一点。

解决方案

以下解决方案基于提供的问答数据及已有的知识。如有版本差异,请查阅相关文档以确保正确操作。

使用import_playbook模块导入playbook

最近在ansible的开发分支中合并了一个新功能,允许使用import_playbook模块来导入playbook。你可以按照以下步骤来实现:

  1. 确保你的ansible版本支持这个功能。最好的方式是升级到最新的版本。
  2. 使用import_playbook模块来导入你想要运行的playbook。例如:
    “`yaml
  3. import_playbook: your_collection.playbooks.thing-to-do
    ``
    其中
    your_collection是你的集合名称,playbooks.thing-to-do`是你想要导入的playbook的路径。

注意事项

请注意,根据文档提供的信息,playbook的文件名只能包含字母、数字和下划线。如果你想要在集合中导入playbook,确保文件名符合这个规范。

示例

以下是如何使用import_playbook模块导入playbook的示例:

- name: Run playbook from collection
  hosts: localhost
  tasks:
    - import_playbook: your_collection.playbooks.thing-to-do

在上面的示例中,我们使用import_playbook模块来导入集合中的playbook,然后在任务中调用它。

其他注意事项

如果你在试验过程中遇到问题,可以查看ansible文档中的这个部分,它可能会提供更多有关如何在集合中运行playbook的信息。

总之,通过使用import_playbook模块,你可以将一个playbook从集合中导入并在任务中运行它,从而实现你想要的功能。

注意:以上解决方案基于已有知识及提供的问答数据,如果遇到版本差异或操作不成功,请参考官方文档或其他可靠资源,以确保正确操作。

正文完