Ansible mount
模块
一、简介
- 功能:
mount
模块用于在远程主机上管理文件系统的挂载和卸载操作。它可以将指定的设备、分区或网络存储挂载到目标目录,并可以设置为开机自动挂载。 - 使用场景:适用于需要管理文件系统挂载的场景,如挂载磁盘分区、配置 NFS 网络存储、添加新的挂载点等。
二、基本用法
2.1 语法
使用 mount
模块的基本命令格式:
ansible <pattern> -m mount -a "path=<mount_point> src=<device> fstype=<filesystem_type> opts=<options> state=<state>"
<pattern>
: 指定要操作的主机或主机组,例如all
、webservers
。-m mount
: 指定使用mount
模块。-a "..."
: 提供模块的参数,如挂载点、设备、文件系统类型、挂载选项、状态等。
2.2 示例
-
挂载本地分区:
ansible all -m mount -a "path=/mnt/data src=/dev/sdb1 fstype=ext4 opts=defaults state=mounted"
- 解释:在所有主机上,将
/dev/sdb1
分区挂载到/mnt/data
目录,文件系统类型为ext4
,使用默认挂载选项。
- 解释:在所有主机上,将
-
挂载 NFS 网络文件系统:
ansible all -m mount -a "path=/mnt/nfs src=192.168.1.100:/shared/nfs fstype=nfs opts=defaults state=mounted"
- 解释:在所有主机上,将 NFS 共享
192.168.1.100:/shared/nfs
挂载到/mnt/nfs
目录。
- 解释:在所有主机上,将 NFS 共享
-
卸载文件系统:
ansible all -m mount -a "path=/mnt/data state=absent"
- 解释:在所有主机上,卸载挂载在
/mnt/data
目录下的文件系统。
- 解释:在所有主机上,卸载挂载在
-
设置开机自动挂载:
ansible all -m mount -a "path=/mnt/data src=/dev/sdb1 fstype=ext4 opts=defaults state=present"
- 解释:在所有主机上,将
/dev/sdb1
分区配置为自动挂载到/mnt/data
,但不立即挂载。仅在/etc/fstab
中添加条目。
- 解释:在所有主机上,将
三、输出结果
执行 mount
模块后的典型输出示例:
localhost | CHANGED => {
"changed": true,
"cmd": "/bin/mount /mnt/data",
"fstab": "/etc/fstab",
"msg": "mounted",
"name": "/mnt/data",
"state": "mounted"
}
CHANGED
:表示挂载操作已成功执行。changed
: 为true
表示挂载点已被修改或添加。fstab
:显示挂载点条目已添加到/etc/fstab
。msg
:显示挂载状态(如mounted
表示已挂载)。name
:显示挂载点目录。state
:显示当前挂载点的状态。
如果挂载点没有变化(例如已经挂载),输出将类似于:
localhost | SUCCESS => {
"changed": false,
"name": "/mnt/data",
"state": "mounted"
}
SUCCESS
: 表示操作成功。changed
: 为false
表示挂载点未被修改。
四、常见选项
4.1 path
-
功能:指定挂载点的路径。
-
用法:
ansible all -m mount -a "path=/mnt/data src=/dev/sdb1 fstype=ext4 opts=defaults state=mounted"
- 解释:将
/dev/sdb1
分区挂载到/mnt/data
目录。
- 解释:将
4.2 src
-
功能:指定要挂载的设备、分区或网络文件系统的源路径。
-
用法:
ansible all -m mount -a "path=/mnt/data src=/dev/sdb1 fstype=ext4 opts=defaults state=mounted"
- 解释:将本地设备
/dev/sdb1
挂载到/mnt/data
目录。
- 解释:将本地设备
4.3 fstype
-
功能:指定文件系统的类型,如
ext4
、xfs
、nfs
等。 -
用法:
ansible all -m mount -a "path=/mnt/nfs src=192.168.1.100:/shared/nfs fstype=nfs opts=defaults state=mounted"
- 解释:将 NFS 文件系统挂载到
/mnt/nfs
目录。
- 解释:将 NFS 文件系统挂载到
4.4 opts
-
功能:指定挂载选项,如
defaults
、ro
(只读)、noexec
(不允许执行二进制文件)等。 -
用法:
ansible all -m mount -a "path=/mnt/data src=/dev/sdb1 fstype=ext4 opts=ro state=mounted"
- 解释:以只读模式挂载
/dev/sdb1
到/mnt/data
。
- 解释:以只读模式挂载
4.5 state
-
功能:指定挂载点的状态。可以是
mounted
(立即挂载并添加到/etc/fstab
)或present
(仅添加到/etc/fstab
不立即挂载),以及absent
(卸载并从/etc/fstab
中删除)。 -
用法:
ansible all -m mount -a "path=/mnt/data state=absent"
- 解释:卸载
/mnt/data
并从/etc/fstab
中移除相关条目。
- 解释:卸载
五、注意事项
- 权限要求:挂载和卸载操作需要具有适当的权限(通常是 root 权限),确保 Ansible 用户具备相应的 sudo 权限。
- fstab 管理:使用
mount
模块时,建议小心修改/etc/fstab
文件,确保文件格式正确,以避免系统启动时挂载失败。 - 挂载选项:不同的文件系统和使用场景可能需要不同的挂载选项,使用前请确认合适的选项设置。
- 文件系统检查:挂载前建议对设备或分区进行文件系统检查(如
fsck
),以确保其完整性和安全性。