ansible.builtin.lines – read lines from command


This module is part of ansible-base and included in all Ansible installations. In most cases, you can use the short module name lines even without specifying the collections: keyword. Despite that, we recommend you use the FQCN for easy linking to the module documentation and to avoid conflicting with other collections that may have the same module name.

New in version 0.9: of ansible.builtin


  • Run one or more commands and split the output into lines, returning them as a list


Parameter Choices/Defaults Configuration Comments
string / required
command(s) to run



  • Like all lookups, this runs on the Ansible controller and is unaffected by other keywords such as ‘become’. If you need to use different permissions, you must change the command or run Ansible as another user.

  • Alternatively, you can use a shell/command task that runs against localhost and registers the result.


- name: We could read the file directly, but this shows output from command
  debug: msg="{{ item }} is an output line from running cat on /etc/motd"
  with_lines: cat /etc/motd

- name: More useful example of looping over a command result
  shell: "/usr/bin/frobnicate {{ item }}"
    - "/usr/bin/frobnications_per_host --param {{ inventory_hostname }}"

Return Values

Common return values are documented here, the following are the fields unique to this lookup:

Key Returned Description
list / elements=string
lines of stdout from command