首页 > 解决方案 > 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}}"

基于调试任务引发的未定义变量错误,我假设在任务下声明的变量的范围仅限于该特定任务。

如果是这样,有没有办法在“任务”下面声明整个游戏都可以访问的变量?

标签: ansible

解决方案


尝试这个

  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 }}"

推荐阅读