50-cloud-init.yaml 不在启动时应用

50-cloud-init.yaml 不在启动时应用

我有一台带有 2 个 eth 端口的 ubuntu 18.04 服务器。eth1 有一个静态 ip,然后 eth2 可以有 3 种不同的配置:dhcp-static-bridge(带有 eth1)。我编写了一个脚本,该脚本在每次启动时启动并检查 USB 端口,最终替换 /etc/netplan/50-cloud-init.yaml 以恢复我的默认配置。重新启动时,50-cloud-init.yaml 实际上已经更改,但我的 eth2 直到第二次重新启动才获取 ip 地址。仅当上一个配置处于桥接模式时才会发生这种情况,当我的 eth2 的上一个配置是静态时,eth2 会在第一次重新启动时获取一个地址。这是我从 crontab 启动的脚本。

#!/bin/bash
source $HOME/.bash_profile
echo "Mount usb..">>/var/log/example/reset.log
sudo mount -t vfat /dev/sdb1 /media/USB 
DIR=/media/USB
FILE=$DIR/__EXAMPLE.reset
if test -f "$FILE"; then
    echo "$FILE exists." >> /var/log/example/reset.log
    cp $FILE /etc/netplan/50-cloud-init.yaml
    #/usr/sbin/netplan apply 
    ip link set enp1s0 up 
    ip link set enp2s0 up 
    ip link set br0 down 
    /sbin/brctl delbr br0 
    /usr/sbin/netplan 
    redis-cli -n 1 set __EXAMPLE.lan_config dhcp 
    rm /opt/example/example_web_config/machine_configs.json
    echo "{\"machines\":[]}" >> /opt/example/example_web_config/machine_configs.json
fi

这是我的 USB 默认配置

network:
ethernets:
    enp1s0:
        dhcp4: no
        optional: true
        addresses: [10.0.0.10/24]
        gateway4: 10.0.0.1
        nameservers:
            addresses: [8.8.8.8,8.8.4.4]
    enp2s0:
        dhcp4: yes
        optional: true
version: 2

相关内容