in blueprints/third-party-solutions/openshift/prepare.py [0:0]
def install_config(ctx=None):
'Create install config from terraform variables.'
logging.info('generating install config')
y = yaml.YAML()
try:
with open('install-config.tpl.yml') as f:
data = y.load(f)
except (IOError, OSError) as e:
raise Error(f'Cannot open install-config template: {e}')
except yaml.YAMLError as e:
raise Error(f'Parsing error in install-config template: {e}')
vars = ctx.obj['tfvars']
paths = ctx.obj['paths']
vars_key = vars['disk_encryption_key']
vars_net = vars['install_config_params']['network']
vars_proxy = vars['install_config_params']['proxy']
data_disk = data['compute'][0]['platform']['gcp']['osDisk']
data['baseDomain'] = vars['domain']
data['metadata']['name'] = vars['cluster_name']
data['platform']['gcp']['projectID'] = vars['service_project']['project_id']
data['platform']['gcp']['region'] = vars['region']
data_disk['diskSizeGB'] = int(vars['install_config_params']['disk_size'])
if vars_key and vars_key != 'null':
data_disk.insert(
len(data_disk), 'encryptionKey', {
'kmsKey': {
'projectID': vars_key['project_id'],
'keyRing': vars_key['keyring'],
'location': vars_key['location'],
'name': vars_key['name']
}
})
data['networking']['clusterNetwork'][0]['cidr'] = vars_net['cluster']
data['networking']['clusterNetwork'][0]['hostPrefix'] = vars_net[
'host_prefix']
data['networking']['machineNetwork'][0]['cidr'] = vars_net['machine']
data['networking']['serviceNetwork'][0] = vars_net['service']
if vars_proxy and vars_proxy != 'null':
noproxy = [t.strip() for t in vars_proxy['noproxy'].split(',') if t.strip()]
noproxy += [f'.{vars["domain"]}', vars_net['machine']]
noproxy += vars['allowed_ranges']
data.insert(
len(data), 'proxy', {
'httpProxy': vars_proxy['http'],
'httpsProxy': vars_proxy['https'],
'noProxy': ','.join(noproxy)
})
for k, v in dict(pull_secret='pullSecret', ssh_key='sshKey').items():
if k not in paths:
raise Error(f'Key \'{k}\' missing from fs_paths in Terraform variables.')
try:
with paths[k].open() as f:
data[v] = f.read().strip()
except (IOError, OSError) as e:
raise Error(f'Cannot read file: {e}')
try:
with (paths['config_dir'] / 'install-config.yaml').open('w') as f:
y.dump(data, f)
except (IOError, OSError) as e:
raise Error(f'Cannot write install config: {e}')
except yaml.YAMLError as e:
raise Error(f'Error dumping install-config template: {e}')