prometheus-community / ansible

Ansible Collection for Prometheus
https://prometheus-community.github.io/ansible/
Apache License 2.0
397 stars 134 forks source link

node_exporter role failing with 'AnsibleUnicode' object is not callable #217

Open abeluck opened 1 year ago

abeluck commented 1 year ago
TASK [prometheus.prometheus.node_exporter : Copy the node_exporter systemd service file] ************************************************************************************************************
An exception occurred during task execution. To see the full traceback, use -vvv. The error was: ): 'AnsibleUnicode' object is not callable. 'AnsibleUnicode' object is not callable
fatal: [agn-an-afg-prod-republisher]: FAILED! => changed=false 
  msg: |-
    AnsibleError: Unexpected templating type error occurred on ({{ ansible_managed | comment }}

    [Unit]
    Description=Prometheus Node Exporter
    After=network-online.target

    [Service]
    Type=simple
    User={{ node_exporter_system_user }}
    Group={{ node_exporter_system_group }}
    ExecStart={{ node_exporter_binary_install_dir }}/node_exporter \
    {% for collector in node_exporter_enabled_collectors -%}
    {%   if not collector is mapping %}
        '--collector.{{ collector }}' \
    {%   else -%}
    {%     set name, options = (collector.items()|list)[0] -%}
        '--collector.{{ name }}' \
    {%     for k,v in options|dictsort %}
        '--collector.{{ name }}.{{ k }}={{ v }}' \
    {%     endfor -%}
    {%   endif -%}
    {% endfor -%}
    {% for collector in node_exporter_disabled_collectors %}
        '--no-collector.{{ collector }}' \
    {% endfor %}
    {% if node_exporter_tls_server_config | length > 0 or node_exporter_http_server_config | length > 0 or node_exporter_basic_auth_users | length > 0 %}
        {% if node_exporter_version is version('1.5.0', '>=') %}
        '--web.config.file=/etc/node_exporter/config.yaml' \
        {% else %}
        '--web.config=/etc/node_exporter/config.yaml' \
        {% endif %}
    {% endif %}
        '--web.listen-address={{ node_exporter_web_listen_address }}' \
        '--web.telemetry-path={{ node_exporter_web_telemetry_path }}'

    SyslogIdentifier=node_exporter
    Restart=always
    RestartSec=1
    StartLimitInterval=0

    {% set ns = namespace(protect_home = 'yes') %}
    {% for m in ansible_mounts if m.mount.startswith('/home') %}
    {%   set ns.protect_home = 'read-only' %}
    {% endfor %}
    {% if node_exporter_textfile_dir.startswith('/home') %}
    {%   set ns.protect_home = 'read-only' %}
    {% endif %}
    ProtectHome={{ ns.protect_home }}
    NoNewPrivileges=yes

    {% if (ansible_facts.packages.systemd | first).version is version('232', '>=') %}
    ProtectSystem=strict
    ProtectControlGroups=true
    ProtectKernelModules=true
    ProtectKernelTunables=yes
    {% else %}
    ProtectSystem=full
    {% endif %}

    [Install]
    WantedBy=multi-user.target
    ): 'AnsibleUnicode' object is not callable. 'AnsibleUnicode' object is not callable

Version:

ansible [core 2.15.2]
  config file = /workspace/myproject/ansible.cfg
  configured module search path = ['/home/gitpod/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3/dist-packages/ansible
  ansible collection location = /workspace/myproject/collections
  executable location = /usr/bin/ansible
  python version = 3.10.12 (main, Jun 11 2023, 05:26:28) [GCC 11.4.0] (/usr/bin/python3)
  jinja version = 3.0.3
  libyaml = True

Collection version: 0.7.0

node_exporter variables I am defining:

node_exporter_version: latest
gardar commented 1 month ago

Is this still a issue?