Ansible 剧本。包含值时始终引用模板表达式括号

Ansible playbook. Always quote template expression brackets when hey contain a value

我在这个 ansible 剧本中遇到错误 运行。它只是尝试通过在 ansible facts 中查看 mount_points 来从 ansible facts 加载特定安装的属性(大小)。 (i) 我的变量表达式以某种方式被错误引用,尝试了括号和引号的一些排列。 (ii) 一旦我修复了引号,底层命令是否会真正找到并将所需的事实属性提取到我的变量中 mountsize?

- hosts: target_hosts
  vars:
    mountsize: "999"
  tasks: 
    - name: Collect only facts returned by facter
      setup:
        fact_path : "/etc/ansible/facts.d"

    - debug: 
        var: "{{ ansible_facts['ansible_mounts' | selectattr('mount', 'equalto', '/apps') | map(attribute='size_total') | "{{mountsize}}"] }}"

mountsize 的预期示例输出(以字节为单位): 234567891012

您的代码存在许多问题,包括您使用大括号 ({{ }})、您引用 ansible_facts 的方式以及您尝试将值赋给的方式mountsize 变量

尝试:

    - set_fact:
        mountsize: "{{ ansible_mounts | selectattr('mount', 'equalto', '/apps') | map(attribute='size_total') | first }}"

    - debug:
        var: mountsize