在ansible中是否有一种简洁的方法来定义因变量?

在ansible中是否有一种简洁的方法来定义因变量?,ansible,Ansible,我想在ansible剧本中设置一些变量(出于枯燥的原因)。这些变量中的每一个都依赖于先前的变量。以下是一个包含两个变量的简单示例,但在我的实际情况中,还有更多变量: - set_fact: current_user: "{{ lookup('env', 'USER') }}" - set_fact: repository_root: /home/{{ current_user }}/code/devops 对于更多变量,为每个变量重复set\u事实:行有点冗长。不幸的是,如果

我想在ansible剧本中设置一些变量(出于枯燥的原因)。这些变量中的每一个都依赖于先前的变量。以下是一个包含两个变量的简单示例,但在我的实际情况中,还有更多变量:

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

- set_fact:
    repository_root: /home/{{ current_user }}/code/devops
对于更多变量,为每个变量重复
set\u事实:
行有点冗长。不幸的是,如果我将它们合并到以下内容中:

- set_fact:
    current_user: "{{ lookup('env', 'USER') }}"
    repository_root: /home/{{ current_user }}/code/devops
在计算
存储库\u root
的表达式时,未定义
当前用户
,因此失败


有没有一种更简洁的方式来表达许多依赖于剧本中先前变量的变量?

在这种情况下,您确定需要
set\u fact

您可以在库存或播放变量中定义此变量:

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

只有在使用时才会对它们进行评估(如果需要,还会进行链接)。

我没有想到将它们放在播放变量中,这可能是个好主意。这确实适用于我的使用模式。我想知道它们的使用顺序是否与它们定义的顺序不同,它是否会根据需要进行评估,或者只是阻塞。哦,好吧。这将属于另一个问题。非常感谢。