【问题标题】:ansible get rpm version of variableansible 获取 rpm 版本的变量
【发布时间】:2021-05-11 10:29:01
【问题描述】:

我将服务名称作为外部变量。我想找到该服务的 rpm 版本。

我使用了以下剧本: 任务:

   - name: get the rpm or apt package facts
     package_facts:
      manager: "auto"

   - name: get version of current installed rpm
     set_fact:
       rpm_version:  "{{ packages['{{ service_name }}'] }}"


   - name: print version of current installed rpm
     debug:
       msg: "{{ rpm_version }}"

我收到以下错误:

TASK [get version of current installed rpm] ************************************************************************************************************************************************
fatal: [10.20.10.74]: FAILED! => {"msg": "The task includes an option with an undefined variable. The error was: 'dict object' has no attribute '{{ service_name }}'\n\nThe error appears to be in '/home/m/my-playbook.yml': line 11, column 6, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n\n   - name: get version of current installed rpm\n     ^ here\n"}

我尝试使用转义字符,例如 \',但它并没有真正帮助。

如何将变量传递给包字典?

当我用硬编码名称替换 {{ service_name }} 时,它按预期工作

【问题讨论】:

    标签: ansible


    【解决方案1】:

    试试这个语法:

       - name: get version of current installed rpm
         set_fact:
           rpm_version: "{{ ansible_facts.packages[service_name] }}"
    

    【讨论】:

    • 工作,tnx !所以一旦我使用了一个 {{ }} 就意味着不需要添加内部变量?
    • @JeyJ 打开双花括号后,您就在 Jinja2 模板中,因此您不需要另一个嵌套分隔符
    猜你喜欢
    • 1970-01-01
    • 2016-04-09
    • 1970-01-01
    • 1970-01-01
    • 2021-10-30
    • 2020-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多