是否有等同于 Lookups 但在目标主机而不是本地执行的?
Is there an equivalent to Lookups but executing in target host instead of local?
在 Ansible 中,当我需要从 Java 属性文件 (.properties
) 中读取属性时,我会执行以下操作:
- name: Read properties
set_fact:
myProp1: {{ lookup('ini', 'myProp1 type=properties file=/path/to/file.properties }}
myProp2: {{ lookup('ini', 'myProp2 type=properties file=/path/to/file.properties }}
但是,正如 Ansible documentation 所说:
Lookups occur on the local computer, not on the remote computer.
如果属性文件位于远程目标主机,我该怎么办? 我无法使用 include_vars,因为我的属性文件具有 Java 属性文件格式。
如您所见,lookup
是本地的。我使用的一种可能的解决方案可能并非在所有情况下都有效,即在本地获取它然后调用查找。在尝试此操作之前,请务必阅读有关 fetch module 的内容:
- fetch:
src: /path/to/file.properties
dest: /tmp/file.properties
flat: yes
- name: Read properties
set_fact:
myProp1: {{ lookup('ini', 'myProp1 type=properties file=/tmp/file.properties }}
myProp2: {{ lookup('ini', 'myProp2 type=properties file=/tmp/file.properties }}
注意:这只是一种解决方法,而不是解决方案。
在 Ansible 中,当我需要从 Java 属性文件 (.properties
) 中读取属性时,我会执行以下操作:
- name: Read properties
set_fact:
myProp1: {{ lookup('ini', 'myProp1 type=properties file=/path/to/file.properties }}
myProp2: {{ lookup('ini', 'myProp2 type=properties file=/path/to/file.properties }}
但是,正如 Ansible documentation 所说:
Lookups occur on the local computer, not on the remote computer.
如果属性文件位于远程目标主机,我该怎么办? 我无法使用 include_vars,因为我的属性文件具有 Java 属性文件格式。
如您所见,lookup
是本地的。我使用的一种可能的解决方案可能并非在所有情况下都有效,即在本地获取它然后调用查找。在尝试此操作之前,请务必阅读有关 fetch module 的内容:
- fetch:
src: /path/to/file.properties
dest: /tmp/file.properties
flat: yes
- name: Read properties
set_fact:
myProp1: {{ lookup('ini', 'myProp1 type=properties file=/tmp/file.properties }}
myProp2: {{ lookup('ini', 'myProp2 type=properties file=/tmp/file.properties }}
注意:这只是一种解决方法,而不是解决方案。