[英]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.