Variables 当不使用include语句计算条件时
我有一个Variables 当不使用include语句计算条件时,variables,include,ansible,prompt,Variables,Include,Ansible,Prompt,我有一个tikitaka3.yml(主yml文件)和一个tikitaka3a.yml(包括剧本) 我会提示用户输入一个变量,然后在tasks部分中调用它,如下所示: --- - hosts: all vars: khan: # contents: "{{ lookup('file', '/home/imran/Desktop/tobefetched/file1.txt') }}" vars_prompt: - name: targetenv prompt: 1.)EPC 2.)C
tikitaka3.yml
(主yml文件)和一个tikitaka3a.yml
(包括剧本)
我会提示用户输入一个变量,然后在tasks部分中调用它,如下所示:
---
- hosts: all
vars:
khan:
# contents: "{{ lookup('file', '/home/imran/Desktop/tobefetched/file1.txt') }}"
vars_prompt:
- name: targetenv
prompt: 1.)EPC 2.)CLIENTS 3)TESTERS
private: False
default: "1"
gather_facts: no
tasks:
- name: Inlude playbook tikitaka3a
include: /home/khan/Desktop/playbooks/tikitaka3a.yml target=umar
when: targetenv.stdout|int < 2 #this statement has no effect
#when: targetenv == 1 #Neither does this statement
#when: targetenc == "1" #and neither does this statement have affect
#- name: stuff n stuff # This task will give an error if not commented
# debug: var=targetenv.stdout
---
-主持人:全部
变量:
可汗:
#内容:“{lookup('file','/home/imran/Desktop/tobefetched/file1.txt')}”
变量提示:
-姓名:targetenv
提示:1.)EPC 2.)客户3)测试人员
二等兵:错
默认值:“1”
收集事实:不
任务:
-名称:Inlude剧本tikitaka3a
包括:/home/khan/Desktop/playbooks/tikitaka3a.yml target=umar
当:targetenv.stdout | int<2#此语句无效
#when:targetenv==1#此语句也不适用
#when:targetenc==“1”#并且此语句都没有影响
#-名称:stuff n stuff#如果未对该任务进行注释,则会出现错误
#调试:var=targetenv.stdout
include语句始终生效,而不计算when条件
为什么会发生这种情况?当您包含一个Ansible任务文件时,它会将
When:
条件附加到所有包含的任务。这意味着您将看到显示的任务,即使when:
条件为false,但所有任务都将被跳过
上面代码的一个问题是targetenv.stdout
,下面是一个格式正确的工作版本:
- hosts: all
gather_facts: no
vars_prompt:
- name: targetenv
prompt: 1.)EPC 2.)CLIENTS 3)TESTERS
private: False
default: "1"
tasks:
- name: Inlude playbook tikitaka3a
include: roles/test/tasks/tikitaka3a.yml target=umar
when: targetenv|int < 2
-主机:所有
收集事实:不
变量提示:
-姓名:targetenv
提示:1.)EPC 2.)客户3)测试人员
二等兵:错
默认值:“1”
任务:
-名称:Inlude剧本tikitaka3a
包括:角色/测试/任务/tikitaka3a.yml目标=umar
时间:targetenv | int<2
首先,您应该格式化代码。正确的语句是:when:targetenv==“1”
(您的语句中有一个输入错误,“targetenc”),我只是在运行时输入的。我尝试了我展示的所有方法。即使在playbook执行时输入2或3,我也会将playbook包括在内。更新后会提到将包括您的任务文件,但会跳过所有任务。