如何从文件中读取一行到ansible变量

分享于 

2分钟阅读

互联网

 

问题:

我正在尝试从文件 /etc/mysql/debian.cnf 读取远程主机上的数据库密码。 文件的格式为 below。 有办法解析 password 字段以便我可以通过Ansible除去一个mysql用户?


# 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




回答 1:

看起来'slurp'模块可以满足你的需求: 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('bpasswordb') }}"




注:我还没有亲自测试:)


回答 2:

If文件在ansible系统local可以使用查询,它将从ini样式文件中读取值。 如果文件是远程的,你可以使用 fetch/slurp将副本拉到本地系统。

我想查找应该是类似于


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





文件  VAR  ANSI  Ansible  variable  
相关文章