ansible with_items从外部文件传递变量

时间:2018-04-17 03:17:05

标签: ansible

我只想在yml文件中传递rpm包列表,并在我的任务中的with_items中调用它。 yml文件应该是哪种格式。请帮我。我google了很多,仍然感到困惑。我需要实现,以便我只能更改外部文件中的包名称,而无需更改主文件。

例如: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

=>传递到另一个文件中的with_items

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


    Comment:

非常感谢。这有帮助。 我做到这一点终于完成了。我没有尝试过。但我只提到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

1 个答案:

答案 0 :(得分: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

示例剧本:

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