在Ansible中,当您在SSH和命令之后注册变量并尝试从stdout_lines中读取时遇到问题,这可能是由于Ansible的异步特性引起的。为了解决这个问题,您可以使用“async”和“poll”选项来等待命令完成并获取stdout_lines。下面是一个示例代码:
- name: Run command and register output
command: your_command
register: command_output
async: 60
poll: 0
- name: Wait for command to complete
async_status:
jid: "{{ command_output.ansible_job_id }}"
mode: finished
register: command_result
until: command_result.finished
- name: Get stdout_lines from command output
set_fact:
output_lines: "{{ command_result.results[0].item.stdout_lines }}"
在上面的示例中,我们首先使用“command”模块运行您的命令,并将输出注册到“command_output”变量中。然后,我们使用“async_status”模块等待命令完成。最后,我们使用“set_fact”模块将stdout_lines存储在“output_lines”变量中,以便在后续任务中使用。
请注意,上面的示例假设您的命令只返回一个结果。如果您的命令返回多个结果,您可能需要根据情况调整代码。