Ubuntu – Deploy OpenStack with MAAS 2.4 and juju 2.4.1

jujumaasnetworkingopenstackserver

I want to install an OpenStack with my MAAS 2.4 and juju 2.4.1 environment. The MAAS is now running very well and I can manage my hardware with it. I installed juju and a juju-controller (dedicated hardware is provided by MAAS), all wonderful so far!

Now I have taken the juju charm "openstack-base" and adapted it to my hardware (3x Storage-Nodes, 2x Controller-Nodes, 2x Nova-Nodes), here my "bundle.yaml":

machines:
  '0':
    series: bionic
    constraints: "tags=virtual-machine"
  '1':
    series: bionic
    constraints: "tags=virtual-machine"
  '2':
    series: bionic
    constraints: "tags=controller"
  '3':
    series: bionic
    constraints: "tags=controller"
  '4':
    series: bionic
    constraints: "tags=storage"
  '5':
    series: bionic
    constraints: "tags=storage"
  '6':
    series: bionic
    constraints: "tags=storage"
relations:
- - nova-compute:amqp
  - rabbitmq-server:amqp
- - neutron-gateway:amqp
  - rabbitmq-server:amqp
- - keystone:shared-db
  - mysql:shared-db
- - nova-cloud-controller:identity-service
  - keystone:identity-service
- - glance:identity-service
  - keystone:identity-service
- - neutron-api:identity-service
  - keystone:identity-service
- - neutron-openvswitch:neutron-plugin-api
  - neutron-api:neutron-plugin-api
- - neutron-api:shared-db
  - mysql:shared-db
- - neutron-api:amqp
  - rabbitmq-server:amqp
- - neutron-gateway:neutron-plugin-api
  - neutron-api:neutron-plugin-api
- - glance:shared-db
  - mysql:shared-db
- - glance:amqp
  - rabbitmq-server:amqp
- - nova-cloud-controller:image-service
  - glance:image-service
- - nova-compute:image-service
  - glance:image-service
- - nova-cloud-controller:cloud-compute
  - nova-compute:cloud-compute
- - nova-cloud-controller:amqp
  - rabbitmq-server:amqp
- - nova-cloud-controller:quantum-network-service
  - neutron-gateway:quantum-network-service
- - nova-compute:neutron-plugin
  - neutron-openvswitch:neutron-plugin
- - neutron-openvswitch:amqp
  - rabbitmq-server:amqp
- - openstack-dashboard:identity-service
  - keystone:identity-service
- - nova-cloud-controller:shared-db
  - mysql:shared-db
- - nova-cloud-controller:neutron-api
  - neutron-api:neutron-api
- - cinder:image-service
  - glance:image-service
- - cinder:amqp
  - rabbitmq-server:amqp
- - cinder:identity-service
  - keystone:identity-service
- - cinder:cinder-volume-service
  - nova-cloud-controller:cinder-volume-service
- - cinder-ceph:storage-backend
  - cinder:storage-backend
- - ceph-mon:client
  - nova-compute:ceph
- - nova-compute:ceph-access
  - cinder-ceph:ceph-access
- - cinder:shared-db
  - mysql:shared-db
- - ceph-mon:client
  - cinder-ceph:ceph
- - ceph-mon:client
  - glance:ceph
- - ceph-osd:mon
  - ceph-mon:osd
- - ntp:juju-info
  - nova-compute:juju-info
- - ntp:juju-info
  - neutron-gateway:juju-info
- - ceph-radosgw:mon
  - ceph-mon:radosgw
- - ceph-radosgw:identity-service
  - keystone:identity-service
