Merge "Allow DNS server configuration for kubernetes"
This commit is contained in:
commit
4d62be583e
|
@ -29,4 +29,5 @@ from configutilities.common.utils import validate_address # noqa: F401
|
||||||
from configutilities.common.utils import ip_version_to_string # noqa: F401
|
from configutilities.common.utils import ip_version_to_string # noqa: F401
|
||||||
from configutilities.common.utils import lag_mode_to_str # noqa: F401
|
from configutilities.common.utils import lag_mode_to_str # noqa: F401
|
||||||
from configutilities.common.utils import validate_openstack_password # noqa: F401
|
from configutilities.common.utils import validate_openstack_password # noqa: F401
|
||||||
|
from configutilities.common.utils import validate_nameserver_address_str # noqa: F401
|
||||||
from configutilities.common.utils import extract_openstack_password_rules_from_file # noqa: F401
|
from configutilities.common.utils import extract_openstack_password_rules_from_file # noqa: F401
|
||||||
|
|
|
@ -23,6 +23,7 @@ from configutilities.common.utils import is_mtu_valid
|
||||||
from configutilities.common.utils import get_service
|
from configutilities.common.utils import get_service
|
||||||
from configutilities.common.utils import get_optional
|
from configutilities.common.utils import get_optional
|
||||||
from configutilities.common.utils import validate_address_str
|
from configutilities.common.utils import validate_address_str
|
||||||
|
from configutilities.common.utils import validate_nameserver_address_str
|
||||||
from configutilities.common.exceptions import ConfigFail
|
from configutilities.common.exceptions import ConfigFail
|
||||||
from configutilities.common.exceptions import ValidateFail
|
from configutilities.common.exceptions import ValidateFail
|
||||||
|
|
||||||
|
@ -944,8 +945,25 @@ class ConfigValidator(object):
|
||||||
raise ConfigFail("SDN Configuration is no longer supported")
|
raise ConfigFail("SDN Configuration is no longer supported")
|
||||||
|
|
||||||
def validate_dns(self):
|
def validate_dns(self):
|
||||||
if self.conf.has_section('DNS'):
|
# DNS config is optional
|
||||||
raise ConfigFail("DNS Configuration is no longer supported")
|
if not self.conf.has_section('DNS'):
|
||||||
|
return
|
||||||
|
if self.cgcs_conf is not None:
|
||||||
|
self.cgcs_conf.add_section('cDNS')
|
||||||
|
for x in range(0, 3):
|
||||||
|
if self.conf.has_option('DNS', 'NAMESERVER_' + str(x + 1)):
|
||||||
|
dns_address_str = self.conf.get('DNS', 'NAMESERVER_' + str(
|
||||||
|
x + 1))
|
||||||
|
try:
|
||||||
|
dns_address = validate_nameserver_address_str(
|
||||||
|
dns_address_str)
|
||||||
|
if self.cgcs_conf is not None:
|
||||||
|
self.cgcs_conf.set('cDNS', 'NAMESERVER_' + str(x + 1),
|
||||||
|
str(dns_address))
|
||||||
|
except ValidateFail as e:
|
||||||
|
raise ConfigFail(
|
||||||
|
"Invalid DNS NAMESERVER value of %s.\nReason: %s" %
|
||||||
|
(dns_address_str, e))
|
||||||
|
|
||||||
def validate_ntp(self):
|
def validate_ntp(self):
|
||||||
if self.conf.has_section('NTP'):
|
if self.conf.has_section('NTP'):
|
||||||
|
|
|
@ -28,6 +28,7 @@ from configutilities import validate_network_str
|
||||||
from configutilities import validate_address_str
|
from configutilities import validate_address_str
|
||||||
from configutilities import validate_address
|
from configutilities import validate_address
|
||||||
from configutilities import ip_version_to_string
|
from configutilities import ip_version_to_string
|
||||||
|
from configutilities import validate_nameserver_address_str
|
||||||
from configutilities import validate_openstack_password
|
from configutilities import validate_openstack_password
|
||||||
from configutilities import DEFAULT_DOMAIN_NAME
|
from configutilities import DEFAULT_DOMAIN_NAME
|
||||||
from netaddr import IPNetwork
|
from netaddr import IPNetwork
|
||||||
|
@ -463,6 +464,10 @@ class ConfigAssistant():
|
||||||
|
|
||||||
# SDN config
|
# SDN config
|
||||||
self.enable_sdn = False
|
self.enable_sdn = False
|
||||||
|
|
||||||
|
# DNS config
|
||||||
|
self.nameserver_addresses = ["8.8.8.8", "8.8.4.4", ""]
|
||||||
|
|
||||||
# HTTPS
|
# HTTPS
|
||||||
self.enable_https = False
|
self.enable_https = False
|
||||||
# Network config
|
# Network config
|
||||||
|
@ -2666,6 +2671,64 @@ class ConfigAssistant():
|
||||||
""" Cluster host interface configuration complete"""
|
""" Cluster host interface configuration complete"""
|
||||||
self.cluster_host_interface_configured = True
|
self.cluster_host_interface_configured = True
|
||||||
|
|
||||||
|
def get_dns_servers(self):
|
||||||
|
"""Produce a comma separated list of DNS servers."""
|
||||||
|
servers = [str(s) for s in self.nameserver_addresses if s]
|
||||||
|
return ",".join(servers)
|
||||||
|
|
||||||
|
def input_dns_config(self):
|
||||||
|
"""Allow user to input DNS config and perform validation."""
|
||||||
|
|
||||||
|
print("\nDomain Name System (DNS):")
|
||||||
|
print("-------------------------\n")
|
||||||
|
print(textwrap.fill(
|
||||||
|
"Configuring DNS servers accessible through the external "
|
||||||
|
"OAM network allows domain names to be mapped to IP "
|
||||||
|
"addresses.", 80))
|
||||||
|
print(textwrap.fill(
|
||||||
|
"The configuration of at least one DNS server is mandatory. To "
|
||||||
|
"skip the configuration of one or more nameservers (1 to 3 are "
|
||||||
|
"allowed), enter C to continue to the next configuration item.",
|
||||||
|
80))
|
||||||
|
print('')
|
||||||
|
|
||||||
|
if self.external_oam_subnet.version == 6:
|
||||||
|
self.nameserver_addresses = ["2001:4860:4860::8888",
|
||||||
|
"2001:4860:4860::8844", ""]
|
||||||
|
|
||||||
|
for server in range(0, len(self.nameserver_addresses)):
|
||||||
|
while True:
|
||||||
|
user_input = raw_input(
|
||||||
|
"Nameserver " + str(server + 1) + " [" +
|
||||||
|
str(self.nameserver_addresses[server]) + "]: ")
|
||||||
|
if user_input.lower() == 'q':
|
||||||
|
raise UserQuit
|
||||||
|
elif user_input.lower() == 'c':
|
||||||
|
if server == 0:
|
||||||
|
print("At least one DNS server is required.")
|
||||||
|
continue
|
||||||
|
for x in range(server, len(self.nameserver_addresses)):
|
||||||
|
self.nameserver_addresses[x] = ""
|
||||||
|
return
|
||||||
|
elif user_input == "":
|
||||||
|
user_input = self.nameserver_addresses[server]
|
||||||
|
# Pressing enter with a blank default will continue
|
||||||
|
if user_input == "":
|
||||||
|
return
|
||||||
|
|
||||||
|
try:
|
||||||
|
try:
|
||||||
|
ip_input = validate_nameserver_address_str(
|
||||||
|
user_input, self.external_oam_subnet.version)
|
||||||
|
except ValidateFail as e:
|
||||||
|
print('{}'.format(e))
|
||||||
|
continue
|
||||||
|
self.nameserver_addresses[server] = ip_input
|
||||||
|
break
|
||||||
|
except (AddrFormatError, ValueError):
|
||||||
|
print("Invalid address - please enter a valid IPv4 "
|
||||||
|
"address")
|
||||||
|
|
||||||
def input_authentication_config(self):
|
def input_authentication_config(self):
|
||||||
"""Allow user to input authentication config and perform validation.
|
"""Allow user to input authentication config and perform validation.
|
||||||
"""
|
"""
|
||||||
|
@ -2711,6 +2774,8 @@ class ConfigAssistant():
|
||||||
self.management_interface_configured = True
|
self.management_interface_configured = True
|
||||||
self.external_oam_interface_configured = True
|
self.external_oam_interface_configured = True
|
||||||
self.default_pxeboot_config()
|
self.default_pxeboot_config()
|
||||||
|
if not self.kubernetes:
|
||||||
|
self.nameserver_addresses = ["", "", ""]
|
||||||
|
|
||||||
if utils.is_cpe():
|
if utils.is_cpe():
|
||||||
self.system_mode = sysinv_constants.SYSTEM_MODE_DUPLEX
|
self.system_mode = sysinv_constants.SYSTEM_MODE_DUPLEX
|
||||||
|
@ -2747,6 +2812,8 @@ class ConfigAssistant():
|
||||||
if self.kubernetes:
|
if self.kubernetes:
|
||||||
self.input_cluster_host_config()
|
self.input_cluster_host_config()
|
||||||
self.input_external_oam_config()
|
self.input_external_oam_config()
|
||||||
|
if self.kubernetes:
|
||||||
|
self.input_dns_config()
|
||||||
self.input_authentication_config()
|
self.input_authentication_config()
|
||||||
|
|
||||||
def is_valid_management_multicast_subnet(self, ip_subnet):
|
def is_valid_management_multicast_subnet(self, ip_subnet):
|
||||||
|
@ -3079,6 +3146,19 @@ class ConfigAssistant():
|
||||||
|
|
||||||
self.external_oam_interface_configured = True
|
self.external_oam_interface_configured = True
|
||||||
|
|
||||||
|
# DNS configuration
|
||||||
|
if self.kubernetes:
|
||||||
|
if config.has_section('cDNS'):
|
||||||
|
self.nameserver_addresses = ["", "", ""]
|
||||||
|
for x in range(0, len(self.nameserver_addresses)):
|
||||||
|
if config.has_option('cDNS',
|
||||||
|
'NAMESERVER_' + str(x + 1)):
|
||||||
|
cvalue = config.get('cDNS',
|
||||||
|
'NAMESERVER_' + str(x + 1))
|
||||||
|
if cvalue != "NC" and cvalue != "":
|
||||||
|
self.nameserver_addresses[x] = \
|
||||||
|
IPAddress(cvalue)
|
||||||
|
|
||||||
# SDN Network configuration
|
# SDN Network configuration
|
||||||
if config.has_option('cSDN', 'ENABLE_SDN'):
|
if config.has_option('cSDN', 'ENABLE_SDN'):
|
||||||
raise ConfigFail("The option ENABLE_SDN is no longer "
|
raise ConfigFail("The option ENABLE_SDN is no longer "
|
||||||
|
@ -3511,6 +3591,18 @@ class ConfigAssistant():
|
||||||
else:
|
else:
|
||||||
print("External OAM address: " + str(self.external_oam_address_0))
|
print("External OAM address: " + str(self.external_oam_address_0))
|
||||||
|
|
||||||
|
if self.kubernetes:
|
||||||
|
print("\nDNS Configuration")
|
||||||
|
print("-----------------")
|
||||||
|
dns_config = False
|
||||||
|
for x in range(0, len(self.nameserver_addresses)):
|
||||||
|
if self.nameserver_addresses[x]:
|
||||||
|
print("Nameserver " + str(x + 1) + ": " +
|
||||||
|
str(self.nameserver_addresses[x]))
|
||||||
|
dns_config = True
|
||||||
|
if not dns_config:
|
||||||
|
print("External DNS servers not configured")
|
||||||
|
|
||||||
if self.region_config:
|
if self.region_config:
|
||||||
print("\nRegion Configuration")
|
print("\nRegion Configuration")
|
||||||
print("--------------------")
|
print("--------------------")
|
||||||
|
@ -3796,6 +3888,17 @@ class ConfigAssistant():
|
||||||
f.write("EXTERNAL_OAM_1_ADDRESS=" +
|
f.write("EXTERNAL_OAM_1_ADDRESS=" +
|
||||||
str(self.external_oam_address_1) + "\n")
|
str(self.external_oam_address_1) + "\n")
|
||||||
|
|
||||||
|
if self.kubernetes:
|
||||||
|
# DNS configuration
|
||||||
|
f.write("\n[cDNS]")
|
||||||
|
f.write("\n# DNS Configuration\n")
|
||||||
|
for x in range(0, len(self.nameserver_addresses)):
|
||||||
|
if self.nameserver_addresses[x]:
|
||||||
|
f.write("NAMESERVER_" + str(x + 1) + "=" +
|
||||||
|
str(self.nameserver_addresses[x]) + "\n")
|
||||||
|
else:
|
||||||
|
f.write("NAMESERVER_" + str(x + 1) + "=NC" + "\n")
|
||||||
|
|
||||||
# Network configuration
|
# Network configuration
|
||||||
f.write("\n[cNETWORK]")
|
f.write("\n[cNETWORK]")
|
||||||
f.write("\n# Data Network Configuration\n")
|
f.write("\n# Data Network Configuration\n")
|
||||||
|
@ -5188,6 +5291,17 @@ class ConfigAssistant():
|
||||||
"required_patches": "N/A"}
|
"required_patches": "N/A"}
|
||||||
client.sysinv.load.create(**patch)
|
client.sysinv.load.create(**patch)
|
||||||
|
|
||||||
|
def _populate_dns_config(self, client):
|
||||||
|
# Retrieve the list of dns servers to get the uuid
|
||||||
|
dns_list = client.sysinv.idns.list()
|
||||||
|
dns_record = dns_list[0]
|
||||||
|
values = {
|
||||||
|
'nameservers': self.get_dns_servers(),
|
||||||
|
'action': 'apply'
|
||||||
|
}
|
||||||
|
patch = sysinv.dict_to_patch(values)
|
||||||
|
client.sysinv.idns.update(dns_record.uuid, patch)
|
||||||
|
|
||||||
def populate_initial_config(self):
|
def populate_initial_config(self):
|
||||||
"""Populate initial system inventory configuration"""
|
"""Populate initial system inventory configuration"""
|
||||||
try:
|
try:
|
||||||
|
@ -5195,6 +5309,8 @@ class ConfigAssistant():
|
||||||
self._populate_system_config(client)
|
self._populate_system_config(client)
|
||||||
self._populate_load_config(client)
|
self._populate_load_config(client)
|
||||||
self._populate_network_config(client)
|
self._populate_network_config(client)
|
||||||
|
if self.kubernetes:
|
||||||
|
self._populate_dns_config(client)
|
||||||
controller = self._populate_controller_config(client)
|
controller = self._populate_controller_config(client)
|
||||||
# ceph_mon config requires controller host to be created
|
# ceph_mon config requires controller host to be created
|
||||||
self._inventory_config_complete_wait(client, controller)
|
self._inventory_config_complete_wait(client, controller)
|
||||||
|
|
|
@ -0,0 +1,86 @@
|
||||||
|
[cSYSTEM]
|
||||||
|
# System Configuration
|
||||||
|
SYSTEM_MODE=duplex
|
||||||
|
TIMEZONE=UTC
|
||||||
|
|
||||||
|
[cPXEBOOT]
|
||||||
|
# PXEBoot Network Support Configuration
|
||||||
|
PXECONTROLLER_FLOATING_HOSTNAME=pxecontroller
|
||||||
|
|
||||||
|
[cMGMT]
|
||||||
|
# Management Network Configuration
|
||||||
|
MANAGEMENT_INTERFACE_NAME=eth1
|
||||||
|
MANAGEMENT_INTERFACE=eth1
|
||||||
|
MANAGEMENT_MTU=1500
|
||||||
|
MANAGEMENT_SUBNET=192.168.204.0/24
|
||||||
|
LAG_MANAGEMENT_INTERFACE=no
|
||||||
|
CONTROLLER_FLOATING_ADDRESS=192.168.204.2
|
||||||
|
CONTROLLER_0_ADDRESS=192.168.204.3
|
||||||
|
CONTROLLER_1_ADDRESS=192.168.204.4
|
||||||
|
NFS_MANAGEMENT_ADDRESS_1=192.168.204.5
|
||||||
|
NFS_MANAGEMENT_ADDRESS_2=192.168.204.6
|
||||||
|
CONTROLLER_FLOATING_HOSTNAME=controller
|
||||||
|
CONTROLLER_HOSTNAME_PREFIX=controller-
|
||||||
|
OAMCONTROLLER_FLOATING_HOSTNAME=oamcontroller
|
||||||
|
DYNAMIC_ADDRESS_ALLOCATION=yes
|
||||||
|
MANAGEMENT_MULTICAST_SUBNET=239.1.1.0/28
|
||||||
|
|
||||||
|
[cINFRA]
|
||||||
|
# Infrastructure Network Configuration
|
||||||
|
INFRASTRUCTURE_INTERFACE_NAME=NC
|
||||||
|
INFRASTRUCTURE_INTERFACE=NC
|
||||||
|
INFRASTRUCTURE_VLAN=NC
|
||||||
|
INFRASTRUCTURE_MTU=NC
|
||||||
|
INFRASTRUCTURE_SUBNET=NC
|
||||||
|
LAG_INFRASTRUCTURE_INTERFACE=no
|
||||||
|
INFRASTRUCTURE_BOND_MEMBER_0=NC
|
||||||
|
INFRASTRUCTURE_BOND_MEMBER_1=NC
|
||||||
|
INFRASTRUCTURE_BOND_POLICY=NC
|
||||||
|
CONTROLLER_0_INFRASTRUCTURE_ADDRESS=NC
|
||||||
|
CONTROLLER_1_INFRASTRUCTURE_ADDRESS=NC
|
||||||
|
NFS_INFRASTRUCTURE_ADDRESS_1=NC
|
||||||
|
STORAGE_0_INFRASTRUCTURE_ADDRESS=NC
|
||||||
|
STORAGE_1_INFRASTRUCTURE_ADDRESS=NC
|
||||||
|
CONTROLLER_INFRASTRUCTURE_HOSTNAME_SUFFIX=NC
|
||||||
|
INFRASTRUCTURE_START_ADDRESS=NC
|
||||||
|
INFRASTRUCTURE_END_ADDRESS=NC
|
||||||
|
|
||||||
|
[cCLUSTER]
|
||||||
|
# Cluster Host Network Configuration
|
||||||
|
CLUSTER_INTERFACE_NAME=eth1
|
||||||
|
CLUSTER_INTERFACE=eth1
|
||||||
|
CLUSTER_VLAN=NC
|
||||||
|
CLUSTER_MTU=1500
|
||||||
|
CLUSTER_SUBNET=192.168.206.0/24
|
||||||
|
LAG_CLUSTER_INTERFACE=no
|
||||||
|
|
||||||
|
[cEXT_OAM]
|
||||||
|
# External OAM Network Configuration
|
||||||
|
EXTERNAL_OAM_INTERFACE_NAME=eth0
|
||||||
|
EXTERNAL_OAM_INTERFACE=eth0
|
||||||
|
EXTERNAL_OAM_VLAN=NC
|
||||||
|
EXTERNAL_OAM_MTU=1500
|
||||||
|
LAG_EXTERNAL_OAM_INTERFACE=no
|
||||||
|
EXTERNAL_OAM_SUBNET=10.10.10.0/24
|
||||||
|
EXTERNAL_OAM_GATEWAY_ADDRESS=10.10.10.1
|
||||||
|
EXTERNAL_OAM_FLOATING_ADDRESS=10.10.10.2
|
||||||
|
EXTERNAL_OAM_0_ADDRESS=10.10.10.3
|
||||||
|
EXTERNAL_OAM_1_ADDRESS=10.10.10.4
|
||||||
|
|
||||||
|
[cDNS]
|
||||||
|
# DNS Configuration
|
||||||
|
NAMESERVER_1=1.2.3.4
|
||||||
|
NAMESERVER_2=5.6.7.8
|
||||||
|
NAMESERVER_3=NC
|
||||||
|
|
||||||
|
[cNETWORK]
|
||||||
|
# Data Network Configuration
|
||||||
|
VSWITCH_TYPE=ovs-dpdk
|
||||||
|
|
||||||
|
[cSECURITY]
|
||||||
|
[cREGION]
|
||||||
|
# Region Configuration
|
||||||
|
REGION_CONFIG=False
|
||||||
|
|
||||||
|
[cAUTHENTICATION]
|
||||||
|
ADMIN_PASSWORD=Li69nux*
|
|
@ -44,6 +44,11 @@ CIDR=10.10.10.0/24
|
||||||
GATEWAY=10.10.10.1
|
GATEWAY=10.10.10.1
|
||||||
LOGICAL_INTERFACE=LOGICAL_INTERFACE_2
|
LOGICAL_INTERFACE=LOGICAL_INTERFACE_2
|
||||||
|
|
||||||
|
[DNS]
|
||||||
|
# DNS Configuration
|
||||||
|
NAMESERVER_1=1.2.3.4
|
||||||
|
NAMESERVER_2=5.6.7.8
|
||||||
|
|
||||||
;[PXEBOOT_NETWORK]
|
;[PXEBOOT_NETWORK]
|
||||||
;PXEBOOT_CIDR=192.168.203.0/24
|
;PXEBOOT_CIDR=192.168.203.0/24
|
||||||
|
|
|
@ -19,13 +19,14 @@ import controllerconfig.common.constants as constants
|
||||||
def _test_answerfile(tmpdir, filename,
|
def _test_answerfile(tmpdir, filename,
|
||||||
mock_get_net_device_list,
|
mock_get_net_device_list,
|
||||||
mock_get_rootfs_node,
|
mock_get_rootfs_node,
|
||||||
compare_results=True):
|
compare_results=True,
|
||||||
|
ca_options={}):
|
||||||
""" Test import and generation of answerfile """
|
""" Test import and generation of answerfile """
|
||||||
mock_get_net_device_list.return_value = \
|
mock_get_net_device_list.return_value = \
|
||||||
['eth0', 'eth1', 'eth2']
|
['eth0', 'eth1', 'eth2']
|
||||||
mock_get_rootfs_node.return_value = '/dev/sda'
|
mock_get_rootfs_node.return_value = '/dev/sda'
|
||||||
|
|
||||||
assistant = ca.ConfigAssistant()
|
assistant = ca.ConfigAssistant(**ca_options)
|
||||||
|
|
||||||
# Create the path to the answerfile
|
# Create the path to the answerfile
|
||||||
answerfile = os.path.join(
|
answerfile = os.path.join(
|
||||||
|
@ -93,3 +94,10 @@ def test_answerfile_region_nuage_vrs(tmpdir):
|
||||||
""" Test import of answerfile with region values for nuage_vrs"""
|
""" Test import of answerfile with region values for nuage_vrs"""
|
||||||
|
|
||||||
_test_answerfile(tmpdir, "cgcs_config.region_nuage_vrs")
|
_test_answerfile(tmpdir, "cgcs_config.region_nuage_vrs")
|
||||||
|
|
||||||
|
|
||||||
|
def test_answerfile_kubernetes(tmpdir):
|
||||||
|
""" Test import of answerfile with kubernetes values """
|
||||||
|
|
||||||
|
_test_answerfile(tmpdir, "cgcs_config.kubernetes",
|
||||||
|
ca_options={"kubernetes": True})
|
||||||
|
|
|
@ -42,7 +42,7 @@ def _test_system_config(filename):
|
||||||
cr.create_cgcs_config_file(None, system_config, None, None, None, 0,
|
cr.create_cgcs_config_file(None, system_config, None, None, None, 0,
|
||||||
validate_only=True)
|
validate_only=True)
|
||||||
|
|
||||||
# Validate the region config file.
|
# Validate the system config file.
|
||||||
# Using onboard validation since the validator's reference version number
|
# Using onboard validation since the validator's reference version number
|
||||||
# is only set at build-time when validating offboard
|
# is only set at build-time when validating offboard
|
||||||
validate(system_config, DEFAULT_CONFIG, None, False)
|
validate(system_config, DEFAULT_CONFIG, None, False)
|
||||||
|
@ -508,14 +508,6 @@ def test_system_config_validation():
|
||||||
with pytest.raises(exceptions.ConfigFail):
|
with pytest.raises(exceptions.ConfigFail):
|
||||||
validate(system_config, DEFAULT_CONFIG, None, False)
|
validate(system_config, DEFAULT_CONFIG, None, False)
|
||||||
|
|
||||||
# Test detection of unsupported DNS NAMESERVER
|
|
||||||
system_config = cr.parse_system_config(simple_systemfile)
|
|
||||||
system_config.add_section('DNS')
|
|
||||||
system_config.set('DNS', 'NAMESERVER_1', '8.8.8.8')
|
|
||||||
with pytest.raises(exceptions.ConfigFail):
|
|
||||||
cr.create_cgcs_config_file(None, system_config, None, None, None, 0,
|
|
||||||
validate_only=True)
|
|
||||||
|
|
||||||
# Test detection of unsupported NTP NTP_SERVER
|
# Test detection of unsupported NTP NTP_SERVER
|
||||||
system_config = cr.parse_system_config(simple_systemfile)
|
system_config = cr.parse_system_config(simple_systemfile)
|
||||||
system_config.add_section('NTP')
|
system_config.add_section('NTP')
|
||||||
|
@ -606,12 +598,13 @@ def test_pxeboot_range():
|
||||||
validate(system_config, DEFAULT_CONFIG, None, False)
|
validate(system_config, DEFAULT_CONFIG, None, False)
|
||||||
|
|
||||||
|
|
||||||
def test_cluster_network():
|
def test_kubernetes():
|
||||||
""" Test import of system_config file for cluster network address """
|
""" Test import of system_config file for kubernetes """
|
||||||
|
|
||||||
# Create the path to the system_config file
|
# Create the path to the system_config file
|
||||||
systemfile = os.path.join(
|
systemfile = os.path.join(
|
||||||
os.getcwd(), "controllerconfig/tests/files/", "system_config.cluster")
|
os.getcwd(), "controllerconfig/tests/files/",
|
||||||
|
"system_config.kubernetes")
|
||||||
|
|
||||||
# Test import and generation of answer file
|
# Test import and generation of answer file
|
||||||
_test_system_config(systemfile)
|
_test_system_config(systemfile)
|
||||||
|
@ -647,3 +640,10 @@ def test_cluster_network():
|
||||||
validate_only=True)
|
validate_only=True)
|
||||||
with pytest.raises(exceptions.ConfigFail):
|
with pytest.raises(exceptions.ConfigFail):
|
||||||
validate(system_config, DEFAULT_CONFIG, None, False)
|
validate(system_config, DEFAULT_CONFIG, None, False)
|
||||||
|
|
||||||
|
# Test absence of optional DNS configuration
|
||||||
|
system_config = cr.parse_system_config(systemfile)
|
||||||
|
system_config.remove_section('DNS')
|
||||||
|
cr.create_cgcs_config_file(None, system_config, None, None, None, 0,
|
||||||
|
validate_only=True)
|
||||||
|
validate(system_config, DEFAULT_CONFIG, None, False)
|
||||||
|
|
|
@ -58,15 +58,8 @@ class platform::kubernetes::master::init
|
||||||
# For initial controller install, configure kubernetes from scratch.
|
# For initial controller install, configure kubernetes from scratch.
|
||||||
$resolv_conf = '/etc/resolv.conf'
|
$resolv_conf = '/etc/resolv.conf'
|
||||||
|
|
||||||
# Add a DNS server to allow access to kubernetes repo. This will no longer
|
|
||||||
# be required once we are using our own internal repo.
|
|
||||||
file_line { "${resolv_conf} nameserver 8.8.8.8":
|
|
||||||
path => $resolv_conf,
|
|
||||||
line => 'nameserver 8.8.8.8',
|
|
||||||
}
|
|
||||||
|
|
||||||
# Configure the master node.
|
# Configure the master node.
|
||||||
-> file { '/etc/kubernetes/kubeadm.yaml':
|
file { '/etc/kubernetes/kubeadm.yaml':
|
||||||
ensure => file,
|
ensure => file,
|
||||||
content => template('platform/kubeadm.yaml.erb'),
|
content => template('platform/kubeadm.yaml.erb'),
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue