【问题标题】:Suppress Ansible Ad Hoc Warning禁止 Ansible 即席警告
【发布时间】:2017-10-03 02:45:12
【问题描述】:

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

aws ec2 describe-instances

下面是我用来制作和生成 ansible ad hoc 命令的 python sn-p:

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

【问题讨论】:

标签: python amazon-web-services ansible


【解决方案1】:

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

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

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

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

【讨论】:

  • 您知道如何在运行 ad-hoc 时禁用 command/shell 警告吗? (换句话说,与 OP 类似的问题,但在实际情况下,例如“考虑使用服务模块...”类型警告)。
  • 那是在剧本中运行时 - 我试图弄清楚如何在命令行上运行 adhoc 时提供警告参数 ansible - 因为例如。 ansible --module shell --args “warn=No service httpd stop” 没有被选中,因为要运行的命令实际上没有参数名称...
  • warn: noargs: warn: false有什么区别?
  • @TimMalone 尝试将 args 放在最后:ansible --module shell --args "service httpd stop warn=no"
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:
    ANSIBLE_COMMAND_WARNINGS=false ansible ...
    ANSIBLE_COMMAND_WARNINGS=no ansible ...
    

    【讨论】:

      【解决方案4】:

      这对我有用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"

      【讨论】:

        猜你喜欢
        • 2022-08-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多