skip to Main Content

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

Answers


  1. 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 }}"
    
    Login or Signup to reply.
  2. 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
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search