ansible中的block是否支持其中的条件语句
我怀疑ansible是否支持这种情况。 场景-块有一个带有when的条件。 块内的任务还有更多的条件(when)。 任务的main.yml已经完成ansible中的block是否支持其中的条件语句,ansible,ansible-2.x,Ansible,Ansible 2.x,我怀疑ansible是否支持这种情况。 场景-块有一个带有when的条件。 块内的任务还有更多的条件(when)。 任务的main.yml已经完成 - block: - name: task 1 shell: check_install when: ansible_distribution == 'CentOS' - name: task 2 shell: echo "test task" when: out.rc >
- block:
- name: task 1
shell: check_install
when: ansible_distribution == 'CentOS'
- name: task 2
shell: echo "test task"
when: out.rc > "0" #assuming **out** is registered above
become: true
when: sw_install|default(False) == True
根据ansible文件
您可以应用于单个任务的大部分内容(除了
循环)可以应用于块级别,这也使得
更容易设置任务通用的数据或指令。这是不可能的
表示指令影响块本身,但由
由块包围的任务。i、 e.a何时将应用于任务,
不是街区本身
所以基本的问题是,如果我用上面的任务运行剧本,条件流是如何发生的。它是否像和条件一样运行
像
run task 1 when: block conditional & task one conditional satisfies
run task 2 when: block conditional & task two conditional satisfies
向块添加条件与向块内的每个任务添加相同的条件完全相同 如果在块级别有一个条件,在任务级别有另一个条件,那么它们都将在任务运行时进行计算 这也意味着,如果您的任务之一在运行期间更改了块条件,则每次都将重新计算它。以以下为例:
- name: Set a block condition true
set_fact:
block_condition: true
- name: Set a task condition true
set_fact:
task_condition: true
- block:
- name: Write a message
debug:
msg: Block and task conditions are true
when: task_condition | bool
- name: Change condition
set_fact:
block_condition: false
- name: Write a message
debug:
msg: Block condition is true
when: block_condition | bool
在这种情况下,将跳过块的最后一个任务,因为运行时
block\u condition
将求值为false
。向块添加条件与向块内的每个任务添加相同的条件完全相同
如果在块级别有一个条件,在任务级别有另一个条件,那么它们都将在任务运行时进行计算
这也意味着,如果您的任务之一在运行期间更改了块条件,则每次都将重新计算它。以以下为例:
- name: Set a block condition true
set_fact:
block_condition: true
- name: Set a task condition true
set_fact:
task_condition: true
- block:
- name: Write a message
debug:
msg: Block and task conditions are true
when: task_condition | bool
- name: Change condition
set_fact:
block_condition: false
- name: Write a message
debug:
msg: Block condition is true
when: block_condition | bool
在这种情况下,块的最后一个任务将被跳过,因为运行时
block_条件
将评估为false
。什么阻止您测试它?+1关于@VladimirBotka的问题。。。您还询问了一个与ansible block文档中第一个示例相同的用法问题。@VladimirBotka我已经问过了&只需要确认我的理解是否正确correct@RobH不,那是不正确的。在have conditional for任务中没有一个示例。仅设置块级条件。我需要澄清的是,这两个条件都像and运算符一样进行计算。@user2700022:下次与我们共享结果并使其生效。Zeitounator为你做的是什么阻止你测试它?@VladimirBotka的问题+1。。。您还询问了一个与ansible block文档中第一个示例相同的用法问题。@VladimirBotka我已经问过了&只需要确认我的理解是否正确correct@RobH不,那是不正确的。在have conditional for任务中没有一个示例。仅设置块级条件。我需要澄清的是,这两个条件都像and运算符一样进行计算。@user2700022:下次与我们共享结果并使其生效。Zeitounator为你做的。