Ansible:在本地复制文件时未定义的变量

时间:2019-11-27 15:55:39

标签: ansible yaml devops

我打算制作一本可自动更新某些图书馆的剧本

  

我收到的错误消息:
  “ msg”:“任务包括带有未定义变量的选项。   错误为:“ lib_wheel_path”未定义\ n \ n该错误似乎   位于“ /home/user/Desktop/setup/roles/lib/tasks/main.yml”中:第4行   第3列,但可能\ n不在文件中的其他位置,具体取决于确切的位置   语法问题。\ n \ n出现问题的行是:\ n \ n \ n-名称:   在这里下载lib \ n ^ \ n“

我的 ansible / vars 文件包含libs的路径:

local_path: "~/Some_Libraries/"
lib_wheel_path: "{{ local_path }}lib/"

ansible / role / lib / vars / main.yml 文件包含:

lib_path: "{{ lib_wheel_path }}"
lib_wheels: "'{{ lib_path }}' | regex_findall('(lib\\S*\\.whl)') | sort(reverse=True) }}"

ansible / role / lib / tasks / main.yml 文件包含:

- name: Download lib
  copy:
    src: "{{ lib_path }}/{{ lib_wheels[0] }}"
    dest: /tmp
    remote_src: true

- name: Install lib
  pip:
    name: file:///tmp/{{ lib_wheels[0] }}
  become: yes

预计它将包含 ansible / vars ,其中包含 lib_wheel_path ,如果您对Ansible的工作原理没错的话

1 个答案:

答案 0 :(得分:0)

您必须包含var文件。 例如:如果您的var文件为ansible/role/lib/vars/lib.yml

local_path: "~/Some_Libraries/"
lib_wheel_path: "{{ local_path }}lib/"

在您的剧本中包括以下内容。

- name: vars
  include_vars: lib.yml

- name: Download lib
  copy:
    src: "{{ lib_path }}/{{ lib_wheels[0] }}"
    dest: /tmp
    remote_src: true

- name: Install lib
  pip:
    name: file:///tmp/{{ lib_wheels[0] }}
  become: yes