在哪里可以找到可以在 Ansible 变量上调用的所有方法

在哪里可以找到可以在 Ansible 变量上调用的所有方法

这是一个简单的Ansible剧本:

- name: this command prints FAILED when it fails
  command: /usr/bin/example-command -x -y -z
  register: command_result
  failed_when: "'FAILED' in command_result.stderr"

现在,我知道变量command_result有一个名为的方法stderr,但如何获取所有方法的列表?

答案1

您可以使用debug转储变量:

- name: this command prints FAILED when it fails
  command: /usr/bin/example-command -x -y -z
  register: command_result
  failed_when: "'FAILED' in command_result.stderr"
- name: dump command_result
  debug: var=command_result

这将输出类似:

TASK: [dump command_result] **************************************************************
ok: [hostname] => {
    "command_result": {
        "changed": false,
        "cmd": "/usr/bin/example-command -x -y -z",
        "delta": "0:00:00.018233",
        "end": "2015-05-07 09:33:08.444674",
        "invocation": {
            "module_args": "/usr/bin/example-command -x -y -z",
            "module_name": "command"
        },
        "rc": 0,
        "start": "2015-05-07 09:33:08.426441",
        "stderr": "",
        "stdout": "whatever",
        "stdout_lines": [
            "whatever"
        ],
        "warnings": []
    }
}

答案2

Ansible 中的变量基本上是由以下内容解释的字符串Jinja2 模板引擎。读语言参考有关模板变量的详细信息。 Jinja2 的内置类型(stringsequencemapping等)类似于 Python 中的对应类型(strlistdict等),并且具有许多通用属性和方法(可调用属性),但它们并不完全相同。

答案3

实际上,这个“variable.stderr”不是一个方法,而是一个变量......在 Ansible 中,你不直接处理“方法”,因为它不是真正的编程语言。最好的学习来源,一如既往的是 ansible 的官方文档,那里对模块进行了很好的介绍。

相关内容