Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ansible:有没有办法让变量没有默认值?_Ansible_Ansible Playbook - Fatal编程技术网

Ansible:有没有办法让变量没有默认值?

Ansible:有没有办法让变量没有默认值?,ansible,ansible-playbook,Ansible,Ansible Playbook,我有一些VAR: vars: var1: foo var2: bar 我希望有一个var3,但我希望它被设置为运行时 我不想使用vars\u提示符,因为这需要用户干预 我想强制在调用这个剧本时,使用一个--额外的vars var3=bat来调用它 我不想只是在某个地方引用{{var3}},因为我喜欢这个剧本有点自我记录的想法 我宁愿不做一些include\u vars文件,除非这是这种情况所要求的,并且是标准的 我认为以下情况是不允许的: vars: var1: fo

我有一些VAR:

vars:
    var1: foo
    var2: bar
我希望有一个var3,但我希望它被设置为运行时

  • 我不想使用
    vars\u提示符
    ,因为这需要用户干预
  • 我想强制在调用这个剧本时,使用一个
    --额外的vars var3=bat
    来调用它
  • 我不想只是在某个地方引用
    {{var3}}
    ,因为我喜欢这个剧本有点自我记录的想法
  • 我宁愿不做一些
    include\u vars
    文件,除非这是这种情况所要求的,并且是标准的
  • 我认为以下情况是不允许的:

    vars:
        var1: foo
        var2: bar
        var3
    

我该怎么办

可能是
assert
作为解决方法是否足够好?
它提供了剧本的良好可读性。
将其添加为您的第一个任务:

- assert:
    that:
      - var3 is defined
      - var3 in ['one', 'two', 'three']

这似乎是一个很棒的解决方法!你能想到其他的吗?我很好奇它们是否存在。不,我通常是这样做的。如果你希望它是自我记录的,这就是如何做到的。否则,只需使用剧本中的变量,并在自述文件中给出说明。如果他们不包括它,Ansible将为未定义的var抛出一个错误。