Hello,
I have a playbook that scans for hard drives and mounts them in order to do
a backup of the data from those drives. I am able to scan for the drives
just fine and I can also mount them (thanks to the Ansible IRC community).
The only issue I am having is mounting ONLY when the partition is *fstype:
ntfs*. As you can see below, when I run the *parted* module, I can see a
key value of *fstype: ntfs*.
ok: [localhost] => (item=sda) => {
"changed": false,
"disk": {
"dev": "/dev/sda",
"logical_block": 512,
"model": "VMware Virtual disk",
"physical_block": 512,
"size": 33554432.0,
"table": "msdos",
"unit": "kib"
},
"invocation": {
"module_args": {
"align": "optimal",
"device": "/dev/sda",
"flags": null,
"label": null,
"name": null,
"number": null,
"part_end": "100%",
"part_start": "0%",
"part_type": "primary",
"state": "info",
"unit": "KiB"
}
},
"item": "sda",
"partitions": [
{
"begin": 1024.0,
"end": 308224.0,
"flags": [
"boot"
],
"fstype": "ntfs",
"num": 1,
"size": 307200.0,
"unit": "kib"
},
{
"begin": 308224.0,
"end": 33553408.0,
"flags": [],
"fstype": "ntfs",
"num": 2,
"size": 33245184.0,
"unit": "kib"
}
],
"script": "unit 'KiB' print"
}
I use the setup module to scan for the devices and the parted module to see
the fstype. Thinking about it further, I should probably just use the
parted module to get me both since parted does provide both.
Using *parted* alone without *setup*, how can I tell my mount task to just
mount ONLY if the fstype is ntfs? Here is my current playbook:
---
## This playbook will backup user data from HD's found
- name: Backup data
hosts: all
connection: local
become: true
become_user: root
become_method: su
#vars_files:
# - vault.yml
#remote_user: root
tasks:
- name: Install jmespath via pip if missing
pip:
name: jmespath
- name: Check for hard drive devices
setup:
filter: ansible_devices
- name: Check for hard drive devices
parted: device=/dev/{{ item }}
register: driveFStype
with_items: "{{ json_query('*.partitions.keys(@)[]') }}"
- name:
mount:
path: "/mnt/{{ item }}"
src: "/dev/{{ item }}"
fstype: ntfs
state: mounted
with_items: "{{ ansible_devices | json_query('*.partitions.keys(@)[]') }}"
The *Check for hard drive device *task above doesn't work. The rest of the
tasks do. I was thinking I could do something like this playbook below to
get what I want but it doesn't work either:
---
## This playbook will backup user data from HD's found
- name: Backup data
hosts: all
connection: local
become: true
become_user: root
become_method: su
#vars_files:
# - vault.yml
#remote_user: root
tasks:
- name: Install jmespath via pip if missing
pip:
name: jmespath
- name: Check for hard drive fstype
parted: device=/dev/{{ item }}
register: whichFS
with_items: "{{ json_query('*.partitions.fstype.keys(@)[]') }}"
- name: Check for hard drive devices
parted: device=/dev/{{ item }}
register: whichPartition
with_items: "{{ json_query('*.partitions.keys(@)[]') }}"
- name:
mount:
path: "/mnt/{{ item }}"
src: "/dev/{{ item }}"
fstype: ntfs
state: mounted
with_items: "{{ ansible_devices | json_query('*.partitions.keys(@)[]') }}"
when: "{{ whichFS }}" == ntfs
In summary, I want to mount any device it finds ONLY if it is NTFS
--
You received this message because you are subscribed to the Google Groups
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/ansible-project/892883d6-e1ac-4522-866a-d60e7b894cfd%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.