Jinja2 Ansible 模板 - 需要帮助从变量中删除小数

Jinja2 Ansible Template - Need help removing decimal from a variable

我正在尝试为一个应用程序构建一个配置文件,它将提取 ansible_memtotal_mb 变量并获取该值的 50% 并将其用于服务器进程。挑战在于数学难免returns一位小数。应用程序配置文件不喜欢小数位,所以我需要去掉它。这是我正在尝试做的示例。 percona_memory_pool = "{{ ansible_memtotal_mb * ram_multiplier }}"

innodb_buffer_pool_instances   = {% if (percona_memory_pool|int >= 16384) %} {{ (percona_memory_pool|int/8192)|round }}
{% else %} 8
{% endif %}

关键是要确保最终结果转换为 int 而不是 float,后者将以小数点显示。

这里是一个只使用过滤器的例子。 (注意:我没有改变你的计算逻辑,但它看起来并没有给出连贯的结果)

---
- hosts: localhost
  gather_facts: false

  tasks:
    - debug:
        msg: "{{
          (percona_memory_pool | int >= 16384)
          | ternary((percona_memory_pool | int / 8192), 8)
          | round
          | int
        }}"

给出:

$ ansible-playbook playbook.yml -e percona_memory_pool=16383

PLAY [localhost] ********************************************************************************************************************************************************************************************************************************************************

TASK [debug] ************************************************************************************************************************************************************************************************************************************************************
ok: [localhost] => {
    "msg": "8"
}

PLAY RECAP **************************************************************************************************************************************************************************************************************************************************************
localhost                  : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

$ ansible-playbook playbook.yml -e percona_memory_pool=16384

PLAY [localhost] ********************************************************************************************************************************************************************************************************************************************************

TASK [debug] ************************************************************************************************************************************************************************************************************************************************************
ok: [localhost] => {
    "msg": "2"
}

PLAY RECAP **************************************************************************************************************************************************************************************************************************************************************
localhost                  : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0