我有一些变量,我想在一本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_user
在repository_root
表达式被评估时未定义且失败。
是否有一种更简洁的方式来表达依赖于剧本中先前变量的许多变量?
答案 0 :(得分:1)
在这种情况下,您确定需要set_fact
吗?
您可以在广告资源或播放变量中定义此变量:
current_user: "{{ lookup('env', 'USER') }}"
repository_root: /home/{{ current_user }}/code/devops
只有在使用时才会对它们进行评估(并在必要时进行链接)。