instack-undercloud/elements/undercloud-stack-config/install.d/02-undercloud-stack-heat-me...

68 lines
2.4 KiB
Python
Executable File

#!/usr/bin/python
import os
import shutil
import subprocess
import tempfile
import pystache
# Install heiradata override if specified
hieradata_override = os.environ.get('HIERADATA_OVERRIDE', '')
if hieradata_override:
hiera_entry = os.path.splitext(os.path.basename(hieradata_override))[0]
dst = os.path.join('/etc/puppet/hieradata',
os.path.basename(hieradata_override))
shutil.copy(hieradata_override, dst)
os.chmod(dst, 0644)
else:
hiera_entry = ''
renderer = pystache.Renderer()
template = os.path.join(os.path.dirname(__file__),
'..',
'config.json.template')
context = {
'LOCAL_IP': os.environ.get('LOCAL_IP', '192.0.2.1'),
'PUBLIC_INTERFACE_IP':
os.environ.get('PUBLIC_INTERFACE_IP', '192.0.2.1/24'),
'LOCAL_INTERFACE': os.environ.get('LOCAL_INTERFACE', 'eth1'),
'LOCAL_MTU': os.environ.get('LOCAL_MTU', 1500),
'MASQUERADE_NETWORK': os.environ.get('MASQUERADE_NETWORK', '192.0.2.0/24'),
'DHCP_START': os.environ.get('DHCP_START', '192.0.2.5'),
'DHCP_END': os.environ.get('DHCP_END', '192.0.2.24'),
'NETWORK_CIDR': os.environ.get('NETWORK_CIDR', '192.0.2.0/24'),
'NETWORK_GATEWAY': os.environ.get('NETWORK_GATEWAY', '192.0.2.1'),
'DISCOVERY_INTERFACE':
os.environ.get('DISCOVERY_INTERFACE', 'br-ctlplane'),
'DISCOVERY_IPRANGE':
os.environ.get('DISCOVERY_IPRANGE', '192.0.2.100,192.0.2.120'),
'DISCOVERY_RUNBENCH': os.environ.get('DISCOVERY_RUNBENCH', '0'),
'UNDERCLOUD_IRONIC_PASSWORD':
os.environ.get('UNDERCLOUD_IRONIC_PASSWORD', 'unset'),
'UNDERCLOUD_SERVICE_CERTIFICATE':
os.environ.get('UNDERCLOUD_SERVICE_CERTIFICATE', ''),
'UNDERCLOUD_PUBLIC_VIP': os.environ.get('UNDERCLOUD_PUBLIC_VIP', ''),
'UNDERCLOUD_ADMIN_VIP': os.environ.get('UNDERCLOUD_ADMIN_VIP', ''),
'HIERADATA_OVERRIDE': hiera_entry,
}
with open(template) as f:
config_json = renderer.render(f.read(), context)
cfn_path = '/var/lib/heat-cfntools/cfn-init-data'
if not os.path.exists(os.path.dirname(cfn_path)):
os.makedirs(os.path.dirname(cfn_path))
with open(cfn_path, 'w') as f:
f.write(config_json)
# Make the json pretty again
tmpfile = tempfile.mkstemp()[1]
outfile = open(tmpfile, 'w')
subprocess.check_call(['jq', '.', cfn_path], stdout=outfile)
outfile.close()
shutil.move(tmpfile, cfn_path)
os.chmod(cfn_path, 0644)