是否有一种紧凑的方法来定义因变量?

问题描述:

我有一些变数我想设置(出于干燥的原因)在一个完整的剧本中。这些变量中的每一个都依赖于较早的变量。下面是一个简单的例子,有两个变量,但在我的真实情况有更多:是否有一种紧凑的方法来定义因变量?

- set_fact: 
    current_user: "{{ lookup('env', 'USER') }}" 

- set_fact: 
    repository_root: /home/{{ current_user }}/code/devops 

有了更多的变数,这是一个有点冗长,重复set_fact:线每个变量。不幸的是,如果我把它们合并成以下:

- set_fact: 
    current_user: "{{ lookup('env', 'USER') }}" 
    repository_root: /home/{{ current_user }}/code/devops 

current_user不当时repository_root的表达式求值定义,它失败。

是否有表达许多变量更简洁的方式依赖于剧本中以前的变量?

你确定你在这种情况下,需要set_fact

可以在清单或播放定义这个变量瓦尔:

current_user: "{{ lookup('env', 'USER') }}" 
repository_root: /home/{{ current_user }}/code/devops 

他们将进行评估(和链接,如果需要的话)时才使用。

+0

我没有想过把他们打的变量,这可能是一个好主意。 – BlackVegetable

+0

这的确适用于我的使用模式。我想知道它们是否按照与定义不同的顺序使用,如果它会根据需要进行评估或者只是窒息。好吧。这属于另一个问题。谢谢。 – BlackVegetable