#ansible
#ansible
Вопрос:
Я пытаюсь объявить некоторые переменные на основе значения, возвращаемого задачей внутри игры. Это то, что у меня есть.
tasks:
- name: search for file
find:
paths: "{{path}}"
patterns: "*{{pattern}}*"
recurse: "yes"
file_type: "file"
register: result
vars:
file_path: result.files.0.path
file_name: file_path.split("/")[-1]
file_model: file_name.split("_")[0]
file_version: file_name.split("_")[1]
- debug:
msg: "info: {{file_path}} : {{file_name}} : {{file_model}} : {{file_version}}"
Основываясь на ошибке неопределенной переменной, вызванной задачей отладки, я предполагаю, что переменные, объявленные в рамках задачи, ограничены этой конкретной задачей.
Если да, есть ли какой-либо способ объявить переменные, доступные для всей игры, в разделе «задачи»?
Ответ №1:
Попробуйте это
tasks:
- name: search for file
find:
paths: "{{ path }}"
patterns: "*{{ pattern }}*"
recurse: yes
file_type: file
register: result
- set_fact:
file_path: "{{ result.files.0.path }}"
file_name: "{{ file_path.split('/')[-1] }}"
file_model: "{{ file_name.split('_')[0] }}"
file_version: "{{ file_name.split('_')[1] }}"
- debug:
msg: "info: {{ file_path }} :
{{ file_name }} :
{{ file_model }} :
{{ file_version }}"
Комментарии:
1. Они неизменны, правильно? Это означает, что я не мог затем установить одни и те же факты с разными значениями в последующей игре?