我是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
在此先感谢,任何帮助将不胜感激。
下面的播放创建了已安装设备的列表。如果未挂载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