如何根据条件在 Ansible 模板中设置连接的字符串变量

How to set concatenated string variable in Ansible template based on a condition

我需要在模板中创建一个可以在主机之间更改的字符串,它需要采用以下形式: "cores": "0,1,2,3"

本例中字符串为“0,1,2,3”的原因是主机有 4 个处理器内核。

所以我遇到了一些对我来说太复杂的事情,我什至不确定如何在我的模板文件中使用这个 core_count 变量。

{% set core_count = '' %}
{% for i in range(ansible_processor_cores) %}
  {% set core_count = core_count ~ i %}
    {% if not loop.last %}
     {% set core_count = core_count ~ ',' %}
    {% endif %}
{% endfor %}

Ansible 中有许多方便的 lookup 插件。取sequence:

- hosts: localhost
  gather_facts: yes
  tasks:
    - debug:
        msg: '"cores": "{{ lookup("sequence","start=0 count="+(ansible_processor_cores|string)) }}"'