diff --git a/nova/templates/bin/_init.sh.tpl b/nova/templates/bin/_init.sh.tpl deleted file mode 100644 index c0aaa21f..00000000 --- a/nova/templates/bin/_init.sh.tpl +++ /dev/null @@ -1,59 +0,0 @@ -#!/bin/bash - -# Copyright 2017 The Openstack-Helm Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -set -ex -export HOME=/tmp - -# standard database - -ansible localhost -vvv \ - -m mysql_db -a "login_host='{{ .Values.endpoints.oslo_db.hosts.internal | default .Values.endpoints.oslo_db.hosts.default }}' \ - login_port='{{ .Values.endpoints.oslo_db.port.mysql }}' \ - login_user='{{ .Values.endpoints.oslo_db.auth.admin.username }}' \ - login_password='{{ .Values.endpoints.oslo_db.auth.admin.password }}' \ - name='{{ .Values.endpoints.oslo_db.path | trimAll "/" }}'" - -ansible localhost -vvv \ - -m mysql_user -a "login_host='{{ .Values.endpoints.oslo_db.hosts.internal | default .Values.endpoints.oslo_db.hosts.default }}' \ - login_port='{{ .Values.endpoints.oslo_db.port.mysql }}' \ - login_user='{{ .Values.endpoints.oslo_db.auth.admin.username }}' \ - login_password='{{ .Values.endpoints.oslo_db.auth.admin.password }}' \ - name='{{ .Values.endpoints.oslo_db.auth.user.username }}' \ - password='{{ .Values.endpoints.oslo_db.auth.user.password }}' \ - host='%' \ - priv='{{ .Values.endpoints.oslo_db.path | trimAll "/" }}.*:ALL' \ - append_privs='yes'" - -# api database - -ansible localhost -vvv \ - -m mysql_db -a "login_host='{{ .Values.endpoints.oslo_db_api.hosts.internal | default .Values.endpoints.oslo_db_api.hosts.default }}' \ - login_port='{{ .Values.endpoints.oslo_db_api.port.mysql }}' \ - login_user='{{ .Values.endpoints.oslo_db_api.auth.admin.username }}' \ - login_password='{{ .Values.endpoints.oslo_db_api.auth.admin.password }}' \ - name='{{ .Values.endpoints.oslo_db_api.path | trimAll "/" }}'" - -ansible localhost -vvv \ - -m mysql_user -a "login_host='{{ .Values.endpoints.oslo_db_api.hosts.internal | default .Values.endpoints.oslo_db_api.hosts.default }}' \ - login_port='{{ .Values.endpoints.oslo_db_api.port.mysql }}' \ - login_user='{{ .Values.endpoints.oslo_db_api.auth.admin.username }}' \ - login_password='{{ .Values.endpoints.oslo_db_api.auth.admin.password }}' \ - name='{{ .Values.endpoints.oslo_db_api.auth.user.username }}' \ - password='{{ .Values.endpoints.oslo_db_api.auth.user.password }}' \ - host='%' \ - priv='{{ .Values.endpoints.oslo_db_api.path | trimAll "/" }}.*:ALL' \ - append_privs='yes'" diff --git a/nova/templates/configmap-bin.yaml b/nova/templates/configmap-bin.yaml index c7a305c9..e7cfd267 100644 --- a/nova/templates/configmap-bin.yaml +++ b/nova/templates/configmap-bin.yaml @@ -17,7 +17,9 @@ kind: ConfigMap metadata: name: nova-bin data: - db-sync.sh: | + db-init.py: |+ +{{- include "helm-toolkit.db_init" . | indent 4 }} + db-sync.sh: |+ {{ tuple "bin/_db-sync.sh.tpl" . | include "helm-toolkit.template" | indent 4 }} ks-service.sh: |+ {{- include "helm-toolkit.keystone_service" . | indent 4 }} @@ -25,8 +27,6 @@ data: {{- include "helm-toolkit.keystone_endpoints" . | indent 4 }} ks-user.sh: |+ {{- include "helm-toolkit.keystone_user" . | indent 4 }} - init.sh: | -{{ tuple "bin/_init.sh.tpl" . | include "helm-toolkit.template" | indent 4 }} libvirt.sh: | {{ tuple "bin/_libvirt.sh.tpl" . | include "helm-toolkit.template" | indent 4 }} bootstrap.sh: | diff --git a/nova/templates/job-db-init.yaml b/nova/templates/job-db-init.yaml index 5a3a58d2..309ceb9f 100644 --- a/nova/templates/job-db-init.yaml +++ b/nova/templates/job-db-init.yaml @@ -42,14 +42,76 @@ spec: memory: {{ .Values.resources.nova_init.limits.memory | quote }} cpu: {{ .Values.resources.nova_init.limits.cpu | quote }} {{- end }} + env: + - name: ROOT_DB_CONNECTION + valueFrom: + secretKeyRef: + name: nova-db-root + key: DB_CONNECTION + - name: OPENSTACK_CONFIG_FILE + value: /etc/nova/nova.conf + - name: OPENSTACK_CONFIG_DB_SECTION + value: database + - name: OPENSTACK_CONFIG_DB_KEY + value: connection command: - - bash - - /tmp/init.sh + - python + - /tmp/db-init.py volumeMounts: - name: nova-bin - mountPath: /tmp/init.sh - subPath: init.sh + mountPath: /tmp/db-init.py + subPath: db-init.py + readOnly: true + - name: etcnova + mountPath: /etc/nova + - name: novaconf + mountPath: /etc/nova/nova.conf + subPath: nova.conf + readOnly: true + - name: nova-db-init-api + image: {{ .Values.images.db_init }} + imagePullPolicy: {{ .Values.images.pull_policy }} + {{- if .Values.resources.enabled }} + resources: + requests: + memory: {{ .Values.resources.nova_init.requests.memory | quote }} + cpu: {{ .Values.resources.nova_init.requests.cpu | quote }} + limits: + memory: {{ .Values.resources.nova_init.limits.memory | quote }} + cpu: {{ .Values.resources.nova_init.limits.cpu | quote }} + {{- end }} + env: + - name: ROOT_DB_CONNECTION + valueFrom: + secretKeyRef: + name: nova-db-root + key: DB_CONNECTION + - name: OPENSTACK_CONFIG_FILE + value: /etc/nova/nova.conf + - name: OPENSTACK_CONFIG_DB_SECTION + value: api_database + - name: OPENSTACK_CONFIG_DB_KEY + value: connection + command: + - python + - /tmp/db-init.py + volumeMounts: + - name: nova-bin + mountPath: /tmp/db-init.py + subPath: db-init.py + readOnly: true + - name: etcnova + mountPath: /etc/nova + - name: novaconf + mountPath: /etc/nova/nova.conf + subPath: nova.conf + readOnly: true volumes: + - name: etcnova + emptyDir: {} + - name: novaconf + configMap: + name: nova-etc - name: nova-bin configMap: name: nova-bin diff --git a/nova/templates/secret-db-root.env.yaml b/nova/templates/secret-db-root.env.yaml new file mode 100644 index 00000000..c8b2355e --- /dev/null +++ b/nova/templates/secret-db-root.env.yaml @@ -0,0 +1,7 @@ +apiVersion: v1 +kind: Secret +metadata: + name: nova-db-root +type: Opaque +data: + DB_CONNECTION: {{ tuple "oslo_db" "internal" "admin" "mysql" . | include "helm-toolkit.authenticated_endpoint_uri_lookup" | b64enc }} diff --git a/nova/values.yaml b/nova/values.yaml index 2587205c..68638acc 100644 --- a/nova/values.yaml +++ b/nova/values.yaml @@ -23,7 +23,7 @@ labels: node_selector_key: openstack-compute-node node_selector_value: enabled libvirt: - node_selector_key: openstack-compute-node + node_selector_key: openstack-compute-node node_selector_value: enabled conductor: node_selector_key: openstack-control-plane @@ -43,7 +43,7 @@ labels: job: node_selector_key: openstack-control-plane node_selector_value: enabled - + replicas: api_metadata: 1 osapi: 1 @@ -52,7 +52,7 @@ replicas: scheduler: 1 images: - db_init: quay.io/stackanetes/stackanetes-kolla-toolbox:newton + db_init: quay.io/stackanetes/stackanetes-nova-api:newton db_sync: quay.io/stackanetes/stackanetes-nova-api:newton ks_user: quay.io/stackanetes/stackanetes-kolla-toolbox:newton ks_service: quay.io/stackanetes/stackanetes-kolla-toolbox:newton @@ -252,7 +252,7 @@ conf: vncserver_listen: 0.0.0.0 vncserver_proxyclient_address: 0.0.0.0 # FIXME(ALANMEADOWS) - novncproxy_base_url: http://0.0.0.0:6080/no_vnc.html + novncproxy_base_url: http://0.0.0.0:6080/no_vnc.html conductor: nova: conf: @@ -286,7 +286,7 @@ conf: project_domain_name: default user_domain_name: default username: neutron - password: password + password: password database: oslo: db: @@ -294,7 +294,7 @@ conf: api_database: oslo: db: - max_retries: -1 + max_retries: -1 keystone_authtoken: keystonemiddleware: auth_token: @@ -306,7 +306,7 @@ conf: user_domain_name: default username: nova password: password - + libvirt: nova: conf: @@ -364,7 +364,7 @@ endpoints: path: /nova_api scheme: mysql+pymysql port: - mysql: 3306 + mysql: 3306 oslo_messaging: auth: admin: @@ -378,12 +378,12 @@ endpoints: path: / scheme: rabbit port: - amqp: 5672 + amqp: 5672 oslo_cache: hosts: default: memcache port: - memcache: 11211 + memcache: 11211 compute: name: nova hosts: