arista.eos.eos_command 模块 – 在 Arista EOS 设备上运行任意命令

注意

此模块是 arista.eos 集合 (版本 10.0.1) 的一部分。

如果您使用的是 ansible 包,则可能已安装此集合。它不包含在 ansible-core 中。要检查它是否已安装,请运行 ansible-galaxy collection list

要安装它,请使用: ansible-galaxy collection install arista.eos

要在 playbook 中使用它,请指定: arista.eos.eos_command

arista.eos 1.0.0 中的新增功能

摘要

  • 将一组任意命令发送到 EOS 节点并返回从设备读取的结果。此模块包含一个参数,该参数将导致模块在返回之前等待特定条件,或者如果未满足条件则超时。

参数

参数

注释

commands

列表 / 元素=任意 / 必需

要发送到远程 EOS 设备的命令。命令的输出结果将被返回。如果提供了 wait_for 参数,则只有在满足条件或超过 retries 次数后,模块才会返回。

命令可以表示为简单的字符串或如下所述的字典。请参考示例部分了解一些常见用法。

answer

列表 / 元素=字符串

如果匹配 prompt,则要回复的答案。该值可以是单个答案或多个提示的答案列表。如果命令执行导致多个提示,则提示和预期答案的顺序应相同。

check_all

布尔值

默认情况下,如果 prompt 选项中提到的任何一个提示匹配,它将不会检查其他提示。此布尔标志设置为 True 将按给定顺序检查 prompt 选项中提到的所有提示。如果该选项设置为 True,则应从远程主机接收所有提示,否则将导致超时。

选项

  • false ← (默认)

  • true

command

字符串 / 必需

要发送到远程网络设备的命令。除非设置了 sendonly,否则将返回命令的输出结果。

newline

布尔值

布尔值,设置为 false 时,将在不带尾随换行符的情况下将 answer 发送到设备。

选项

  • false

  • true ← (默认)

output

字符串

远程设备应如何格式化命令响应数据。

选项

  • "text"

  • "json"

prompt

列表 / 元素=字符串

单个正则表达式模式或一系列模式,用于评估来自 command 的预期提示。

sendonly

布尔值

布尔值,设置为 true 时,将向设备发送 command,但不等待结果。

选项

  • false ← (默认)

  • true

version

字符串

指定当 output=json 时返回的 JSON 响应的版本。

选项

  • "1"

  • "latest" ← (默认)

interval

整数

配置以秒为单位的间隔,用于重试命令。如果命令未通过指定的条件,则间隔指示在再次尝试命令之前要等待多长时间。

默认值: 1

match

字符串

match 参数与 wait_for 参数一起使用,用于指定匹配策略。有效值为 allany。如果该值设置为 all,则必须满足 wait_for 中的所有条件。如果该值设置为 any,则只需要满足其中一个值即可。

选项

  • "any"

  • "all" ← (默认)

retries

整数

指定在命令被视为失败之前应尝试的次数。命令在每次重试时都在目标设备上运行,并根据 wait_for 条件进行评估。

默认值: 10

wait_for

别名:waitfor

列表 / 元素=字符串

指定要从命令输出中评估的内容以及要应用的条件。此参数将导致任务等待特定条件为真才能继续执行。如果在配置的重试次数内条件不为真,则任务失败。注意 - 使用 wait_forresult['stdout'] 中的值可以使用 result 访问,也就是说,要访问 result['stdout'][0],请使用 result[0] 请参见示例。

备注

注意

  • 已针对 Arista EOS 4.24.6F 进行测试

示例

- name: run show version on remote devices
  arista.eos.eos_command:
    commands: show version

- name: run show version and check to see if output contains Arista
  arista.eos.eos_command:
    commands: show version
    wait_for: result[0] contains Arista

- name: run multiple commands on remote nodes
  arista.eos.eos_command:
    commands:
      - show version
      - show interfaces

- name: run multiple commands and evaluate the output
  arista.eos.eos_command:
    commands:
      - show version
      - show interfaces
    wait_for:
      - result[0] contains Arista
      - result[1] contains Loopback0

- name: run commands and specify the output format
  arista.eos.eos_command:
    commands:
      - command: show version
        output: json

- name: check whether the switch is in maintenance mode
  arista.eos.eos_command:
    commands: show maintenance
    wait_for: result[0] contains 'Under Maintenance'

- name: check whether the switch is in maintenance mode using json output
  arista.eos.eos_command:
    commands:
      - command: show maintenance
        output: json
    wait_for: result[0].units.System.state eq 'underMaintenance'

- name: check whether the switch is in maintenance, with 8 retries
    and 2 second interval between retries
  arista.eos.eos_command:
    commands: show maintenance
    wait_for: result[0]['units']['System']['state'] eq 'underMaintenance'
    interval: 2
    retries: 8

- name: run a command that requires a confirmation. Note that prompt
    takes regexes, and so strings containing characters like brackets
    need to be escaped.
  arista.eos.eos_command:
    commands:
      - command: reload power
        prompt: \[confirm\]
        answer: y
        newline: false

返回值

常见的返回值已在 此处 记录,以下是此模块独有的字段

描述

failed_conditions

列表 / 元素=字符串

已失败的条件列表

返回值: failed

示例: ["...", "..."]

stdout

列表 / 元素=字符串

命令的响应集

返回值: 除低级错误(例如操作插件)外,始终返回

示例: ["...", "..."]

stdout_lines

列表 / 元素=字符串

stdout 值拆分为列表

返回值: 除低级错误(例如操作插件)外,始终返回

示例: [["...", "..."], ["..."], ["..."]]

作者

  • Peter Sprygada (@privateip)