gpt4 book ai didi

Ansible 在变量模板中使用任务返回变量

转载 作者:行者123 更新时间:2023-12-04 23:19:59 24 4
gpt4 key购买 nike

我正在尝试制作一个环境变量列表,以便在由于版本差异而在每个主机上的路径可能略有不同的任务中使用。

例如,/some/common/path/v_123/rest/of/path
我在通过角色导入的 variables.yml 文件中创建了这些变量的列表。
roles/somerole/varables/main.yml包含以下内容

somename:
somevar: 'coolvar'
env:
SOME_LIB_PATH: /some/common/path/{{ unique_part.stdout }}/rest/of/path

然后我有一个运行这样的任务
- name:  Get unique path part
shell: 'ls /some/common/path/'
register: unique_part
tags: workflow

- name: Perform some actions that need some paths
shell: 'binary argument argument'
environment: somename.env

但是我收到一些关于 undefined variable 的 Ansible 错误。

或者我试图预定义 unique_part.stdout希望寄存器覆盖预定义的变量,但后来我遇到了其他错误 - 模板失败。

有没有另一种方法可以根据命令返回来制作这些变量?

最佳答案

您还可以使用事实:
http://docs.ansible.com/set_fact_module.html

# Prepare unique variables 
- hosts: myservers
tasks:
- name: Get unique path part
shell: 'ls /some/common/path/'
register: unique_part
tags: workflow

- name: Add as Fact per for each hosts
set_fact:
library_path: "{{ unique_part.stdout }}"

# launch roles that use those unique variables
- hosts: myservers
roles:
- somerole

通过这种方式,您可以在使用主机之前动态地向主机添加变量。

关于Ansible 在变量模板中使用任务返回变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29837296/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com