代码之家  ›  专栏  ›  技术社区  ›  Ashar

使用Ansible的委托时无法打印目标库存主机

  •  0
  • Ashar  · 技术社区  · 6 年前

    下面playbook从远程主机列表[20个远程服务器]中获取“/tmp”的磁盘使用百分比,并将其本地存储(委托给)到文件{playbook dir}/tmpfiles/stats.yml中

    ---
    host: remote_hosts
      tasks:    
        - name: Generate JSON data
          lineinfile:
            path: "{{ playbook_dir }}/tmpfiles/stats.yml"
            line: "{{ inventory_hostname }}_{{ item.mount }}: {{ (100 * ((item.size_total - item.size_available) / item.size_total)) | round(1, 'common') }}"
            insertafter: EOF
          delegate_to: localhost
          when: item.mount == '/tmp'
          with_items: '{{ ansible_mounts }}'
    

    我希望在stats.yml中获得目标主机名

    因此,如果远程主机是

    10.0.0.2
    10.0.0.3
    10.0.0.5
    

    10.0.0.2_/tmp: 54
    10.0.0.3_/tmp: 42
    10.0.0.5_/tmp: 65
    

    但是,使用后 lineinfile delegate_to

    localhost:/tmp: 54
    localhost_/tmp: 42
    localhost_/tmp: 65
    

    我试着用 {{ ansible_host }} 而不是 {{ inventory_hostname }} 但它总是打印本地主机,而不是从中获取磁盘使用信息的目标。

    注意:如果删除delegate_to,则它可以打印远程IP,但我希望在本地而不是在远程主机上创建文件。

    0 回复  |  直到 6 年前