如何为Ansible角色创建正确的模板文件

时间:2019-08-22 12:53:36

标签: ansible jinja2

我需要以yml wtith ansible角色创建一些配置文件。这个例子是我想要的:

filebeat.inputs:
- type: log
  paths:
    - /var/log/system.log
    - /var/log/wifi.log

在“模板”目录中的反目录结构中,我有带有以下文本的文件:

filebeat.inputs:
- type: {{filebeat_input.type}}
  {{ filebeat_input.paths | to_yaml}}

在目录默认值中,我有这样的main.yml: filebeat_create_config:是

filebeat_input:
    type: log
    paths:
     - "/var/log/*.log"
     - "/var/somelog/*.log"

当我m run ansible-playbook with this role i知道了这一点时:

filebeat.inputs:
  - type: log
  [/var/log/*.log, /var/sdfsadf]

我错了哪里?我需要改变什么地方以及什么地方才能得到我想要的东西(请参见上面的示例)。 感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

filebeat_input.paths是一个列表,因此当您将其传递给to_yaml时会得到一个列表。您只需要构建YAML模板即可将列表放在正确的位置,例如:

filebeat.inputs:
- type: {{filebeat_input.type}}
  paths: {{ filebeat_input.paths | to_yaml}}

请注意:

paths: [/var/log/*.log, /var/sdfsadf]

完全等同于:

paths:
  - /var/log/*.log
  - /var/sdfsadf