regex 可能计算不应大于特定值的值

hjqgdpho  于 2023-02-25  发布在  其他
关注(0)|答案(1)|浏览(103)

我正在处理一个Ansible任务,它应该在一个文本文件中设置JVM堆大小(下面的代码示例)
JVM堆大小的值目前是这样计算的--它运行良好:

  • 可靠事实系统总内存(MB)(ansible_momtotal_mb
  • 除以1000得到GB
  • 乘以0.6以仅使用60%的内存
  • 使用| int过滤,以获得不带小数位的舍入数

我的问题是:计算值不应高于8 GB,我不知道如何设置计算的最大值
我的代码:

- name: "Set JVM heap size"
  ansible.builtin.replace:
    path: "/etc/path/jvm.options"
    regexp: '-Xms([0-9])g'
    replace: '-Xms{{ (ansible_memtotal_mb / 1000 * 0.6) | int }}g'

有人知道如何设置最大值吗?
谢谢大家!

mkshixfv

mkshixfv1#

  • 如何设置最大值?*

一种方法是使用Ansible Jinja2模板IF ELSE构造来指定上限,就像在最小示例剧本中那样

---
- hosts: localhost
  become: false
  gather_facts: false

  vars:

    ansible_memtotal_mb: 16384 # 2048, 4096, 8192, 32768

  tasks:

  - name: Show value with upper limit
    debug:
      msg: "{% if (ansible_memtotal_mb / 1000 * 0.6) | int < 8 %}{{ (ansible_memtotal_mb / 1000 * 0.6) | int }}{% else %}8{% endif %}"

从而产生所请求的输出。
使其更易于阅读和维护

- name: Calculate XMS without upper limit
    set_fact:
      XMS: "{{ (ansible_memtotal_mb / 1000 * 0.6) | int }}" 

  - name: Show XMS value with upper limit 
    debug:
      msg: "{% if XMS | int < 8 %}{{ XMS }}{% else %}8{% endif %}"

请注意

相关问题