在Ansible中实现重复任务直到输出中出现指定的字符串,可以使用until
关键字结合register
和debug
模块。下面是一个示例代码:
- name: Repeat task until specified string appears in output
hosts: your_hosts
gather_facts: false
tasks:
- name: Run the task and register the output
command: your_command
register: command_output
ignore_errors: true
- name: Debug the output
debug:
msg: "{{ command_output.stdout }}"
- name: Repeat the task until specified string appears in output
command: your_command
register: command_output
ignore_errors: true
until: command_output.stdout.find('specified_string') != -1
retries: 10
delay: 10
- name: Debug the final output
debug:
msg: "{{ command_output.stdout }}"
这个示例中,首先运行一个命令并将输出注册到变量command_output
中。然后使用debug
模块打印输出,以便查看结果。接下来使用until
关键字重复运行命令,直到输出中出现指定的字符串为止。重复的次数由retries
参数指定,每次重复之间的延迟由delay
参数指定。最后使用debug
模块打印最终的输出。
将上述代码保存为一个Ansible playbook文件,并根据实际情况修改your_hosts
为主机名或组名,your_command
为要执行的命令,以及specified_string
为要匹配的字符串。然后使用ansible-playbook
命令运行该playbook即可。