---
|
- name: Test if device was already mapped
|
stat:
|
path: "/var/preserve/{{ disk_map_device.name }}"
|
changed_when: false
|
register: rfile
|
|
- when: not rfile.stat.exists
|
block:
|
- name: Map device using LUN
|
changed_when: false
|
shell: >-
|
sg_map -x
|
| awk '($2 == 5 && $5 == {{ disk_map_device.lun }}) {print $7}'
|
register: result
|
|
- name: Volume to map
|
debug:
|
msg: "{{ disk_map_device.name }} (LUN={{ disk_map_device.lun }}) : {{ result.stdout }}"
|
|
- name: Fail if volume not found
|
fail:
|
when: result.stdout == ''
|
|
- name: Set fact using variable name
|
set_fact: {"{{ disk_map_device.name }}": "{{ result.stdout }}"}
|
when: result is succeeded
|
|
- name: Write down device for idempotency
|
copy:
|
dest: /var/preserve/{{ disk_map_device.name }}
|
content: "{{ result.stdout }}"
|
force: no
|
when: result is succeeded
|
|
# idempotency
|
|
- when: rfile.stat.exists
|
block:
|
- name: get device_name from file (from previous run)
|
slurp:
|
src: /var/preserve/{{ disk_map_device.name }}
|
register: slurp_result
|
|
- name: Set fact using variable name
|
set_fact: {"{{ disk_map_device.name }}": "{{ slurp_result.content|b64decode }}"}
|
when: slurp_result is succeeded
|