我有一些持续的集成检查,它运行一些ansible-playbook
命令。每个剧本可能正在运行许多剧本,包括许多大型角色。
有时会有人介绍一些在ansible-playbook
运行时会发出警告的更改,例如像这样的东西:
[WARNING]: when statements should not include jinja2 templating delimiters
such as {{ }} or {% %}. Found: "{{ some_variable}}" not in
some_result.stdout
或:
[WARNING]: Consider using unarchive module rather than running tar
或一些弃用警告,例如:
[DEPRECATION WARNING]: ec2_facts is kept for backwards compatibility but usage
is discouraged. The module documentation details page may explain more about
this rationale.. This feature will be removed in a future release. Deprecation
warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.
等等。有时,当我们升级ansible版本时会弹出这些警告。无论它们发生的原因如何,我都希望某种方式让ansible-playbook
命令在导致其中一个警告时大声失败,而不是静静地继续进行并使我的CI检查成功。有没有办法做到这一点?我目前正在使用ansible 2.4.3。
我发现很多关于隐藏这些警告的方法的讨论,但没有找到任何关于将它们提升为硬错误的内容。
答案 0 :(得分:0)
any_errors_fatal
中有一个选项ansible.cfg
,关于放置
any_errors_fatal = True
答案 1 :(得分:0)
为什么?它们会干扰剧本的实施吗?很有可能不是。只需修复剧本代码即可。
根据我的理解,删除这样的警告是不可能的或非常困难的(无论如何,当我尝试时,它对我没有用):
[WARNING]: when statements should not include jinja2 templating delimiters
such as {{ }} or {% %}. Found: "{{ some_variable}}" not in
some_result.stdout
只需使用:
some_variable not in some_result.stdout
在“何时”条件下,无需设置{{}}来获取变量值
我个人更喜欢搜索“查找”:
some_result.stdout.find(some_variable) == -1
此警告:
[DEPRECATION WARNING]: ec2_facts is kept for backwards compatibility but usage
is discouraged. The module documentation details page may explain more about
this rationale.. This feature will be removed in a future release. Deprecation
warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.
可以通过设置将从输出中删除:
deprecation_warnings = false
在文件ansible.cfg
中此警告:
[WARNING]: Consider using unarchive module rather than running tar
如果在“命令”中使用ansible模块而不是tar,则很容易删除:
unarchive: src=file.tgz dest=/opt/dest
答案 2 :(得分:0)
我有完全相同的问题。我的解决方法是:
我知道这并不理想,因此,如果您提供了一个不错的解决方案,请分享:-)
答案 3 :(得分:-1)
要隐藏上述的[DEPRECATION WARNING],您可以 “通过在ansible.cfg中设置deprecation_warnings = False禁用。”
但这可能不是理想的,因为将来您无法看到可能会发生变化或折旧的事物。
如果您完全确定可以忽略此类警告,则可以使用::
args:
warn: false
或按照警告消息中的建议修改代码。
其他::
如果您想对任何警告提出错误,可以
注册结果并应用failed_w,如下例所示。
- hosts: localhost
gather_facts: false
tasks:
- name: Fail if there is any warnings
shell: touch a.txt
register: result
failed_when: result.warnings is defined