在Ansible中检测并挂载文件系统

问题描述 投票:0回答:1

我是ansible的新手并尝试检测文件系统而不是挂载(如果存在)。我通过以下链接: -

1. https://docs.ansible.com/ansible/latest/modules/filesystem_module.html
2. https://docs.ansible.com/ansible/latest/modules/mount_module.html

我已手动连接硬盘驱动器,命令fdisk -l检测为“/ dev / sdb”。我想要ansible代码来检测并在某个位置挂载这个文件系统。运行代码“df -h”时没有显示已安装的文件系统,也没有失败。即使我通过ansible代码列出所有文件系统或挂载点,这个文件系统(/ dev / sdb)也没有列出。

代码片段:

    - name: Create File System
      filesystem:
        fstype: ext4
        dev: "{{ mount_src }}"

    - name: Mount File System
      mount:
        path: "{{ mount_path }}"
        src: "{{ mount_src }}"
        fstype: ext4
        state: mounted

在此先感谢,任何帮助将不胜感激。

ubuntu ansible mount
1个回答
0
投票

下面的播放创建了已安装设备的列表。如果未挂载mount_src,则创建文件系统并将mount_src挂载到mount_path。

- hosts: localhost
  vars:
    mount_src: /dev/sdb
    mount_path: /export
  tasks:
    - name: Create list of mounted devices
      set_fact:
        mounted_devices: "{{ ansible_mounts|json_query('[].device') }}"
    - name: Create File System
      filesystem:
        fstype: ext4
        dev: "{{ mount_src }}"
      when: mount_src not in mounted_devices
    - name: Mount File System
      mount:
        path: "{{ mount_path }}"
        src: "{{ mount_src }}"
        fstype: ext4
        state: mounted
      when: mount_src not in mounted_devices

(未测试)

Ansible不会收集有关块设备的事实。示例如何在Linux中创建块设备列表

- hosts: localhost
  tasks:
    - command: 'lsblk -lno NAME'
      register: results
    - name: Create list of block devices
      set_fact:
        block_devices: "{{ block_devices|default([]) + [ item ] }}"
      loop: "{{ results.stdout_lines }}"
    - debug:
        var: block_devices

得到:

ok: [127.0.0.1] => 
  block_devices:
  - sda
  - sda1
  - sda2
  - sda3
  - sda5
  - sdb
  - sdb1
  - sdb9
  - mmcblk0
  - mmcblk0p1
© www.soinside.com 2019 - 2024. All rights reserved.