how to read all lines from a file in ansible playbook

1.5k views Asked by At

I have a file called packages.txt which contains a list of packages. I have to read each line of that package.txt through my ansible file rpm.yml. Here is my code

- hosts: myhost
  tasks:

     - name: RPM Filter
       theforeman.foreman.content_view_filter:
         username: "admin"
         password: "admin"
         server_url: "myhost"
         name: "rpm filter"
         organization: "myorg"
         content_view: "My content view"
         filter_type: "rpm"
         package_name: "{{ item }}"
         inclusion: True
       loop:
         - packages.txt


My packages.txt contains these

open-ssh
nginx
grafana
vim

Any help would be appreciated

2

There are 2 answers

0
seshadri_c On BEST ANSWER

You will need an additional task to read the file. The simplest way would be to cat the file and register into a variable. Then this variable can be used for the next task.

Something like:

    - name: get contents of package.txt
      command: "cat packages.txt"
      register: _packages

     - name: RPM Filter
       theforeman.foreman.content_view_filter:
         username: "admin"
         password: "admin"
         server_url: "myhost"
         name: "rpm filter"
         organization: "myorg"
         content_view: "My content view"
         filter_type: "rpm"
         package_name: "{{ item }}"
         inclusion: True
       loop: "{{ _packages.stdout_lines }}"
0
Vladimir Botka On

query the lines plugin. For example

    - debug:
        var: item
      loop: "{{ query('lines', 'cat packages.txt') }}"

gives (abridged)

  item: open-ssh
  item: nginx
  item: grafana
  item: vim

See the details about the plugin

shell> ansible-doc -t lookup lines