在现代IT运维中,自动化管理工具如Ansible极大地提高了系统的部署和维护效率。Ansible通过简单的命令行即可实现复杂的配置管理任务。本文将详细介绍如何使用Ansible自动化配置sysctl参数、SELinux策略和文件系统挂载点,帮助您简化运维工作,提升系统稳定性。

自动化是提升效率的关键,别再手动操作了!
sysctl 是用于修改Linux内核运行时参数的工具。通过Ansible,我们可以轻松地批量配置这些参数。
| 模块名称 | 模块说明 |
| name(required) | 指定 sysctl 变量的点分隔路径(也称为键) |
| value/val | sysctl 键的所需值 |
| reload | 是否生效参数,默认是yes |
| sysctl_file | sysctl文件绝对路径 |
| state | present 和 absent |
示例配置:
# 将net.ipv4.ip_forward=1写入到/etc/sysctl.conf文件中
$ ansible -i hosts ansible -m sysctl -a "name=net.ipv4.ip_forward value=1 state=present"
$ tail -1 /etc/sysctl.conf
net.ipv4.ip_forward=1
# 将net.ipv4.ip_forward=1写入到/etc/sysctl.d/test.conf中
$ ansible -i hosts ansible -m sysctl -a "name=net.ipv4.ip_forward value=1 sysctl_file=/etc/sysctl.d/test.conf state=present"
$ cat /etc/sysctl.d/test.conf
net.ipv4.ip_forward=1
# 删除net.ipv4.ip_forward参数
$ ansible -i hosts ansible -m sysctl -a "name=net.ipv4.ip_forward state=absent"
SELinux(Security-Enhanced Linux)是Linux内核的一个安全模块,提供了强制访问控制机制。通过Ansible,我们可以管理和配置SELinux策略。
| 模块名称 | 模块说明 |
| configfile | selinux配置文件路径,默认/etc/selinux/config |
| state(required) | selinux状态
|
示例配置:
$ grep ^SELINUX= /etc/selinux/config
SELINUX=enforcing
# selinux设置为disabled状态
$ ansible -i hosts ansible -m selinux -a "state=disabled"
[WARNING]: SELinux state temporarily changed from 'enforcing' to 'permissive'. State change will take effect next reboot.
172.139.20.56 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": true,
"configfile": "/etc/selinux/config",
"msg": "Config SELinux state changed from 'enforcing' to 'disabled'",
"policy": "targeted",
"reboot_required": true,
"state": "disabled"
}
$ grep ^SELINUX= /etc/selinux/config
SELINUX=disabled
文件系统挂载点的配置是系统管理中的一个重要部分。通过Ansible,我们可以自动化地管理和配置挂载点。
| 模块名称 | 模块说明 |
| src | 要挂载的设备路径 |
| path(required) | 挂载点的路径 |
| opts | 挂载参数 |
| fstype | 文件系统类型 |
| state(required) | 执行影响状态。
|
示例配置:
1、初始化磁盘并挂载
$ ansible -i hosts ansible -m shell -a " mkfs.xfs -f /dev/vdb " -b
172.139.20.56 | CHANGED | rc=0 >>
meta-data=/dev/vdb isize=512 agcount=4, agsize=655360 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=2621440, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
$ ansible -i hosts ansible -m mount -a " src=/dev/vdb path=/data fstype=xfs state=mounted"
172.139.20.56 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": true,
"dump": "0",
"fstab": "/etc/fstab",
"fstype": "xfs",
"name": "/data",
"opts": "defaults",
"passno": "0",
"src": "/dev/vdb"
}
$ df -h /data/
Filesystem Size Used Avail Use% Mounted on
/dev/vdb 10G 33M 10G 1% /data
$ tail -1 /etc/fstab
/dev/vdb /data xfs defaults 0 0
$ ansible -i hosts ansible -m mount -a " src=172.139.20.170:/data/nfs path=/data fstype=nfs opts=defaults,_netdev state=mounted "
172.139.20.56 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": true,
"dump": "0",
"fstab": "/etc/fstab",
"fstype": "nfs",
"name": "/data",
"opts": "defaults,_netdev",
"passno": "0",
"src": "172.139.20.170:/data/nfs"
}
$ df -h /data/
Filesystem Size Used Avail Use% Mounted on
172.139.20.170:/data/nfs 62G 31G 31G 50% /data
$ tail -1 /etc/fstab
172.139.20.170:/data/nfs /data nfs defaults,_netdev 0 0
3、取消挂载并删除/etc/fstab文件中相关配置
$ ansible -i hosts ansible -m mount -a " src=172.139.20.170:/data/nfs path=/data fstype=nfs opts=defaults,_netdev state=absent "
172.139.20.56 | FAILED! => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"msg": "Error rmdir /data: [Errno 39] Directory not empty: '/data'"
}
通过上述示例,您可以轻松地使用Ansible自动化配置sysctl参数、SELinux策略和文件系统挂载点。这不仅简化了运维工作,还提高了系统的稳定性和安全性。希望本文的内容对您有所帮助,如果您有任何疑问或建议,欢迎在评论区留言讨论!
别忘了,关注我们的公众号,获取更多关于容器技术和云原生领域的深度洞察和技术实战,让我们携手在技术的海洋中乘风破浪!

文章转载自Linux运维智行录,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




