tasks:
- name: Hello Sherlock
debug:
msg: "{{ some_registered_output }}"
- name: Hello Avengers
debug:
msg: "{{ some_var }}"
从上面的内容来看,Ansible 有没有办法动态获取任务名称作为变量,
示例中
var1=Hello Sherlock
var2=Hello Avengers
如果我可以获得任务的名称,我就可以跟踪每个任务的状态,例如通过在执行期间将任务名称即时写入文件。
有人会参考任务成功列表的文件,并通过向某些编排工具提供输入来在失败的同一任务处启动 (
--start-at-task
) 任务。
或者还有其他方法可以维护任务执行状态吗?
感谢对此的帮助。
...在执行过程中将任务名称即时写入文件。有人会引用任务成功列表的文件,并通过向某些编排工具提供输入来启动(
)在失败的同一任务中的任务...--start-at-task
log_plays
回调 – 将 playbook 输出写入日志文件 正在执行的操作。如果通过 ansible.cfg
配置
[defaults]
stdout_callback = yaml
callback_whitelist = log_plays
[callback_log_plays]
log_folder = /tmp/ansible/hosts
一个最小的示例手册
---
- hosts: test
become: false
gather_facts: false
tasks:
- name: Execute shell command
shell: sleep 0
- name: Debug task
debug:
msg: "Debug output"
将导致stdout
为
PLAY [test.example.com] **********************
TASK [Execute shell command] *****************
changed: [test.example.com]
TASK [Debug task] ****************************
ok: [test.example.com] =>
msg: Debug output
PLAY RECAP ***********************************
test.example.com : ok=2 changed=1
和一个日志文件/tmp/ansible/hosts/test.example.com
,内容为
Oct 16 2023 19:45:00 - log_plays.yml - Execute shell command - shell - OK - {"module_args": {"creates": null, "executable": null, "_uses_shell": true, "strip_empty_ends": true, "_raw_params": "sleep 0", "removes": null, "argv": null, "warn": false, "chdir": null, "stdin_add_newline": true, "stdin": null}} => {"stderr_lines": [], "changed": true, "end": "2023-10-16 19:45:00.296408", "_ansible_no_log": false, "stdout": "", "cmd": "sleep 0", "rc": 0, "start": "2023-10-16 19:45:00.287217", "stderr": "", "delta": "0:00:00.009191", "stdout_lines": [], "msg": ""}
Oct 16 2023 19:45:00 - log_plays.yml - Debug task - debug - OK - {"msg": "Debug output", "changed": false, "_ansible_verbose_always": true, "_ansible_no_log": false}
另一个问答