Tôi có một file ansible (my_file.yml
) mà trông giống như sau:Làm cách nào để chuyển các biến cho các tác vụ được bao gồm trong ansible?
---
- name: The name
hosts: all
tasks:
- include:my_tasks.yml
vars:
my_var: "{{ my_var }}"
my_tasks.yml
trông như thế này:
- 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"
Tôi muốn vượt qua my_var
như một đối số dòng lệnh để ansible vì vậy tôi làm như thế này:
ansible-playbook my_file.yml --extra-vars "my_var=1.2.3"
Nhưng tôi kết thúc với lỗi sau:
... Failed to template {{ my_var }}: Failed to template {{ my_var }}: recursive loop detected in template string: {{ my_var }}
Nếu tôi các vars
trong my_file.yml
trông như thế này:
- include:my_tasks.yml
vars:
my_var: "1.2.3"
nó hoạt động! Tôi cũng đã thử thay đổi tên biến thành cái gì đó không bằng my_var
, ví dụ:
- include:my_tasks.yml
vars:
my_var: "{{ my_var0 }}"
nhưng sau đó tôi kết thúc với một lỗi. Dường như với tôi rằng biến không được mở rộng và thay vào đó, chuỗi "{{ my_var }}"
hoặc {{ my_var0 }}
được chuyển đến my_tasks.yml
. Tôi giải quyết điều này như thế nào?
Làm cách nào để chuyển biến từ một tác vụ (thay vì đặt var trong sách bài vở hoặc tại dòng lệnh)? –