在我的Ansible剧本中,我有一个嵌套变量声明,如下所示,在一个变量文件中。
repo:
branch: int
url: git@github:user/repo.git
dest: "/var/code"我怎么才能在额外的范围内推翻分支系统呢?我在下面试过这样的方法,但没有用。
--extra-vars "repo.branch=exec_refactor"这两件事
--extra-vars "repo[branch]=exec_refactor"像下面这样使用JSON表示会导致覆盖整个repo节点,因此repo.branch被成功覆盖,但是repo.url和repo.dest都没有定义。
--extra-vars '{"repo":{"branch":"exec_refactor"}}'发布于 2015-07-31 06:08:08
要合并dicts,需要在hash_behaviour=merge中设置ansible.cfg。但是不建议这样做,因为您在Ansible上找到的几乎所有角色都期望缺省值replace,并且可能会疯狂运行。
见文档中的hash_behaviour。
我曾经遇到过类似的问题,并编写了一个动作插件来解决这个问题:合并。对于您的问题,它不是开箱即用的解决方案,因为Ansible在任何情况下都会用--extra-vars中的一个覆盖dict,并使用我的插件,您将再次重写在--extra-vars中传递的单个值。但是,修改插件并只添加新值而不是重写值应该不会太难。我认为include_vars_merged.py中第34行和第40行中的切换参数应该已经做到了。
https://stackoverflow.com/questions/31738708
复制相似问题