ansible with_items从外部文件传递变量

Cha*_*san 1 ansible

我只想在yml文件中传递rpm软件包列表,然后在我的任务中的with_items中调用它。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
Run Code Online (Sandbox Code Playgroud)

=>传入with_items另一个文件

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


    Comment:
Run Code Online (Sandbox Code Playgroud)

非常感谢。有帮助。我这样做只是为了最终完成。我没有尝试正确。但是我只在files.yml中提到了软件包的名称,并将真正的软件包放置在tasks目录所在的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
Run Code Online (Sandbox Code Playgroud)

tec*_*raf 5

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
Run Code Online (Sandbox Code Playgroud)

示例剧本:

---
- hosts: my_hosts
  vars_files:
    - files.yml
  tasks:
    - name: print module name one by one
      debug:
        msg: "{{ item }}"
      with_items: "{{ modules }}"
Run Code Online (Sandbox Code Playgroud)