【问题标题】:Club multiple variable and get one output in ansible俱乐部多个变量并在ansible中获得一个输出
【发布时间】:2021-06-05 19:30:16
【问题描述】:

Club 多个变量并在 ansible 中获得一个输出 我将在代码的许多其他部分使用组合变量,有没有办法做到这一点。

  • 姓名:

    主机:虚拟 收集事实:真 任务:

    • 块:

抓包-Infra 代理版本

v1

    - name: Get package-Integration agent version ostype1.4
      shell: command1
      register: NRAV1   
      when: ansible_distribution == "ostype" and ansible_distribution_version == "v1"     

    - name: Debug
      debug:
        msg: "{{ NRAV1 }}"
      
                          

v2

    - name: Get package-Integration agent version ostype2.2 
      shell: command2
      register: NRAV2                          
      when: ansible_distribution == "ostype" and ansible_distribution_version == "v2"   


    - name: Debug
      debug:
        msg: "{{ NRAV2 }}"
      

v3

    - name: Get package-Integration agent version ostype2.3 
      shell: command3
      register: NRAV3  
      when: ansible_distribution == "ostype" and ansible_distribution_version == "v3"                            


    - name: Debug
      debug:
        msg: "{{ NRAV3 }}"


    - name: Result
      debug:
        msg: "{{ NRAV1.stdout | NRAV2.stdout | NRAV2.stdout }}"

#输出:


TASK [setup] *******************************************************************
ok: [dummy]

TASK [Get package-Integration agent version ostype1.4] *************************
skipping: [dummy]

TASK [Debug] *******************************************************************
ok: [dummy] => {
    "msg": {
        "changed": false,
        "skip_reason": "Conditional check failed",
        "skipped": true
    }
}

TASK [Get package-Integration agent version ostype2.2] *************************
changed: [dummy]



TASK [Debug] *******************************************************************
ok: [dummy] => {
    "msg": {
        "changed": true,
        "cmd": "rpm -qa --last | grep package-infra | awk '{print $1}' | cut -d'-' -f 3,4 | cut -d'.' -f 1,2,3,4,5",
        "delta": "0:00:00.524132",
        "end": "2021-03-07 12:06:33.150778",
        "rc": 0,
        "start": "2021-03-07 12:06:32.626646",
        "stderr": "",
        "stdout": "1.15.1-1.ostype2.2",
        "stdout_lines": [
            "1.15.1-1.ostype2.2"
        ],
        "warnings": [
            "Consider using yum module rather than running rpm"
        ]
    }
}

TASK [Get package-Integration agent version ostype2.3] *************************
skipping: [dummy]

TASK [Debug] *******************************************************************
ok: [dummy] => {
    "msg": {
        "changed": false,
        "skip_reason": "Conditional check failed",
        "skipped": true
    }
}

TASK [Result] *******************************************************************
fatal: [dummy]: FAILED! => {"failed": true, "msg": "ERROR! template error while templating string: no filter named 'NRAV3.stdout'"}

PLAY RECAP *********************************************************************
dummy                : ok=5    changed=1    unreachable=0    failed=1

#我的预期结果将是 >> NRAV2.stdout >> "1.15.1-1.ostype2.2"

【问题讨论】:

  • 您是否希望| 在三个变量之间执行or

标签: ansible jinja2


【解决方案1】:

Ansible 无法解析以下行 -

msg: "{{ NRAV1.stdout | NRAV2.stdout | NRAV3.stdout }}"

你需要用这样的东西替换它 -

msg: "{{ NRAV1.stdout }} | {{ NRAV2.stdout }} | {{ NRAV3.stdout }}"

【讨论】:

  • | 是过滤器运算符,它不能在 {{}} 内用于过滤以外的其他用途,这就是为什么 ansible 试图找到过滤器“NRAV3.stdout”但没有找到任何.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-19
  • 2021-08-05
  • 1970-01-01
  • 2021-01-26
  • 1970-01-01
相关资源
最近更新 更多