ansible with_项从外部文件传递变量

ansible with_项从外部文件传递变量,ansible,Ansible,我只想传递一个yml文件中的rpm包列表,并在任务中使用_项调用它。 yml文件应为哪种格式。请帮帮我。我在谷歌上搜索了很多,仍然感到困惑。我需要实现,这样我就可以只更改外部文件中的包名,而不更改主文件 例如:files.yaml --- - vars: modules: - firmware-system-p89-2.56_2018_01_22-1.1.i386.rpm - firmware-smartarray-ea3138d8e8-6.30-1.1.x86_

我只想传递一个yml文件中的rpm包列表,并在任务中使用_项调用它。 yml文件应为哪种格式。请帮帮我。我在谷歌上搜索了很多,仍然感到困惑。我需要实现,这样我就可以只更改外部文件中的包名,而不更改主文件

例如:
files.yaml

---
- vars:
    modules:
      - firmware-system-p89-2.56_2018_01_22-1.1.i386.rpm
      - firmware-smartarray-ea3138d8e8-6.30-1.1.x86_64.rpm
=>通过另一个文件中的_项传递到

---
- name: List required packages
  include_vars:
    -files.yml
  set_fact: pkglist="{{ item}}"
  with_items:
    - "{{ modules }}"
  register: pkglist_result


    Comment:
非常感谢。这很有帮助。 我这样做就是为了最终完成。我没有试对。但是我在files.yml中只提到了包的名称,并将真正的包放在任务目录所在的files目录中

- name: List required packages
  include_vars: files.yml
  register: pkglist_result

- name: make a list
  set_fact: pkg_list="{{ pkglist_result.ansible_facts.modules}}"

- debug: var=pkg_list

files.yml

---
modules:
  - firmware-system-p89-2.56_2018_01_22-1.1.i386.rpm
  - firmware-smartarray-ea3138d8e8-6.30-1.1.x86_64.rpm
示例剧本:

---
- hosts: my_hosts
  vars_files:
    - files.yml
  tasks:
    - name: print module name one by one
      debug:
        msg: "{{ item }}"
      with_items: "{{ modules }}"

所以,这个方法是有效的,但当我试图在任务中使用它时,它会抛出错误,比如:errorvars_files'不是任务的有效属性。因此,我尝试使用include_vars,但它不起作用。我希望它很简单,但我遗漏了一些东西。那太傻了。下面的方法很简单。include_vars:files.yml寄存器:pkglist_结果