Назад | Перейти на главную страницу

Сценарий cloud-init с шаблоном jinja не обрабатывается iinja

У меня есть сценарий облачной инициализации, в котором используется шаблон jinja. Выглядит это так:

## template: jinja
#cloud-config

merge_how:
 - name: list
   settings: [append]
 - name: dict
   settings: [no_replace, recurse_list]

runcmd:
- mkdir -p /opt/collectd

write_files:
- path: /opt/collectd/collectd.conf
  content: |

    Hostname    "connect-${connect_group_id}"
    FQDNLookup   false
    Interval     60

    <LoadPlugin write_graphite>
    Globals false
    </LoadPlugin>

    LoadPlugin cpu
    LoadPlugin disk
    LoadPlugin df
    LoadPlugin memory
    LoadPlugin swap
    LoadPlugin interface
    LoadPlugin tcpconns

    <Plugin df>
        MountPoint "/hostfs"
        MountPoint "/hostfs/var/lib"
        MountPoint "/hostfs/var/log"
        IgnoreSelected false
        ReportInodes false
    </Plugin>

    <Plugin interface>
        Interface "eth0"
        IgnoreSelected false
    </Plugin>

    <Plugin swap>
        ReportByDevice false
        ReportBytes true
    </Plugin>

    <Plugin tcpconns>
        ListeningPorts false
        LocalPort "${jmx_port}"
        RemotePort "${jmx_port}"
    </Plugin>

    LoadPlugin processes
    <Plugin processes>
        CollectFileDescriptor true
        CollectContextSwitch false
        CollectMemoryMaps false
        ProcessMatch "zookeeper" ".*QuorumPeerMain.*"
        ProcessMatch "kafka" ".*SupportedKafka.*"
    </Plugin>
    # JMX Plugin Config

    LoadPlugin java

    {% macro mbean(objectName, name, type, instancePrefix, table, attribute) -%} 
    <MBean "{{ name }}">
        ObjectName "{{ objectName }}"
        <Value>
            Type "{{ type }}"
            InstancePrefix "{{ instancePrefix }}"
            Table {{ table }}
            Attribute "{{ attribute }}"
        </Value>
    </MBean>
    {% endmacro %}


    <Plugin java>
        JVMARG "-Djava.class.path=/usr/share/collectd/java/collectd-api.jar:/usr/share/collectd/java/generic-jmx.jar"
        LoadPlugin "org.collectd.java.GenericJMX"
        <Plugin "GenericJMX">
            {% set metrics=[
            "connector-count",
            "connector-startup-attempts-total",
            "connector-startup-failure-total",
            "connector-startup-failure-percentage",
            "connector-startup-success-total",
            "connector-startup-success-percentage",
            "task-count",
            "task-startup-attempts-total",
            "task-startup-failure-total",
            "task-startup-failure-percentage",
            "task-startup-success-total",
            "task-startup-success-percentage",
            ] -%}
            {% for name in metrics -%}
            {{ mbean(
                "kafka.connect:type=connect-worker-metrics",
                name,
                "counter",
                name,
                "false",
                "Value")
            }}
            {%- endfor %}

Когда этот сценарий специализируется и записывается на машину, разметка Jinja не обрабатывается.

Я взял файл collectd.conf и сам прогнал его через jinja, и результат был сгенерирован правильно. Так что с самим шаблоном jinja проблем нет.

Я также посмотрел на вывод /var/log/cloud-init.log и /var/log/cloud-init-output.log и не увидел никаких ошибок.

любая помощь приветствуется.

Я разобрался в проблеме. У экземпляров EC2, которые я получаю, есть старая версия cloud-init (18.2), которая не поддерживает шаблоны jinja.