如何忽略ansible中的警告
How to Ignore warnings in ansible
我在编写剧本时一直试图忽略警告,场景是我执行此 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
谁能指导我如何解决它??
提前致谢。
我可以用这个来解决它。
tasks:
- name: Check if Host supports Virtualization.
command: virt-host-validate qemu
register: command_result
failed_when:
- "'FAIL' in command_result.stderr"
您也可以 运行 它作为整个角色的 post 任务,因此该角色中的每个任务都将被验证,并且只有当它具有非零 return 代码或包含 "error" 或 "fail" 的 STDERR - 任务将失败。
在所有 command/shell 任务中,注册输出:
- name: A shell task
shell: |
# your commands ...
register: out
然后在 main 角色上,添加一个 post-task,它将在每个任务后检查错误:
- 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)
我在编写剧本时一直试图忽略警告,场景是我执行此 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
谁能指导我如何解决它??
提前致谢。
我可以用这个来解决它。
tasks:
- name: Check if Host supports Virtualization.
command: virt-host-validate qemu
register: command_result
failed_when:
- "'FAIL' in command_result.stderr"
您也可以 运行 它作为整个角色的 post 任务,因此该角色中的每个任务都将被验证,并且只有当它具有非零 return 代码或包含 "error" 或 "fail" 的 STDERR - 任务将失败。
在所有 command/shell 任务中,注册输出:
- name: A shell task
shell: |
# your commands ...
register: out
然后在 main 角色上,添加一个 post-task,它将在每个任务后检查错误:
- 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)