当前位置: 首页 > 知识库问答 >
问题:

具有变量定义的可跳过import_playbook

空慈
2023-03-14

我有一个main.yaml如下:

- import_playbook: 1.yaml
    
- import_playbook: 2.yaml
  vars:
    allow2: False 
  when: allow2

我希望playbook2.yaml可以完全跳过(不要尝试执行2.yaml中的任何任务)。但是看起来2.yaml中的所有任务都将被调用,但不会被执行。

文件1.yaml

- name: Go1
  hosts: test
  gather_facts: false 

  tasks:
    - debug: msg="Message from 1.yaml"

文件 2.yaml

- name: Go2
  hosts: test
  gather_facts: false 
  tasks:
    - debug: msg="Message from 2.yaml"

输出是:

$ ansible-playbook main.yaml 

PLAY [Go1] ***********
TASK [debug] *********
Thursday 05 October 2017  03:10:12 -0400 (0:00:00.116)       0:00:00.116 ****** 
ok: [test1] => {}

MSG:

Message from 1.yaml


PLAY [Go2] ************

TASK [debug] ************
Thursday 05 October 2017  03:10:12 -0400 (0:00:00.090)       0:00:00.206 ****** 
skipping: [test1]

你可以说2.yaml中的任务也被调用但跳过了。但是我希望在2.yaml中不会调用任何任务。

可能吗?

共有1个答案

长孙正卿
2023-03-14

不,这样是不可能的。

关于导入/包含差异,请参阅servererror的答案。

import_playbook是静态的,所以它总是完成的,并且当语句附加到其中的所有内容时。

 类似资料:
  • 问题内容: JavaScript中的另一种常见情况是为变量提供预设值(如果未定义),例如: 快捷方式表示法是双竖线字符: 由于某种原因,我无法为我工作。是否真的有可能检查是否定义了v,如果x = 10则不定义? 谢谢。 问题答案: 该Opera文章对正在发生的事情给出了不好的描述。 确实会得到if is 的值。如果具有 任何 “假”值也将是正确的。 __ JavaScript中的“ falsey”

  • 所有的语言,都要用到变量。在 Lua 中,不管你在什么地方使用变量,都不需要声明,并且所有的这些变量总是全局变量,除非,你在前面加上 "local"。 这一点要特别注意,因为你可能想在函数里使用局部变量,却忘了用 local 来说明。 至于变量名字,它是大小写相关的。也就是说,A 和 a 是两个不同的变量。 定义一个变量的方法就是赋值。"=" 操作就是用来赋值的 我们一起来定义几种常用类型的变量吧

  • 问题内容: 今天,当我看到全局变量在某些情况下具有价值时,我感到非常惊讶。 例: 给出为 在这里,为什么JavaScript引擎将全局值视为。我知道JavaScript是一种解释语言。如何考虑函数中的变量? 这是JavaScript引擎的陷阱吗? 问题答案: 这种现象称为:JavaScript变量提升 。您绝对不会在函数中访问全局变量。您只访问局部变量。 您的代码等效于以下内容: 还感到惊讶吗?

  • 问题内容: 我目前正在python shell中进行计算。我想要的是Matlab样式列表,您可以在其中看到所有已定义的变量(因此我知道我使用了哪些名称,它们的值等等)。 有没有办法,我该怎么办? 问题答案: 您可以使用一些方法: 将为您提供范围内变量的列表: 将为您提供全局变量字典 会给你字典局部变量 如果可能,您可能要使用IPython。 为了获取所有当前用户定义变量的列表,IPython提供了

  • 用户可以在Playbook中,通过vars关键字自定义变量,使用时用{{ }}引用以来即可。 Playbook中定义和使用的变量的方法 例如下面的例子中,用户定义变量名为http_port,其值为为80。在tasks firewalld中,通过{{ http_port }}引用。 --- - hosts: web vars: http_port: 80 remote_user: r

  • 变量绑定默认是不可变的,但加上 mut 修饰语后变量就可以改变。 fn main() { let _immutable_binding = 1; let mut mutable_binding = 1; println!("Before mutation: {}", mutable_binding); // 正确代码 mutable_binding += 1