簡體   English   中英

使用 Ansible 劇本計算從列表變量中使用的百分比

[英]Calculate percentage used from List variables using Ansible playbook

我是 ansible 環境的新手。 我正在做一些編碼工作,但被困在了下面。

我得到下面的 output:在此處輸入圖像描述

我正在為上面列表中的每個聚合尋找 output,如下所示。 aggr_name: ag_xxxxx aggr_used%: [int] ==> (used/size *100)

我嘗試了在 web 中獲得的多個選項,但沒有運氣。 請幫我。

謝謝。

是否有%的解決方案:我正在使用 jinja 過濾器floatround

- name: "tips1"
  hosts: localhost
  vars:
    aggr_capacity:
      - aggr_name: ag1
        aggr_space:
          aggr_available: 123456
          aggr_size: 4227703668736
          aggr_used: 616585302016
      - aggr_name: ag2
        aggr_space:
          aggr_available: 123456
          aggr_size: 1585388896256
          aggr_used: 22686273536
      - aggr_name: ag3
        aggr_space:
          aggr_available: 123456
          aggr_size: 1585388896256
          aggr_used: 119851876352
  tasks:  
    - name: solution set_fact
      set_fact:
        result: "{{ result | default([]) + [ { 'aggr_name': name, 'used': used, 'pct': pct ~ '%' } ] }}"
      loop: "{{ aggr_capacity }}"
      vars:
        name: "{{ item.aggr_name }}"
        used: "{{ (item.aggr_space.aggr_used  / item.aggr_space.aggr_size ) | float | round(2)}}"
        pct: "{{ (item.aggr_space.aggr_used  / item.aggr_space.aggr_size  * 100 )| float | round(2)}}"

    - name: debug users      
      debug:
        var: result

結果:

ok: [localhost] => {
    "result": [
        {
            "aggr_name": "ag1",
            "pct": "14.58%",
            "used": "0.15"
        },
        {
            "aggr_name": "ag2",
            "pct": "1.43%",
            "used": "0.01"
        },
        {
            "aggr_name": "ag3",
            "pct": "7.56%",
            "used": "0.08"
        }
    ]
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM