Python 抑制可应答的临时警告

Python 抑制可应答的临时警告,python,amazon-web-services,ansible,Python,Amazon Web Services,Ansible,我有一个python脚本,它利用Ansible临时命令快速获取主机信息。当我试图收集有关位于不同VPC中的主机的信息时,我想取消显示该警告,但显示在用于查找所有实例的以下命令中: aws ec2 describe-instances 下面是我用来生成ansible即席命令的python代码段: command_string = "ansible -i /repo/ansible/inventory/"+env+"/hosts " + name + " -m shell -a 'df -h'"

我有一个python脚本,它利用Ansible临时命令快速获取主机信息。当我试图收集有关位于不同VPC中的主机的信息时,我想取消显示该警告,但显示在用于查找所有实例的以下命令中:

aws ec2 describe-instances
下面是我用来生成ansible即席命令的python代码段:

command_string = "ansible -i /repo/ansible/inventory/"+env+"/hosts " + name + " -m shell -a 'df -h'"
result = subprocess.Popen(command_string, shell=True, stdout=subprocess.PIPE).stdout.read()
我知道在shell模块的playbook设置中:

warn=no
将禁用警告,但我似乎不知道如何通过临时设置来实现,请参见下面的测试:

[root@box-1b 10.0.5.xxx:~] ansible -i /repo/ansible/inventory/nqa/hosts 10.19.1.17 -m shell -a 'warn=no'
[WARNING]: No hosts matched, nothing to do

[root@box-1b 10.0.5.xxx:~] ansible -i /repo/ansible/inventory/nqa/hosts 10.19.1.17 -m shell -a 'warn=false'
[WARNING]: No hosts matched, nothing to do
我的完整脚本的输出类似于以下内容:

i-xxxxxx
    my-super-cool-box
    t2.small    True
    10.0.0.10
    vol-xxxxxxx
    100
    i-xxxxxxx
    /dev/xvdf


 [WARNING]: No hosts matched, nothing to do
 [WARNING]: No hosts matched, nothing to do
 [WARNING]: No hosts matched, nothing to do

打印的有关特定实例的信息是正确的,我正在寻找的是一种在不更改全局ansible配置的情况下抑制该警告的方法。

此警告与
命令
/
外壳
模块警告没有任何共同之处,您可以使用
警告:否
控制该警告

当您提供的主机模式与资源清册中的任何主机都不匹配时,
adhoc
CLI会打印此警告

在您的示例中,主机
10.19.1.17
未在
/repo/ansible/inventory/nqa/hosts
inventory中定义,因此ansible会向您发出警告,说明无需执行任何操作


确保使用静态资源清册文件中确实存在的主机运行Ansible,或者针对所有EC2实例设置并运行Ansible,或者按标记、安全组等进行筛选。

将环境变量
Ansible\u弃用\u警告设置为
false
,如下所示:

ANSIBLE\u弃用\u警告=false ANSIBLE-i/path/to/inventory hosts-a您的\u命令

思考如何使用您知道如何在运行ad-hoc时禁用
命令
/
shell
警告吗?(换句话说,问题与OP类似,但在eg的实际情况下“考虑使用服务模块代替…”键入警告)。是,
warn:no
:这是在剧本中运行时-我试图弄清楚如何在运行adhoc时提供warn参数-即在命令行上运行到
ansible
-因为例如
ansible--module shell--args“warn=no service httpd stop”
没有被拾取,因为要运行的命令实际上没有参数名,
warn:no
args:warn:false
之间有什么区别?@TimMalone尝试将args放在最后:
ansible--module shell--args“service httpd stop warn=no”
ANSIBLE_COMMAND_WARNINGS=false ansible ...
ANSIBLE_COMMAND_WARNINGS=no ansible ...