976
1031
apt_install('haproxy/trusty-backports', fatal=True)
1034
def git_install(projects_yaml):
1035
"""Perform setup, and install git repos specified in yaml parameter."""
1036
if git_install_requested():
1038
git_clone_and_install(projects_yaml, core_project='nova')
1039
git_post_install(projects_yaml)
1042
def git_pre_install():
1043
"""Perform pre-install setup."""
1046
'/var/lib/nova/buckets',
1048
'/var/lib/nova/CA/INTER',
1049
'/var/lib/nova/CA/newcerts',
1050
'/var/lib/nova/CA/private',
1051
'/var/lib/nova/CA/reqs',
1052
'/var/lib/nova/images',
1053
'/var/lib/nova/instances',
1054
'/var/lib/nova/keys',
1055
'/var/lib/nova/networks',
1056
'/var/lib/nova/tmp',
1058
'/var/lib/neutron/lock',
1061
'/etc/neutron/plugins',
1062
'/etc/neutron/plugins/ml2',
1065
adduser('nova', shell='/bin/bash', system_user=True)
1066
subprocess.check_call(['usermod', '--home', '/var/lib/nova', 'nova'])
1067
add_group('nova', system_group=True)
1068
add_user_to_group('nova', 'nova')
1070
adduser('neutron', shell='/bin/bash', system_user=True)
1071
add_group('neutron', system_group=True)
1072
add_user_to_group('neutron', 'neutron')
1075
mkdir(d, owner='nova', group='nova', perms=0755, force=False)
1078
def git_post_install(projects_yaml):
1079
"""Perform post-install setup."""
1080
src_etc = os.path.join(git_src_dir(projects_yaml, 'nova'), 'etc/nova')
1083
'dest': '/etc/nova'},
1087
if os.path.exists(c['dest']):
1088
shutil.rmtree(c['dest'])
1089
shutil.copytree(c['src'], c['dest'])
1091
render('git/nova_sudoers', '/etc/sudoers.d/nova_sudoers', {}, perms=0o440)
1093
nova_cc = 'nova-cloud-controller'
1095
start_dir = '/var/lib/nova'
1096
nova_conf = '/etc/nova/nova.conf'
1097
nova_ec2_api_context = {
1098
'service_description': 'Nova EC2 API server',
1099
'service_name': nova_cc,
1100
'user_name': nova_user,
1101
'start_dir': start_dir,
1102
'process_name': 'nova-api-ec2',
1103
'executable_name': '/usr/local/bin/nova-api-ec2',
1104
'config_files': [nova_conf],
1106
nova_api_os_compute_context = {
1107
'service_description': 'Nova OpenStack Compute API server',
1108
'service_name': nova_cc,
1109
'user_name': nova_user,
1110
'start_dir': start_dir,
1111
'process_name': 'nova-api-os-compute',
1112
'executable_name': '/usr/local/bin/nova-api-os-compute',
1113
'config_files': [nova_conf],
1115
nova_cells_context = {
1116
'service_description': 'Nova cells',
1117
'service_name': nova_cc,
1118
'user_name': nova_user,
1119
'start_dir': start_dir,
1120
'process_name': 'nova-cells',
1121
'executable_name': '/usr/local/bin/nova-cells',
1122
'config_files': [nova_conf],
1124
nova_cert_context = {
1125
'service_description': 'Nova cert',
1126
'service_name': nova_cc,
1127
'user_name': nova_user,
1128
'start_dir': start_dir,
1129
'process_name': 'nova-cert',
1130
'executable_name': '/usr/local/bin/nova-cert',
1131
'config_files': [nova_conf],
1133
nova_conductor_context = {
1134
'service_description': 'Nova conductor',
1135
'service_name': nova_cc,
1136
'user_name': nova_user,
1137
'start_dir': start_dir,
1138
'process_name': 'nova-conductor',
1139
'executable_name': '/usr/local/bin/nova-conductor',
1140
'config_files': [nova_conf],
1142
nova_consoleauth_context = {
1143
'service_description': 'Nova console auth',
1144
'service_name': nova_cc,
1145
'user_name': nova_user,
1146
'start_dir': start_dir,
1147
'process_name': 'nova-consoleauth',
1148
'executable_name': '/usr/local/bin/nova-consoleauth',
1149
'config_files': [nova_conf],
1151
nova_console_context = {
1152
'service_description': 'Nova console',
1153
'service_name': nova_cc,
1154
'user_name': nova_user,
1155
'start_dir': start_dir,
1156
'process_name': 'nova-console',
1157
'executable_name': '/usr/local/bin/nova-console',
1158
'config_files': [nova_conf],
1160
nova_novncproxy_context = {
1161
'service_description': 'Nova NoVNC proxy',
1162
'service_name': nova_cc,
1163
'user_name': nova_user,
1164
'start_dir': start_dir,
1165
'process_name': 'nova-novncproxy',
1166
'executable_name': '/usr/local/bin/nova-novncproxy',
1167
'config_files': [nova_conf],
1169
nova_objectstore_context = {
1170
'service_description': 'Nova object store',
1171
'service_name': nova_cc,
1172
'user_name': nova_user,
1173
'start_dir': start_dir,
1174
'process_name': 'nova-objectstore',
1175
'executable_name': '/usr/local/bin/nova-objectstore',
1176
'config_files': [nova_conf],
1178
nova_scheduler_context = {
1179
'service_description': 'Nova scheduler',
1180
'service_name': nova_cc,
1181
'user_name': nova_user,
1182
'start_dir': start_dir,
1183
'process_name': 'nova-scheduler',
1184
'executable_name': '/usr/local/bin/nova-scheduler',
1185
'config_files': [nova_conf],
1187
nova_spiceproxy_context = {
1188
'service_description': 'Nova spice proxy',
1189
'service_name': nova_cc,
1190
'user_name': nova_user,
1191
'start_dir': start_dir,
1192
'process_name': 'nova-spicehtml5proxy',
1193
'executable_name': '/usr/local/bin/nova-spicehtml5proxy',
1194
'config_files': [nova_conf],
1196
nova_xvpvncproxy_context = {
1197
'service_description': 'Nova XVPVNC proxy',
1198
'service_name': nova_cc,
1199
'user_name': nova_user,
1200
'start_dir': start_dir,
1201
'process_name': 'nova-xvpvncproxy',
1202
'executable_name': '/usr/local/bin/nova-xvpvncproxy',
1203
'config_files': [nova_conf],
1206
# NOTE(coreycb): Needs systemd support
1207
templates_dir = 'hooks/charmhelpers/contrib/openstack/templates'
1208
templates_dir = os.path.join(charm_dir(), templates_dir)
1209
render('git.upstart', '/etc/init/nova-api-ec2.conf',
1210
nova_ec2_api_context, perms=0o644,
1211
templates_dir=templates_dir)
1212
render('git.upstart', '/etc/init/nova-api-os-compute.conf',
1213
nova_api_os_compute_context, perms=0o644,
1214
templates_dir=templates_dir)
1215
render('git.upstart', '/etc/init/nova-cells.conf',
1216
nova_cells_context, perms=0o644,
1217
templates_dir=templates_dir)
1218
render('git.upstart', '/etc/init/nova-cert.conf',
1219
nova_cert_context, perms=0o644,
1220
templates_dir=templates_dir)
1221
render('git.upstart', '/etc/init/nova-conductor.conf',
1222
nova_conductor_context, perms=0o644,
1223
templates_dir=templates_dir)
1224
render('git.upstart', '/etc/init/nova-consoleauth.conf',
1225
nova_consoleauth_context, perms=0o644,
1226
templates_dir=templates_dir)
1227
render('git.upstart', '/etc/init/nova-console.conf',
1228
nova_console_context, perms=0o644,
1229
templates_dir=templates_dir)
1230
render('git.upstart', '/etc/init/nova-novncproxy.conf',
1231
nova_novncproxy_context, perms=0o644,
1232
templates_dir=templates_dir)
1233
render('git.upstart', '/etc/init/nova-objectstore.conf',
1234
nova_objectstore_context, perms=0o644,
1235
templates_dir=templates_dir)
1236
render('git.upstart', '/etc/init/nova-scheduler.conf',
1237
nova_scheduler_context, perms=0o644,
1238
templates_dir=templates_dir)
1239
render('git.upstart', '/etc/init/nova-spiceproxy.conf',
1240
nova_spiceproxy_context, perms=0o644,
1241
templates_dir=templates_dir)
1242
render('git.upstart', '/etc/init/nova-xvpvncproxy.conf',
1243
nova_xvpvncproxy_context, perms=0o644,
1244
templates_dir=templates_dir)
1247
apt_install(LATE_GIT_PACKAGES, fatal=True)