有没有办法在不改变系统的情况下尝试 netplan 配置?

有没有办法在不改变系统的情况下尝试 netplan 配置?

我在远程服务器上工作,每次在网络配置方面搞砸了什么的时候,进入救援模式都是一个痛苦的过程。

有没有办法实现类似这样的事情:

Netplan apply /customscript.yaml

我可以在排除网络配置故障时使用它。因此,如果我进行冷重启,服务器将恢复其“默认设置”。

答案1

Bionic 中有一种新方法可以实现这一点:netplan try

就你的情况来说,netplan try --config-file foo.yaml应该做你想做的事。

该手册页没有什么帮助,因为它主要描述了配置文件格式,但是--help却给你提供了该工具的相当好的概述:

ubuntu@netplan:~$ netplan try --help
usage: /usr/sbin/netplan try [-h] [--debug] [--config-file CONFIG_FILE]
                             [--timeout TIMEOUT]

Try to apply a new netplan config to running system, with automatic rollback

optional arguments:
  -h, --help            show this help message and exit
  --debug               Enable debug messages
  --config-file CONFIG_FILE
                        Apply the config file in argument in addition to
                        current configuration.
  --timeout TIMEOUT     Maximum number of seconds to wait for the user's
                        confirmation

答案2

首先我创建了一个 sh 脚本,将其放在 /etc/netplan/ 中并将其命名为 backup.sh

#!/bin/sh

# -q quiet
# -c nb of pings to perform

ping -q -c5 aa.bb.cc.dd > /dev/null

if [ $? -eq 0 ]
then
        : #do absolutly nothing! server can ping its external IP.
else 
        # restore, working config to netplan.
        cp -f /etc/netplan/02-netcfg.yaml /etc/netplan/01-netcfg.yaml 
        # apply network config.
        netplan apply
fi

如果我无法 ping 服务器 IP,此脚本会将我所做的更改恢复为存储在 02-netcfg.yaml 中的有效配置设置。我已使用 aa.bb.cc.dd 屏蔽了我的服务器 IP 地址,因此您必须将其替换为要 ping 的 IP,以便执行 if 中的“else”。

然后我将此脚本设置为每次服务器重启时运行,并为其启用一个 Cron 作业,当我进行网络配置时,该作业每 3 分钟运行一次。

相关内容