update
This commit is contained in:
parent
c4ca0328e6
commit
9b74e8c22f
|
|
@ -54,31 +54,27 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Generate netplan configuration file
|
// Generate netplan configuration file
|
||||||
function generate_netplan_config($config) {
|
function generate_netplan_config($config)
|
||||||
|
{
|
||||||
// Create backup of cloud-init configuration
|
// Create backup of cloud-init configuration
|
||||||
$cloud_init_file = '/etc/netplan/50-cloud-init.yaml';
|
$cloud_init_file = '/etc/netplan/50-cloud-init.yaml';
|
||||||
$backup_file = '/var/www/50-cloud-init.yaml_backup';
|
$backup_file = '/var/www/50-cloud-init.yaml_backup';
|
||||||
$source_file = '/var/www/50-cloud-init.yaml';
|
$source_file = '/var/www/50-cloud-init.yaml';
|
||||||
|
|
||||||
// Create backup if it doesn't exist
|
exec('sudo cp /etc/netplan/50-cloud-init.yaml /var/www/50-cloud-init.yaml_backup');
|
||||||
if (file_exists($cloud_init_file)) {
|
|
||||||
if (!file_exists($backup_file)) {
|
|
||||||
copy($cloud_init_file, $backup_file);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Copy current cloud-init config to source file
|
|
||||||
copy($cloud_init_file, $source_file);
|
|
||||||
}
|
|
||||||
|
|
||||||
$netplan_content = "network:\n version: 2\n ethernets:\n";
|
$netplan_content = "network:\n version: 2\n ethernets:\n";
|
||||||
|
|
||||||
foreach ($config as $interface => $settings) {
|
foreach ($config as $interface => $settings) {
|
||||||
// Skip virtual interfaces and loopback
|
// Skip virtual interfaces and loopback
|
||||||
if (strpos($interface, 'enx') === 0 ||
|
if (
|
||||||
|
strpos($interface, 'enx') === 0 ||
|
||||||
strpos($interface, 'docker') === 0 ||
|
strpos($interface, 'docker') === 0 ||
|
||||||
strpos($interface, 'br-') === 0 ||
|
strpos($interface, 'br-') === 0 ||
|
||||||
strpos($interface, 'veth') === 0 ||
|
strpos($interface, 'veth') === 0 ||
|
||||||
$interface === 'lo') {
|
$interface === 'lo'
|
||||||
|
) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -105,25 +101,19 @@ function generate_netplan_config($config) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Write to netplan file
|
// Write to netplan file
|
||||||
file_put_contents('/etc/netplan/50-cloud-init.yaml', $netplan_content);
|
file_put_contents('/var/www/50-cloud-init.yaml', $netplan_content);
|
||||||
|
|
||||||
// Apply netplan configuration with validation
|
// Apply netplan configuration with validation
|
||||||
$output = [];
|
$output = [];
|
||||||
$return_code = 0;
|
$return_code = 0;
|
||||||
|
|
||||||
// Run netplan try to validate configuration
|
// Run netplan try to validate configuration
|
||||||
|
exec('sudo cp /var/www/50-cloud-init.yaml /etc/netplan/50-cloud-init.yaml', $output, $return_code);
|
||||||
exec('sudo netplan try', $output, $return_code);
|
exec('sudo netplan try', $output, $return_code);
|
||||||
|
|
||||||
if ($return_code === 0) {
|
if ($return_code !== 0) {
|
||||||
// Configuration is valid, copy to cloud-init file
|
|
||||||
if (file_exists($source_file)) {
|
|
||||||
copy($source_file, $cloud_init_file);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// Configuration failed, restore backup
|
|
||||||
if (file_exists($backup_file)) {
|
if (file_exists($backup_file)) {
|
||||||
copy($backup_file, $cloud_init_file);
|
exec('sudo cp /var/www/50-cloud-init.yaml_backup /etc/netplan/50-cloud-init.yaml', $output, $return_code);
|
||||||
// Re-apply the backup configuration
|
|
||||||
exec('sudo netplan apply', $output, $return_code);
|
exec('sudo netplan apply', $output, $return_code);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue