gpt4 book ai didi

ansible - 如何将变量传递给ansible中包含的任务?

转载 作者:行者123 更新时间:2023-12-04 13:38:14 25 4
gpt4 key购买 nike

我有一个Ansible文件(my_file.yml),看起来像这样:

---
- name: The name
hosts: all
tasks:

- include:my_tasks.yml
vars:
my_var: "{{ my_var }}"


my_tasks.yml看起来像这样:

- name: Install Curl
apt: pkg=curl state=installed

- name: My task
command: bash -c "curl -sSL http://x.com/file-{{ my_var }} > /tmp/file.deb"


我想将 my_var作为命令行参数传递给ansible,所以我这样做:

ansible-playbook my_file.yml --extra-vars "my_var=1.2.3"


但是我最终遇到以下错误:

... Failed to template {{ my_var }}: Failed to template {{ my_var }}: recursive loop detected in template string: {{ my_var }}


如果我在 vars中的 my_file.yml看起来像这样:

- include:my_tasks.yml
vars:
my_var: "1.2.3"


有用!我还尝试将变量名更改为不等于 my_var的名称,例如:

- include:my_tasks.yml
vars:
my_var: "{{ my_var0 }}"


但后来我遇到一个错误。在我看来,变量未扩展,而是将字符串 "{{ my_var }}"{{ my_var0 }}传递给 my_tasks.yml。我该如何解决?

最佳答案

您无需将my_var明确传递给include。所有变量(包括Extra-vars)都应可在任何地方直接使用。所以简单地打电话

ansible-playbook my_file.yml --extra-vars "my_var=1.2.3"


并在任务中将其用作 {{ my_var }}即可。

- name: My task
command: bash -c "curl -sSL http://x.com/file-{{ my_var }} > /tmp/file.deb"

关于ansible - 如何将变量传递给ansible中包含的任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32232221/

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