Skip to content

Commit 1244205

Browse files
committed
Add config to disable hosts file modification
This change introduces a new configuration setting 'modify-hosts-file' that allows users to disable CRC's automatic modification of the /etc/hosts file. The setting defaults to true to maintain backward compatibility with existing installations.
1 parent 536cdb8 commit 1244205

File tree

8 files changed

+38
-11
lines changed

8 files changed

+38
-11
lines changed

pkg/crc/config/settings.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ const (
2828
ProxyCAFile = "proxy-ca-file"
2929
ConsentTelemetry = "consent-telemetry"
3030
EnableClusterMonitoring = "enable-cluster-monitoring"
31+
ModifyHostsFile = "modify-hosts-file"
3132
KubeAdminPassword = "kubeadmin-password"
3233
DeveloperPassword = "developer-password"
3334
Preset = "preset"
@@ -129,6 +130,9 @@ func RegisterSettings(cfg *Config) {
129130
cfg.AddSetting(EnableClusterMonitoring, false, ValidateBool, SuccessfullyApplied,
130131
"Enable cluster monitoring Operator (true/false, default: false)")
131132

133+
cfg.AddSetting(ModifyHostsFile, true, ValidateBool, SuccessfullyApplied,
134+
"Allow CRC to modify the /etc/hosts file (true/false, default: true)")
135+
132136
// Telemeter Configuration
133137
cfg.AddSetting(ConsentTelemetry, "", validateYesNo, SuccessfullyApplied,
134138
"Consent to collection of anonymous usage data (yes/no)")

pkg/crc/config/settings_test.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -251,6 +251,9 @@ var configDefaultValuesTestArguments = []struct {
251251
{
252252
EnableClusterMonitoring, false,
253253
},
254+
{
255+
ModifyHostsFile, true,
256+
},
254257
{
255258
ConsentTelemetry, "",
256259
},
@@ -331,6 +334,9 @@ var configProvidedValuesTestArguments = []struct {
331334
{
332335
EnableClusterMonitoring, true,
333336
},
337+
{
338+
ModifyHostsFile, false,
339+
},
334340
{
335341
ConsentTelemetry, "yes",
336342
},

pkg/crc/machine/client.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,10 @@ func (client *client) networkMode() network.Mode {
6464
return crcConfig.GetNetworkMode(client.config)
6565
}
6666

67+
func (client *client) modifyHostsFile() bool {
68+
return client.config.Get(crcConfig.ModifyHostsFile).AsBool()
69+
}
70+
6771
func (client *client) monitoringEnabled() bool {
6872
return client.config.Get(crcConfig.EnableClusterMonitoring).AsBool()
6973
}

pkg/crc/machine/start.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -481,8 +481,9 @@ func (client *client) Start(ctx context.Context, startConfig types.StartConfig)
481481
SSHRunner: sshRunner,
482482
IP: instanceIP,
483483
// TODO: should be more finegrained
484-
BundleMetadata: *vm.bundle,
485-
NetworkMode: client.networkMode(),
484+
BundleMetadata: *vm.bundle,
485+
NetworkMode: client.networkMode(),
486+
ModifyHostsFile: client.modifyHostsFile(),
486487
}
487488

488489
// Run the DNS server inside the VM

pkg/crc/services/dns/dns_darwin.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,10 @@ type resolverFileValues struct {
3333

3434
func runPostStartForOS(serviceConfig services.ServicePostStartConfig) error {
3535
// Update /etc/hosts file for host
36-
if err := addOpenShiftHosts(serviceConfig); err != nil {
37-
return err
36+
if serviceConfig.ModifyHostsFile {
37+
if err := addOpenShiftHosts(serviceConfig); err != nil {
38+
return err
39+
}
3840
}
3941

4042
if serviceConfig.NetworkMode == network.UserNetworkingMode {

pkg/crc/services/dns/dns_linux.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,9 @@ import (
77
func runPostStartForOS(serviceConfig services.ServicePostStartConfig) error {
88
// We might need to set the firewall here to forward
99
// Update /etc/hosts file for host
10-
return addOpenShiftHosts(serviceConfig)
10+
if serviceConfig.ModifyHostsFile {
11+
return addOpenShiftHosts(serviceConfig)
12+
}
13+
14+
return nil
1115
}

pkg/crc/services/dns/dns_windows.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,10 @@ func runPostStartForOS(serviceConfig services.ServicePostStartConfig) error {
1111
if serviceConfig.NetworkMode != network.UserNetworkingMode {
1212
return fmt.Errorf("only user-mode networking is supported on Windows")
1313
}
14-
return addOpenShiftHosts(serviceConfig)
14+
15+
if serviceConfig.ModifyHostsFile {
16+
return addOpenShiftHosts(serviceConfig)
17+
}
18+
19+
return nil
1520
}

pkg/crc/services/services.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,10 @@ import (
77
)
88

99
type ServicePostStartConfig struct {
10-
Name string
11-
SSHRunner *ssh.Runner
12-
BundleMetadata bundle.CrcBundleInfo
13-
IP string
14-
NetworkMode network.Mode
10+
Name string
11+
SSHRunner *ssh.Runner
12+
BundleMetadata bundle.CrcBundleInfo
13+
IP string
14+
NetworkMode network.Mode
15+
ModifyHostsFile bool
1516
}

0 commit comments

Comments
 (0)