如何编写多行 Ansible Jinja2 变量?

Eli*_*ynn 5 jinja2 ansible

我有一条 Ansible 线路无法进行 linting:

 tags: "{{ deployment_id | resource_tags('asg', base_resource_tags, deployment=deployment_id, deployment_env=deployment_env, deployment_name=deployment_name, purpose=deployment_purpose_tag, cpu_utilization=deployment_cpu_utilization_tag, disk_io_class=deployment_disk_io_tag, prom_exporters=deployment_prom_exporter_tags) | asg_tag_list }}"
Run Code Online (Sandbox Code Playgroud)

我如何使这个pass linting?

Eli*_*ynn 5

您需要使用> 不带引号的 YAML 折叠标量。然后附加“Strip”Block Chomping -文档)指示符以删除尾随换行符,总的来说,它看起来像>-. 下面的示例将正常工作,每个换行符都会转换为空格。添加引号会破坏它,例如

tags: >-
    {{ deployment_id | resource_tags('asg', base_resource_tags, deployment=deployment_id,
    deployment_env=deployment_env, deployment_name=deployment_name, Purpose=deployment_purpose_tag,
    cpu_utilization=deployment_cpu_utilization_tag, disk_io_class=deployment_disk_io_tag,
    prom_exporters=deployment_prom_exporter_tags) | asg_tag_list }}
Run Code Online (Sandbox Code Playgroud)

  • 在折叠运算符后面包含 `-`(如:`: >-`)将修剪尾随的换行符;您的版本相当于 `tags: "{{ ... }}\n"` ,这不是原始行中的内容 (2认同)