playbook 里 {{ }} 里怎么再加入远端传过来的变量
时间: 2024-10-13 19:09:12 浏览: 6
在Ansible Playbook中,`{{ }}`是模板语言Jinja2的一部分,用于插入变量值。如果你想在Playbook中插入来自远程源(如另一个Playbook、动态获取的API数据或配置管理工具)的变量,你可以通过几个步骤来实现:
1. **获取远程变量**:
- 使用`include_vars`或`import_role`从其他文件导入变量:```yaml
- include_vars: path_to_your_variable_file.yml
- import_role: name_of_role vars_from_role.yml
- 或者使用`delegate_to`调用另一个 playbook 并获取其结果:```yaml
- delegate_to: localhost become: yes
tasks:
- debug:
var: result_from_remote_playbook
- 如果是从API或其他服务获取,可以利用`ansible_become`或`ansible_module_runner`模块。
2. **将远程变量赋值给本地变量**:
- 在包含或导入变量后,你需要将它们存储到本地的可重用变量中,例如:```yaml
variables:
remote_data: "{{ lookup('file', 'remote_variables.yml') | from_yaml }}"
- 或者如果变量是一个结构体,可能需要做一些转换:```yaml
- set_fact:
my_variable: "{{ remote_variable | json_query(query_expression) }}"
3. **在任务中使用该变量**:
现在可以在playbook的其他地方直接使用`my_variable`了,比如在`debug`, `template`, 或`command`等任务中:```yaml
- debug:
msg: "Remote variable value: {{ my_variable.key1 }}"
阅读全文