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

如何在ansible中忽略警告

  •  3
  • user3398900  · 技术社区  · 6 年前

    我在写剧本的时候一直试图忽略一个警告场景是我执行这个 virt-host-validate qemu 它会发出一个警告,如下所示。

    root@n0:~/playbook_promenade# virt-host-validate 
    QEMU: Checking for hardware virtualization : PASS
    QEMU: Checking if device /dev/kvm exists :PASS
    QEMU: Checking if device /dev/kvm is accessible : PASS
    QEMU: Checking if device /dev/vhost-net exists : PASS
    QEMU: Checking if device /dev/net/tun exists : PASS
    QEMU: Checking for cgroup 'memory' controller support : PASS
    QEMU: Checking for cgroup 'memory' controller mount-point : PASS
    QEMU: Checking for cgroup 'cpu' controller support : PASS
    QEMU: Checking for cgroup 'cpu' controller mount-point: PASS
    QEMU: Checking for cgroup 'cpuacct' controller support : PASS
    QEMU: Checking for cgroup 'cpuacct' controller mount-point : PASS
    QEMU: Checking for cgroup 'devices' controller support : PASS
    QEMU: Checking for cgroup 'devices' controller mount-point : PASS
    QEMU: Checking for cgroup 'net_cls' controller support : PASS
    QEMU: Checking for cgroup 'net_cls' controller mount-point : PASS
    QEMU: Checking for cgroup 'blkio' controller support : PASS
    QEMU: Checking for cgroup 'blkio' controller mount-point : PASS
    QEMU: Checking for device assignment IOMMU support  : WARN (No ACPI DMAR table found, IOMMU either disabled in BIOS or not supported by this hardware platform)`
    

    我写的剧本如下。

    `- hosts: localhost
       sudo: yes
       tasks:
        - name: Check if Host supports Virtualization.
          command: virt-host-validate qemu 
          ignore_errors: yes
          failed_when: false
          changed_when: false
          register: host_status
        - debug:
           msg: "status: {{host_status.stdout}}"`
    

    现在,令人担忧的是,除了警告之外,是否还有其他任务失败了,这个剧本在我们使用 ignore_errors: yes 有人能告诉我怎么修理吗?? 提前谢谢。

    2 回复  |  直到 6 年前
        1
  •  2
  •   user3398900    6 年前

    我可以用这个来解决。

      tasks:
       - name: Check if Host supports Virtualization.
         command: virt-host-validate qemu
         register: command_result
         failed_when:
           - "'FAIL' in command_result.stderr"
    
        2
  •  1
  •   Noam Manos wim    6 年前

    您还可以将它作为post任务在整个角色上运行,因此将验证该角色中的每个任务,并且仅当它具有非零返回代码或包含“error”或“fail”的stderr时,该任务才会失败。

    在所有命令/shell任务中,注册输出:

    - name: A shell task
      shell: |
        # your commands ...
      register: out
    

    然后在主角色上,添加一个post任务,该任务将在每个任务之后检查错误:

    - name: A role of shell/command tasks
      roles:
      - role: ...
      ...
      post_tasks:
      - name: Checking if command failed, or if stderr contains errors/failures
        fail: msg={{ out.stderr.split('\n') }}
        when: out is defined and out.stderr is defined and (out.stderr | lower | regex_search('error|fail') or out.rc != 0)