Ansible从文件中获取字符串并使用该输出注册变量

时间:2018-03-20 17:48:47

标签: ansible

我的要求如下:

  <Resource auth="Container" logAbandoned="true" name="jdbc/InfraForms"
            type="javax.sql.DataSource" url="jdbc:jtds:sqlserver://<MY_SERVER_IP>:143;lastUpdateCount=true;useLOBs=false" 
            username="XXXXX" password="qqqTyIDd7Rd4JahLDjHJH6LvQ=="
            testOnBorrow="true" validationQuery="SELECT 1"  closeMethod="close"/>
  <Manager pathname=""/>
</Context>

以上是一个文件contact.xml中的内容,我需要获取密码qqqTyIDd7Rd4JahLDjHJH6LvQ==的值。

我如何通过Ansible任务实现这一目标?

2 个答案:

答案 0 :(得分:1)

如果您想尝试使用包含的模块,可以使用slurp模块和set_fact模块,使用jinja2,您可以使用如下正则表达式提取密码:

- name: Slurp file
  slurp:
    src: /your/file
register: passwordfile

- name: Set Password
    set_fact:
      your_password: "{{ passwordfile['content'] | b64decode | regex_findall('\bpassword\b\=\"(.+)\"') }}"

答案 1 :(得分:0)

您可以使用https://docs.ansible.com/ansible/2.4/xml_module.html

有&#34;检索并显示&#34;

的示例

你需要使用pip安装一个python模块,但是应该这样做

OR:

shell: cat /path/to/your_file.xml | grep -e username -e password | awk -F '"' '{print $4}' 
register: output 

当你想要获得价值时,你只需要调用{{output.stdout}}