ansible集合-集合级别变量

ansible集合-集合级别变量,ansible,ansible-collections,Ansible,Ansible Collections,是否有一种方法可以在集合级别提供变量。这样集合中的所有角色都可以访问变量 示例用例:一个公司具有多个角色的集合。 许多角色需要默认的网络存储位置 可能的解决办法: 拥有集合中所有其他角色都依赖的角色,该角色调用set\u fact 以事实为依据 为什么设置事实?一个default\u vars\u only角色作为依赖项添加到一个vars/main.yml文件中,应该可以完成这个任务。如果您需要这些变量更具可重写性,那么可以使用defaults/main.yml。您是对的,这甚至更好。最好的(也

是否有一种方法可以在集合级别提供变量。这样集合中的所有角色都可以访问变量

示例用例:一个公司具有多个角色的集合。 许多角色需要默认的网络存储位置

可能的解决办法

  • 拥有集合中所有其他角色都依赖的角色,该角色调用
    set\u fact
  • 以事实为依据

  • 为什么设置事实?一个
    default\u vars\u only
    角色作为依赖项添加到一个
    vars/main.yml
    文件中,应该可以完成这个任务。如果您需要这些变量更具可重写性,那么可以使用
    defaults/main.yml
    。您是对的,这甚至更好。最好的(也是最明确的)方法是使用一些集合级变量。请注意,在
    playbook
    文件夹的顶层可以有一个
    vars
    文件夹。根据您的具体要求,这可能也适合您的需要:是的,我已经看到了,谢谢。问题是playbooks目录中没有文档。不清楚。如果运行不在此集合中的剧本,则导入变量2。如果打算这样做(甚至不清楚如何从集合中运行剧本)1。与剧本相邻的vars dir中的文件不会自动导入。但是dir被添加到搜索路径中,这样可以简化编写,比如播放级别的
    vars\u文件:[a.yml,b.yml]
    ,或者任务级别的
    [import\u vars:{path:somefile.yml}]
    。集合中剧本目录中的变量目录也不例外。见第2条。集合中的playbook可以从任何其他位置运行/包括。我不确定他们有什么特别的。对于任何automagic,请使用角色依赖项IMHO