我可以像 Ansible 那样打印来自 Ansible 的警告,用于内部警告,例如:
[WARNING]: Ignoring invalid attribute: xx
Run Code Online (Sandbox Code Playgroud)
目标用途是警告,不是错误,因此它们不应结束剧本执行,但它们应该清晰可见(以标准 Ansible 紫色)。
用法示例:
Dan*_*ton 16
这是一个简单的过滤器插件,它将发出警告消息:
from ansible.utils.display import Display
class FilterModule(object):
def filters(self): return {'warn_me': self.warn_filter}
def warn_filter(self, message, **kwargs):
Display().warning(message)
return message
Run Code Online (Sandbox Code Playgroud)
将上述内容放入一个文件中,例如,[playbook_dir]/filter_plugins/warn_me.py.
调用此过滤器的人为示例剧本可能如下所示:
---
- name: Demonstrate warn_me filter plugin
gather_facts: no
hosts: all
tasks:
- meta: end_play
when: ('file XYZ cannot be processed' | warn_me())
delegate_to: localhost
run_once: yes
Run Code Online (Sandbox Code Playgroud)
运行这个剧本可能会产生这样的输出:
$ ansible-playbook test_warnme.yml -l forwards
__________________________________________
< PLAY [Demonstrate warn_me filter plugin] >
------------------------------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
[WARNING]: file XYZ cannot be processed
____________
< PLAY RECAP >
------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
Run Code Online (Sandbox Code Playgroud)
Ben*_*ing 14
fail:警告可以通过使用+ when:+来组合ignore_errors:。
例如
- name: Check hostname matches entry in ansible/hosts
fail:
msg: "Warning: Expected hostname to be '{{ inventory_hostname }}' but was '{{ ansible_facts.fqdn}}'"
when: ansible_facts.fqdn != inventory_hostname
ignore_errors: True
Run Code Online (Sandbox Code Playgroud)
警告显示为致命错误,后跟,以及出现在as...skipping中的数量计数。PLAY RECAPignored=N
例如
TASK [mytask: Check hostname matches entry in ansible/hosts] ***************
fatal: [myhost]: FAILED! => {"changed": false, "msg": "Warning: Expected hostname to be 'myhost' but was 'myhost.my.example.com'"}
...ignoring
PLAY RECAP *************************************************************************************
myhost ok=0 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 **ignored=1**
Run Code Online (Sandbox Code Playgroud)
信用: https://medium.com/opsops/how-to-print-warning-from-a-task-3286ebb39f40
根据您的问题,如果您不信任提供的 URL,但要回答有关生成的问题,您似乎可能希望使剧本失败
[WARNING]: <supplied text>
我所知道的唯一方法是通过您自己的 ansible 模块或插件。
您的模块或插件将进行您描述的 URL 比较并发出适当的消息。
在 ansible 模块中module,您创建的对象具有warn您调用的函数,例如:
module.warn('your text')
在一个插件,你的代码会生成一个Display对象,该对象将有一个warning函数调用,如:
display.warning('your text')。
如果您的目标只是获得一条可靠的紫色警告消息,而不是您可以通过debug模块生成的消息,那么这似乎需要做很多工作。
| 归档时间: |
|
| 查看次数: |
10537 次 |
| 最近记录: |