series: bionic
services:
  ceph-mon:
    annotations:
      gui-x: '750'
      gui-y: '500'
    charm: cs:ceph-mon-25
    num_units: 3
    options:
      expected-osd-count: 3
    bindings:
      public: admin-space
      cluster: admin-space
      admin: admin-space
      bootstrap-source: admin-space
      mon: admin-space
      osd: admin-space
      radosgw: admin-space
    to:
    - lxd:4
    - lxd:5
    - lxd:6
  ceph-osd:
    annotations:
      gui-x: '1000'
      gui-y: '500'
    charm: cs:ceph-osd-268
    num_units: 3
    options:
      osd-devices: '/dev/sda /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf /dev/sdg /dev/sdh /dev/sdi /dev/sdj'
    bindings:
      public: admin-space
      cluster: admin-space
      mon: admin-space
    to:
    - '4'
    - '5'
    - '6'
  ceph-radosgw:
    annotations:
      gui-x: '1000'
      gui-y: '250'
    charm: cs:ceph-radosgw-258
    num_units: 1
    bindings:
      public: admin-space
      admin: admin-space
      internal: admin-space
    to:
    - lxd:3
  cinder:
    annotations:
      gui-x: '750'
      gui-y: '0'
    charm: cs:cinder-272
    num_units: 1
    options:
      block-device: None
      glance-api-version: 2
      worker-multiplier: 0.25
    bindings:
      public: admin-space
      admin: admin-space
      internal: admin-space
    to:
    - lxd:2
  cinder-ceph:
    annotations:
      gui-x: '750'
      gui-y: '250'
    charm: cs:cinder-ceph-233
    num_units: 0
    bindings:
      ceph: admin-space
  glance:
    annotations:
      gui-x: '250'
      gui-y: '0'
    charm: cs:glance-267
    num_units: 1
    options:
      worker-multiplier: 0.25
    bindings:
      public: admin-space
      admin: admin-space
      internal: admin-space
    to:
    - lxd:3
  keystone:
    annotations:
      gui-x: '500'
      gui-y: '0'
    charm: cs:keystone-282
    num_units: 1
    options:
      worker-multiplier: 0.25
    bindings:
      public: admin-space
      admin: admin-space
      internal: admin-space
      shared-db: admin-space
    to:
    - lxd:2
  mysql:
    annotations:
      gui-x: '0'
      gui-y: '250'
    charm: cs:percona-cluster-268
    num_units: 1
    options:
      innodb-buffer-pool-size: 256M
      max-connections: 1000
    bindings:
      db-admin: admin-space
      access: admin-space
    to:
    - lxd:3
  neutron-api:
    annotations:
      gui-x: '500'
      gui-y: '500'
    charm: cs:neutron-api-261
    num_units: 1
    options:
      flat-network-providers: physnet1
      neutron-security-groups: true
      worker-multiplier: 0.25
      overlay-network-type: vxlan
      default-tenant-network-type: vxlan
    bindings:
      public: admin-space
      admin: admin-space
      internal: admin-space
      neutron-api: admin-space
      neutron-plugin-api: admin-space
      shared-db: admin-space
      amqp: admin-space
      identity-service: admin-space
      vsd-rest-api: admin-space
      neutron-plugin-api-subordinate: admin-space
      etcd-proxy: admin-space
      midonet: admin-space
      external-dns: admin-space
    to:
    - lxd:2
  neutron-gateway:
    annotations:
      gui-x: '0'
      gui-y: '0'
    charm: cs:neutron-gateway-252
    num_units: 1
    options:
      bridge-mappings: physnet1:br-ex
      data-port: br-ex:eno1
      worker-multiplier: 0.25
    bindings:
      amqp: admin-space
      amqp-nova: admin-space
      neutron-plugin-api: admin-space
      data: admin-space
      quantum-network-service: admin-space
    to:
    - '2'
  neutron-openvswitch:
    annotations:
      gui-x: '250'
      gui-y: '500'
    charm: cs:neutron-openvswitch-250
    num_units: 0
    bindings:
      amqp: admin-space
      data: admin-space
      neutron-control: admin-space
      neutron-plugin: admin-space
      neutron-plugin-api: admin-space
  nova-cloud-controller:
    annotations:
      gui-x: '0'
      gui-y: '500'
    charm: cs:nova-cloud-controller-310
    num_units: 1
    options:
      network-manager: Neutron
      worker-multiplier: 0.25
      console-access-protocol: spice
    bindings:
      public: admin-space
      admin: admin-space
      internal: admin-space
      shared-db: admin-space

      amqp: admin-space
      image-service: admin-space
      identity-service: admin-space
      cloud-compute: admin-space
      cinder-volume-service: admin-space
      neutron-api: admin-space

    to:
    - lxd:3
  nova-compute:
    annotations:
      gui-x: '250'
      gui-y: '250'
    charm: cs:nova-compute-284
    num_units: 2
    options:
      config-flags: default_ephemeral_format=ext4
      enable-live-migration: true
      enable-resize: true
      migration-auth-type: ssh
      virt-type: kvm
      libvirt-image-backend: rbd
    bindings:
      internal: admin-space
      amqp: admin-space
      ceph: admin-space
      ceph-access: admin-space
      cloud-compute: admin-space
      compute-peer: admin-space
      ephemeral-backend: admin-space
      image-service: admin-space
      neutron-plugin: admin-space
    to:
    - '0'
    - '1'
  ntp:
    annotations:
      gui-x: '1000'
      gui-y: '0'
    charm: cs:ntp-27
    num_units: 0
  openstack-dashboard:
    annotations:
      gui-x: '500'
      gui-y: '-250'
    charm: cs:openstack-dashboard-261
    num_units: 1
    bindings:
      public: admin-space
      website: admin-space
      dashboard-plugin: admin-space
      identity-service: admin-space
      cluster: admin-space
    to:
    - lxd:3
  rabbitmq-server:
    annotations:
      gui-x: '500'
      gui-y: '250'
    charm: cs:rabbitmq-server-77
    num_units: 1
    bindings:
      "": admin-space
      amqp: admin-space
      ceph: admin-space
      cluster: admin-space
    to:
    - lxd:2

I know the extensive "bindings" settings are the result of several attempts to get the stuff to work. With this setup, I can successfully deploy the complete juju-charm and all services work (apparently). Now I have configured everything in the "horizon dashboard" and started my instance (cirrOS 0.3.4), however, unfortunately, it is not possible for me to access the external network, therefore there is no internet on the VMs. Also, the instances are not accessible from outside (ext-net -> VM via floating IP).

I think my problem is various assignments of "bridge-mappings" and "data-port" settings. except for the storage-nodes I only use the first network card (eno1) on all servers. Later I want to add another card, but first I try to get it to work at all.

Best Answer

ok, after i had the "ext-br" point to "eno2" i now have access to my external gateway ergo internet! important is the fact, you should leave the interface unconfigured via MAAS, "ovs" ignores these settings anyway or only irritates them. if no own interface is available, a VLAN can also be used.

Related Question