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

时间:2017-06-21 13:48:28

标签: ansible

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

- 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_userrepository_root表达式被评估时未定义且失败。

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

1 个答案:

答案 0 :(得分:1)

在这种情况下,您确定需要set_fact吗?

您可以在广告资源或播放变量中定义此变量:

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

只有在使用时才会对它们进行评估(并在必要时进行链接)。