Skip to content

Commit

Permalink
WIP Document Nova services adoption (no extra cell)
Browse files Browse the repository at this point in the history
TODO: Document deploying a 2nd tripleo standalone stack for an
extra compute

Note about remapping cell names from OSP cells naming scheme
to the NG scheme with the superconductor layout.

Signed-off-by: Bohdan Dobrelia <[email protected]>
  • Loading branch information
bogdando committed Oct 11, 2023
1 parent faa03c9 commit 827b289
Show file tree
Hide file tree
Showing 3 changed files with 198 additions and 1 deletion.
35 changes: 34 additions & 1 deletion docs/contributing/development_environment.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,9 +53,40 @@ to create a virtual machine connected to the isolated networks.
Create the edpm-compute-0 virtual machine.
```
cd install_yamls/devsetup
make standalone
make standalone EDPM_COMPUTE_CEPH_ENABLED=false
```

**TODO (Q1/24)**

# Deployment of a multi-stack topology for Nova cells v2

Create the edpm-compute-1 and edpm-compute-2 virtual machinee for Nova compute cells.
```
make edpm_compute EDPM_COMPUTE_SUFFIX=1
make edpm_compute_repos EDPM_COMPUTE_SUFFIX=1
```

Omit the `edpm_deploy` make target to not making it managed from the control
plane running on OCP.

Instead, deploy it as a 2nd TripleO standalone Heat stack,
with an extra OSP compute:
```
make standalone EDPM_COMPUTE_SUFFIX=1 EDPM_COMPUTE_CEPH_ENABLED=false
```

Ssh into deployed standalone host:
```
ssh -i ~/install_yamls/out/edpm/ansibleee-ssh-key-id_rsa [email protected]
```
Discover the deployed compute host keys (a passwordless access is required by
the Nova Live-migration feature):
```
ssh-copy-id -i ~/.ssh/id_rsa [email protected]
```

TODO Discover the remote compute node from the central controller node

### Convenience steps

To make our life easier we can copy the deployment passwords we'll be using
Expand Down Expand Up @@ -116,6 +147,8 @@ export OS_CLOUD=standalone
source ~/install_yamls/devsetup/scripts/edpm-deploy-instance.sh
```

TODO(bogdando): document creating a 2nd instance on another compute cell

Confirm the image UUID can be seen in Ceph's images pool.
```
ssh -i ~/install_yamls/out/edpm/ansibleee-ssh-key-id_rsa [email protected] sudo cephadm shell -- rbd -p images ls -l
Expand Down
142 changes: 142 additions & 0 deletions docs/contributing/nova.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,142 @@
# Nova adoption

## Prerequisites

* Previous Adoption steps completed. Notably, the service databases
must already be imported into the podified MariaDB.

## Variables

(There are no shell variables necessary currently.)

## Procedure - Nova adoption

* Patch OpenStackControlPlane to deploy Nova:

```
oc patch openstackcontrolplane openstack -n openstack --type=merge --patch '
spec:
nova:
enabled: true
secret: osp-secret
databaseInstance: openstack
apiOverride: # FIXME: could this be skipped?
route: {}
template:
cellTemplates:
cell0:
cellDatabaseUser: nova_cell0 # renamed from OSP17 'nova'
noVNCProxyServiceTemplate:
replicas: 0 # must remain 0?
metadataServiceTemplate:
replicas: 0 # must remain 0?
conductorServiceTemplate:
replicas: 0 # must remain 0
externalEndpoints:
- endpoint: internal
ipAddressPool: internalapi
loadBalancerIPs:
- 172.17.0.80
hasAPIAccess: true
cell1:
cellDatabaseUser: nova_cell1 # renamed from OSP17 'nova_cell0'
cellDatabaseInstance: openstack-cell1
cellMessageBusInstance: rabbitmq-cell1
noVNCProxyServiceTemplate:
replicas: 1
metadataServiceTemplate:
replicas: 1
conductorServiceTemplate:
replicas: 1
hasAPIAccess: true
externalEndpoints:
- endpoint: internal
ipAddressPool: internalapi
loadBalancerIPs:
- 172.17.0.80
apiServiceTemplate:
replicas: 1
override:
service:
internal:
metadata:
annotations:
metallb.universe.tf/address-pool: internalapi
metallb.universe.tf/allow-shared-ip: internalapi
metallb.universe.tf/loadBalancerIPs: 172.17.0.80
spec:
type: LoadBalancer
metadataServiceTemplate:
replicas: 1
override:
service:
metadata:
annotations:
metallb.universe.tf/address-pool: internalapi
metallb.universe.tf/allow-shared-ip: internalapi
metallb.universe.tf/loadBalancerIPs: 172.17.0.80
spec:
type: LoadBalancer
schedulerServiceTemplate:
replicas: 1
override:
service:
metadata:
annotations:
metallb.universe.tf/address-pool: internalapi
metallb.universe.tf/allow-shared-ip: internalapi
metallb.universe.tf/loadBalancerIPs: 172.17.0.80
spec:
type: LoadBalancer
noVNCProxyServiceTemplate:
replicas: 1 #FIXME: or only need to set if just for cell1?
# FIXME: not needed for VNCservice?
override:
service:
metadata:
annotations:
metallb.universe.tf/address-pool: internalapi
metallb.universe.tf/allow-shared-ip: internalapi
metallb.universe.tf/loadBalancerIPs: 172.17.0.80
spec:
type: LoadBalancer
'
```

