How to read a line from a file into an ansible variable

I'm trying to read the database password on a remote host from the file /etc/mysql/debian.cnf. Format of the file is below. Is there a way to parse out the password field so I can drop a mysql user via Ansible?

# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host     = localhost
user     = root
password = 5unnyv4l3
socket   = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host     = localhost
user     = root
password = 5unnyv4l3
socket   = /var/run/mysqld/mysqld.sock
basedir  = /usr

It looks like the 'slurp' module will work for your requirements: https://docs.ansible.com/ansible/latest/modules/slurp_module.html

- name: extract password from file
  slurp:
    src: /etc/mysql/debian.cnf
register: mypasswordfile

- name: Set User Password
  user: name=newUser
    password="{{ passwordfile['content'] | b64decode | regex_findall('password = \"(.+)\"') | first }}"

Edited after testing and fixing.


If the file is local to the ansible system you can use the ini lookup which will read in values from a ini style file. If your file is remote you can use fetch/slurp to pull a copy to the local system.

I would guess the lookup would be something like

- debug: msg="Password is {{ lookup('ini', 'password section=client file=my.cnf') }}"