web-dev-qa-db-ja.com

ansibleで警告を無視する方法

プレイブックを書いているときに警告を無視しようとしていますが、シナリオはこのvirt-Host-validate qemuを実行すると、次のように1つの警告がスローされます。

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を使用している間、このプレイブックが続行するという警告以外に失敗するタスクがある場合、心配な部分があります。誰かがそれを修正する方法を教えてもらえますか?前もって感謝します。

3
user3398900

これで直せます。

  tasks:
   - name: Check if Host supports Virtualization.
     command: virt-Host-validate qemu
     register: command_result
     failed_when:
       - "'FAIL' in command_result.stderr"
1
user3398900

ロール全体でポストタスクとして実行することもできるため、そのロールの各タスクは、ゼロ以外のリターンコードまたは「エラー」または「失敗」を含むSTDERRがある場合にのみ検証されます-タスク失敗します。

すべてのコマンド/シェルタスクで、出力を登録します。

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

次に、メインの役割で、各タスクの後にエラーをチェックするポストタスクを追加します。

- 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)
1
Noam Manos