这是一个简单的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 的内置类型(string
、sequence
、mapping
等)类似于 Python 中的对应类型(str
、list
、dict
等),并且具有许多通用属性和方法(可调用属性),但它们并不完全相同。
答案3
实际上,这个“variable.stderr”不是一个方法,而是一个变量......在 Ansible 中,你不直接处理“方法”,因为它不是真正的编程语言。最好的学习来源,一如既往的是 ansible 的官方文档,那里对模块进行了很好的介绍。