## Post-checks

> **NOTE** Post-adoption, there should be no compute hosts in the central (standalone) stack for
> the only supported multi-cell topology there.
The former pre-adoption central cell's `nova` DB (in terms of OSP) is going to
be no longer used.

FIXME: How to/should we adopt Nova compute hosts from the
central stack of the source envirnment, if any?

Verify the other cells databases naming (should become unchanged):
```
nova_api -> nova_api
nova_cell0 -> nova_cell0
nova_cell1 -> nova_cell1
nova -> no longer in use FXIME: its records should migrate to?
```

* See that Nova endpoints are defined and pointing to the
podified FQDNs and that Nova API responds.

```
alias openstack="oc exec -t openstackclient -- openstack"
openstack endpoint list | grep nova
# Without OpenStack client for Nova installed:
NOVA_PUBLIC_URL=$(openstack endpoint list -c 'Service Name' -c 'Service Type' -c URL | grep nova | grep public | awk '{ print $6; }')
curl "$NOVA_PUBLIC_URL"
# With OpenStack client for Nova installed:
openstack server list
```

TODO: checks for cells mappings, compare it to the values noted earlier
TODO: check for a VM previosely running in 'nova' cell, should be now in `nova_cell1`
22 changes: 22 additions & 0 deletions docs/openstack/backend_services_deployment.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,28 @@ podified OpenStack control plane services.

## Pre-checks

> **NOTE** The multi-cells v2 topology under adoption testinig is a central stack without multiple cells. Multi-stack topology will result
> in different cells DBs mappings and will be using a different naming scheme.
Get the database_connection and transport_url cells mappings on the source OSP environment, before those get renamed during
the [databases adoption](mariadb_copy.md). Note those below to compare it later with the renamed post-adoption values. Post-adoption, the `nova_cell0` mapping should remain intact, while the `nova` one should get renamed to `nova_cell1`. The `nova_api` DB (not shown here) should retain its name as well.

Firstly, check the templated view stored in the galera database:
```bash
podman exec -it galera-bundle-podman-0 mysql -uroot nova_api -e"select uuid,name,transport_url,database_connection,disabled from cell_mappings" | grep '|'
| uuid | name | transport_url | database_connection | disabled |
| 00000000-0000-0000-0000-000000000000 | cell0 | none:/// | mysql+pymysql://{username}:{password}@192.168.122.99/nova_cell0?read_default_file=/etc/my.cnf.d/tripleo.cnf&read_default_group=tripleo | 0 |
| 58036269-e862-4b3d-943d-2dbd0fc2d915 | default | rabbit://{username}:{password}@standalone.ctlplane.localdomain:5672/?ssl=0 | mysql+pymysql://{username}:{password}@192.168.122.99/nova?read_default_file=/etc/my.cnf.d/tripleo.cnf&read_default_group=tripleo | 0 |
```

Then note its Nova representation (showing names and passwords):
```bash
podman exec -it nova_api nova-manage cell_v2 list_cells --verbose | grep '|'
| Name | UUID | Transport URL | Database Connection | Disabled |
| cell0 | 00000000-0000-0000-0000-000000000000 | none:/// | mysql+pymysql://nova:[email protected]/nova_cell0?read_default_file=/etc/my.cnf.d/tripleo.cnf&read_default_group=tripleo | False |
| default | 58036269-e862-4b3d-943d-2dbd0fc2d915 | rabbit://guest:[email protected]:5672/?ssl=0 | mysql+pymysql://nova:[email protected]/nova?read_default_file=/etc/my.cnf.d/tripleo.cnf&read_default_group=tripleo | False |
```

## Procedure - backend services deployment

* Make sure you are using the OpenShift namespace where you want the
Expand Down

0 comments on commit 827b289

Please sign in to comment.