繁体   English   中英

抑制 Ansible 临时警告

[英]Suppress Ansible Ad Hoc Warning

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

aws ec2 describe-instances

下面是我用来制作和生成 ansible ad hoc 命令的 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 模块的剧本设置中:

warn=no

将禁用警告,但我似乎无法弄清楚如何通过 adhoc 这样做,请参阅下面的测试:

[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 配置的情况下抑制该警告的方法。

此警告与command / shell模块警告没有任何共同之处,您可以使用warn: no来控制。

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

在您的示例中,主机10.19.1.17未在/repo/ansible/inventory/nqa/hosts清单中定义,因此 Ansible 会警告您无事可做。

确保您使用静态清单文件中确实存在的主机运行 Ansible,或者设置ec2 动态清单并对所有 EC2 实例运行 Ansible,或者按标签、security_group 等进行过滤。

这对我ANSIBLE_PYTHON_INTERPRETER=auto_silent

例如: ANSIBLE_PYTHON_INTERPRETER=auto_silent ansible -i /repo/ansible/inventory/nqa/hosts 10.19.1.17 -m shell -a "uptime"

像这样将环境变量ANSIBLE_DEPRECATION_WARNINGS设置为false

ANSIBLE_DEPRECATION_WARNINGS=false ansible -i /path/to/inventory hosts -a your_command
ANSIBLE_COMMAND_WARNINGS=false ansible ...
ANSIBLE_COMMAND_WARNINGS=no ansible ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM