执行 ansible include_tasks 直到满足某个条件(类似于 while until 循环)
Execute ansible include_tasks until a certain condition is met (kind of while until loop)
我想执行包含任务列表直到满足特定条件,我没有固定循环但执行取决于条件。
下面的示例播放
任务列表剧本
tasks.yml
---
- name: "inc test-var {{ test_var }}"
set_fact:
test_var: "{{ test_var | int + 1 }} "
父剧本parent.yml
---
- hosts: all
gather_facts: no
tasks:
- set_fact:
test_var: '1'
req_var: '4'
- name: "Test multi run of task"
include_tasks: ./includes/tasks.yml
register: versions_result
until: test_var is version(req_var, '<')
retries: 5
这里我期望 parent.yml
任务会 运行 多次,但它只会 运行 一次。
有人可以指出我做错了什么以及如何 运行 多次执行任务直到满足条件。
干杯,
多次include_tasks
的一种方法是遍历数字范围,直到达到所需的数字。然而,正如您所期望的那样,“父”剧本不会 运行 多次,任务文件将会。
考虑下面的例子:
通过我的主要剧本 parent.yml
,我想 运行 tasks1.yml
多次(如 set_fact
中定义)。
tasks:
- set_fact:
num: 1
req_num: 4
- include_tasks: tasks1.yml
loop: "{{ range(num, req_num + 1)|list }}"
在我的 tasks1.yml
中,我有一条简单的 debug
消息:
- debug:
msg: "Run {{ item }}"
包括 tasks1.yml
4 次,当我 运行 ansible-playbook parent.yml
:
时给出以下输出
TASK [include_tasks] ******************************************************************************************************************************************************************
included: /home/user/tasks1.yml for localhost
included: /home/user/tasks1.yml for localhost
included: /home/user/tasks1.yml for localhost
included: /home/user/tasks1.yml for localhost
TASK [debug] **************************************************************************************************************************************************************************
ok: [localhost] =>
msg: Run 1
TASK [debug] **************************************************************************************************************************************************************************
ok: [localhost] =>
msg: Run 2
# ...goes till "Run 4"
我想执行包含任务列表直到满足特定条件,我没有固定循环但执行取决于条件。
下面的示例播放
任务列表剧本
tasks.yml
---
- name: "inc test-var {{ test_var }}"
set_fact:
test_var: "{{ test_var | int + 1 }} "
父剧本parent.yml
---
- hosts: all
gather_facts: no
tasks:
- set_fact:
test_var: '1'
req_var: '4'
- name: "Test multi run of task"
include_tasks: ./includes/tasks.yml
register: versions_result
until: test_var is version(req_var, '<')
retries: 5
这里我期望 parent.yml
任务会 运行 多次,但它只会 运行 一次。
有人可以指出我做错了什么以及如何 运行 多次执行任务直到满足条件。
干杯,
多次include_tasks
的一种方法是遍历数字范围,直到达到所需的数字。然而,正如您所期望的那样,“父”剧本不会 运行 多次,任务文件将会。
考虑下面的例子:
通过我的主要剧本 parent.yml
,我想 运行 tasks1.yml
多次(如 set_fact
中定义)。
tasks:
- set_fact:
num: 1
req_num: 4
- include_tasks: tasks1.yml
loop: "{{ range(num, req_num + 1)|list }}"
在我的 tasks1.yml
中,我有一条简单的 debug
消息:
- debug:
msg: "Run {{ item }}"
包括 tasks1.yml
4 次,当我 运行 ansible-playbook parent.yml
:
TASK [include_tasks] ******************************************************************************************************************************************************************
included: /home/user/tasks1.yml for localhost
included: /home/user/tasks1.yml for localhost
included: /home/user/tasks1.yml for localhost
included: /home/user/tasks1.yml for localhost
TASK [debug] **************************************************************************************************************************************************************************
ok: [localhost] =>
msg: Run 1
TASK [debug] **************************************************************************************************************************************************************************
ok: [localhost] =>
msg: Run 2
# ...goes till "Run 4"