From 93e3297a2f86b6d3431f8d174b2b8fa77d30f276 Mon Sep 17 00:00:00 2001 From: Pete Birley Date: Tue, 11 Apr 2017 15:47:12 -0500 Subject: [PATCH] Update Nova DB-Init jobs to match other services This commit updates the Nova DB init jobs to match those of other OpenStack Helm Services, it completes the work to move away from Ansible for DB management. Change-Id: I2e53846f917a56448392cfebe5d8548f96e3eed2 --- nova/templates/bin/_init.sh.tpl | 59 ---------------------- nova/templates/configmap-bin.yaml | 6 +-- nova/templates/job-db-init.yaml | 70 ++++++++++++++++++++++++-- nova/templates/secret-db-root.env.yaml | 7 +++ nova/values.yaml | 20 ++++---- 5 files changed, 86 insertions(+), 76 deletions(-) delete mode 100644 nova/templates/bin/_init.sh.tpl create mode 100644 nova/templates/secret-db-root.env.yaml diff --git a/nova/templates/bin/_init.sh.tpl b/nova/templates/bin/_init.sh.tpl deleted file mode 100644 index c0aaa21ffe..0000000000 --- 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 c7a305c912..e7cfd2673d 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 5a3a58d216..309ceb9fa8 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 0000000000..c8b2355ed6 --- /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 2587205c98..68638accbf 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: