Linux网络运维脚本实战示例:配置下发
ahcoder 2025-05-26 13:13 9 浏览
在Linux网络运维场景中,自动化配置下发是提高效率的关键。
一个示例展示如何编写一个Shell脚本,用于远程批量部署网络配置到多台服务器。本示例将使用SSH无密码登录和Ansible自动化工具来简化和加速配置的下发过程。
准备工作
- Ansible安装:
确保控制节点(即你运行脚本的机器)上已安装Ansible。通过包管理器安装,如在Ubuntu上执行 sudo apt-get update && sudo apt-get install ansible。
- SSH密钥对: 在
控制节点上生成SSH密钥对(如果尚未生成),并将其公钥复制到目标节点的~/.ssh/authorized_keys文件中,实现无密码登录。
- Inventory文件:
Ansible使用inventory文件来管理目标主机列表。直接在脚本中定义或使用独立的inventory文件。下面示例中,我们将直接在脚本中定义。
实战脚本示例 (deploy_network_config.yml)
这是一个Ansible playbook的YAML格式示例,用于配置网络接口的静态IP地址、子网掩码和默认网关。我们想要配置的目标主机已经定义在一个名为hosts的组内。
Yaml1---
2- name: Deploy Network Configuration
3 hosts: hosts
4 become: yes
5 tasks:
6 - name: Set static IP configuration for eth0
7 ansible.builtin.lineinfile:
8 path: /etc/network/interfaces
9 regexp: "^iface eth0 inet"
10 line: "iface eth0 inet static\n address 192.168.1.10\n netmask 255.255.255.0\n gateway 192.168.1.1"
11 state: present
12 when: ansible_interfaces | map('lower') | list | select('equalto', 'eth0') | list | length > 0
13
14 - name: Restart networking service
15 ansible.builtin.service:
16 name: networking
17 state: restarted
使用说明
- 修改配置: 根据实际情况修改IP地址、子网掩码和网关等信息。
- 运行Playbook: 在含有上述YAML内容的文件所在目录,执行以下命令以运行playbook:
- Bash1ansible-playbook -i "localhost," -c local deploy_network_config.yml
- 或者,如果你有一个真正的远程主机清单文件(比如my_hosts),则执行:
- Bash1ansible-playbook -i my_hosts deploy_network_config.yml
注意事项
- 本示例适用于使用/etc/network/interfaces管理网络配置的老版Debian/Ubuntu系统。对于使用Systemd的系统(如CentOS 7+、Ubuntu 18.04+),配置文件路径和格式会有所不同,要调整Ansible任务以匹配/etc/sysconfig/network-scripts/ifcfg-eth0这样的文件结构。
- 确保Ansible的become指令(即sudo)被正确配置,以便有权限修改网络配置文件和重启网络服务。
- 实际应用中,考虑使用Ansible的变量和角色来进一步提升配置的灵活性和复用性。
相关推荐
- Linux 5.17网络子系统方面的变化相当令人兴奋
-
正在开发的5.17内核的Linux网络子系统的更新是相当令人兴奋的,因为Linux在云中的大型服务器和企业网络设备上的运行以及小型物联网硬件上的Linux都是如此多产。新版不仅像往常一样有大量的硬件驱...
- 12 个流行的 Linux 网络命令及其使用方法
-
在Linux系统中,网络管理是系统管理员和开发者的核心技能之一。无论是排查网络问题、监控流量,还是配置网络接口,Linux提供了众多强大的命令行工具。这些工具功能强大且灵活,能够帮助用户高效地完成网络...
- Linux集群自动化监控系统Zabbix集群搭建到实战
-
自动化监控系统Cacti特点:将监控到的数据,绘制成各种图形基于SNMP协议(网络管理协议)的监控软件,强大的绘图能力Nagios特点:状态检查和报警机制(例如:内存不足或CPU负载高时,及时的...
- Linux超简单入门开箱篇(linux怎么入门)
-
此篇文章主要会带你介绍Linux操作系统,包括Linux本身、Linux如何使用、以及系统调用和Linux是如何工作的。Linux简介UNIX是一个交互式系统,用于同时处理多进程和多...
- 新手教程,Linux系统下MySQL的安装
-
看了两三个教程。终于在哔哩哔哩找到一个简单高效的教程,成功安装,up主名叫bili逍遥bili,感兴趣可以去看看。下面这个是我总结的安装方法环境:CentOS764位1.下载安装包,个人觉得在...
- Windows 11 + WSL2 打造轻量级 Linux 本地开发环境实战教程
-
一、前言在2025年,越来越多开发者希望在不安装双系统的前提下体验Linux开发的强大能力,而微软的WSL2(WindowsSubsystemforLinux2)正好提供了这一可能。...
- linux系统奔溃之vmcore:kdump 的亲密战友 crash
-
转自https://blog.csdn.net/yuanfang_way/article/details/77987399crash是目前广泛使用的linux内核崩溃转储文件的分析工具,掌握c...
- 音视频开发为什么要学SRS流媒体服务器
-
1SRS是什么官方定义:SRS是一个流媒体集群,支持RTMP/HLS/HTTP-FLV/RTSP/DASH/WebRTC/SRT/GB28181,高效、稳定、易用,简单而快乐。2SRS能够解决什么...
- 77% 的 Linux 运维都不懂的内核问题,这篇全告诉你了
-
前言之前在实习时,听了OOM的分享之后,就对Linux内核内存管理充满兴趣,但是这块知识非常庞大,没有一定积累,不敢写下,担心误人子弟,所以经过一个一段时间的积累,对内核内存有一定了解之后,今...
- Linux 上利用Nginx代理uWSGI处理Flask web应用
-
一、介绍最近开发要用一个测试环境,是这样的Nginx+uwsgi+flask的一个结构。下面是一些记录,在Centos系统上使用Flask架构部署一个简单的Python应用。然后使用Nginx作...
- C++ TinyWebserver 部署到Linux下,并运行
-
C++TinyWebserver部署到Linux下,并运行(使用的是Vmware的虚拟机运行Ubuntu20.04)环境:Vmware+Ubuntu20.041.Tinywebserver项目...
- SUSE Linux方案已在Amazon Web Services发布
-
近日,SUSE宣布已在亚马逊云服务(AWS)上发布SUSELinuxEnterpriseServerforSAPApplications。通过SUSE的“bring-your-own-s...
- 遨游于Linux的“老鸟想要一份学习pdf:鸟哥的Linux私房菜学习篇
-
您是准备学习Linux的“小菜鸟”,却不知道该如何下手?您是遨游于Linux的“老鸟想要一本案头必备的工具书?《鸟哥的Linux私房菜基础学习篇(第四版)》是您绝佳的选择!全新改版,提供您更新的技术...
- Mdserver-web|一款简单Linux面板服务
-
可以说是宝塔面板的精简版,界面很相似,只是更加简洁些,没有那么臃肿官网:https://www.midoks.icu/项目开源地址:https://github.com/midoks/mdserver...
- 国内外比较知名常见的6个可视化WEB管理面板
-
Linux服务器的管理对于新手用户来说是一个挺头疼的问题,由于用作服务器的Linux主机通常都没有图形化界面(节省资源),与日常使用的Windows有着很大的差别,一些必备组件的安装或更新就...
- 一周热门
- 最近发表
- 标签列表
-
- linux 远程 (37)
- u盘 linux (32)
- linux 登录 (34)
- linux 路径 (33)
- linux 文件命令 (35)
- linux 是什么 (35)
- linux 界面 (34)
- 查看文件 linux (35)
- linux 语言 (33)
- linux代码 (32)
- linux 查看命令 (33)
- 关闭linux (34)
- root linux (33)
- 删除文件 linux (35)
- linux 主机 (34)
- linux与 (33)
- linux 函数 (35)
- linux .ssh (35)
- cpu linux (35)
- 查看linux 系统 (32)
- linux 防火墙 (33)
- linux 手机 (32)
- linux 镜像 (34)
- linux ip地址 (34)
- linux 用户查看 (33)