2016-08-04 69 views
0

我正在尝试制作一个可调用的动态滚动手册。现在,Ansible本身并不支持这个功能,所以我想我可以用一些Jinja2模板规避这个问题......但是我甚至都不知道如何真正做到这一点。所以我们可以说我有一个变量的角色列表Ansible - 将Jinja 2用于动态角色

role_vars: 
    - role1 
    - role2 
    - role3 

我的模板:

- hosts: localhost 
    roles: > 
    {%- for name in role_vars %} 
    {{- '- ' + name + '\n ' -}} 
    {%- endfor %} 

我认为它应该产生这样的:

- hosts: localhost 
    roles: 
    - role1 
    - role2 
    - role3 

,但我可以不能让它工作。那么我怎么样?它甚至有可能吗?

回答

0

您已经放置了太多的修剪修饰符。试试这个:
模板:

- hosts: localhost 
    roles: 
    {% for name in role_vars -%} 
    - {{ name }} 
    {% endfor %} 
+0

我跑了它,它给了我: 错误!语法加载YAML时出错。 错误似乎在file.yml中:第23行第6列,但可能 位于文件的其他位置,具体取决于确切的语法问题。 出错的行似乎是: 角色: {%的名义role_vars - %} ......... 我你需要一个“>”管道的印象就是它为了能够认出jinja2,但那也给了我一个错误。 – ExaExcellion

+0

我想我误解了你的意思......这个模板不应该被直接提供给剧本,而是作为模板的模板来源。在这样的剧本中使用jinja2是不行的。 –

+0

我意识到'>'符号应该表示内联模板。显然,这可能会导致混乱的情况,而且也不打算被大量使用。但正如你所说在这种情况下使用模块更好,所以谢谢! – ExaExcellion