简体   繁体   中英

How to extract path from Ansible Output and use it else where within my playbook?

I want to extract the path out of the output given by the below command:

Command:

/opt/myapp/dir/bin/client -a 8101 -h localhost -u user -p pass properties-global-export

Output:

client: JAVA_HOME not set; results may vary
Exporting file: org.fusesource.fabric.agent.properties
Exporting file: local.app.node.vendor.service4.properties
Exporting file: local.app.node.data.service3.properties
Exporting file: local.app.node.vendor.service1.properties
Exporting file: local.app.node.vendor.service2.properties
Files dumped into directory: /opt/myapp/install-node/node-2.1.11/data/properties-tmp

and use /opt/myapp/install-node/node-2.1.11/data/properties-tmp path to perform a copy command within my playbook.

- name: Export Properties File
  no_log: true
  shell: "{{ fuse_esb_client_dir }} -h localhost -a {{ karaf_port }} -u {{ karaf_user }} -p {{ karaf_pass }} properties-global-export | grep -o '\''/[^ ]*'\ "
  register: temp

- set_fact:
    tempPath: "{{ temp.stdout }}"

- name: All Files Exported To Path
  debug: var=temp.stdout

- name: Backup All Property Files to {{ backup_location }}
  command: cp -r "{{ tempPath }}" "{{ backup_location }}"

Piped the output to grep grep -o '\''/[^ ]*'\ " The Extra '\' and \ on the start and end is used to escape the regex characters within the playbook. (Remove These if you want to test in your cli)

This Gave Me This Output

/opt/myapp/install-node/node-2.1.11/data/properties-tmp

Dumped that output with set_fact and used it within my playbook. Hopefully someone finds this usefull. :))) Also for the pros like Jeff:) please let me know if I can improve anything within my playbook.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM