Migrate the code for mount_device

This commit is contained in:
Alexander Gorelyshev
2025-12-04 11:57:29 +04:00
parent 7270684562
commit 008505079e
11 changed files with 149 additions and 0 deletions

View File

@@ -0,0 +1,45 @@
ansible-mount-device
=========
Mount the given block device.
This is essentially a thin wrapper about `ansible.posix.mount` created to standardize handling mounts.
Requirements
------------
None
Role Variables
--------------
`devices`: a list of objects, describing which device should be mounted, and how (see below for an example)
Dependencies
------------
None
Example Playbook
----------------
```yaml
- role: mount_device
devices:
- what: /dev/vdb
where: "/somewhere"
fstype: ext4
opts:
- noatime
state: mounted
```
License
-------
BSD
Author Information
------------------
corvus-migratorius@proton.me

View File

@@ -0,0 +1 @@
---

View File

@@ -0,0 +1 @@
---

View File

@@ -0,0 +1,17 @@
---
galaxy_info:
role_name: mount_device
namespace: genlab
author: "Alexander Gorelyshev"
company: "Genlab, LLC"
description: "Mount the given device"
license: "GPL-2.0-or-later"
min_ansible_version: "2.1"
platforms:
- name: "Ubuntu"
versions: [ "focal", "jammy", "noble" ]
galaxy_tags: []
dependencies: []

View File

@@ -0,0 +1,27 @@
---
- name: Converge
hosts: all
pre_tasks:
- name: "Check if the disk file already exists"
ansible.builtin.stat:
path: /tmp/test_file
register: disk_file
- name: "Create a file to act as a disk if it doesn't exist"
when: not disk_file.stat.exists
changed_when: false
ansible.builtin.shell: |
dd if=/dev/zero of=/tmp/test_file bs=1000000 count=100
mkfs.ext3 /tmp/test_file
roles:
- role: genlab.mount_device
devices:
- what: "/tmp/test_file"
where: "/test_mount"
fstype: ext3
opts:
- noatime
state: mounted

View File

@@ -0,0 +1,27 @@
---
dependency:
name: galaxy
driver:
name: docker
platforms:
- name: ubuntu
image: geerlingguy/docker-${MOLECULE_DISTRO:-ubuntu2404}-ansible:latest
pre_build_image: true
command: ${MOLECULE_DOCKER_COMMAND:-""}
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:rw
cgroupns_mode: host
privileged: true
provisioner:
name: ansible
verifier:
name: ansible
lint: |
set -e
yamllint .
ansible-lint .

View File

@@ -0,0 +1,18 @@
---
- name: Verify
hosts: all
gather_facts: false
any_errors_fatal: true
tasks:
- name: "Check mountpoint" # noqa: command-instead-of-module
changed_when: false
register: mounts
ansible.builtin.command:
cmd: mount -l
- name: "Ensure test_file is mounted on test_mount"
ansible.builtin.assert:
that: "'/tmp/test_file on /test_mount type ext3' in mounts.stdout"
success_msg: "/test_mount is a mounted"
fail_msg: "/test_mount is not on the list of mounts"

View File

@@ -0,0 +1,3 @@
# requirements file
---
collections: []

View File

@@ -0,0 +1,9 @@
---
- name: "Mount devices"
with_items: "{{ devices }}"
ansible.posix.mount:
fstype: "{{ item.fstype }}"
path: "{{ item.where }}"
src: "{{ item.what }}"
opts: "{{ item.opts | join(',') }}"
state: "{{ item.state }}"

View File

@@ -0,0 +1 @@
---