Hi Jayachander

I thought I'd have a go at answering your questions, but (please note) that I'm doing so from the perspective of only having worked on the "Canonical" stack, so I can't answer with respect to other deployment stacks, so obviously read the replies with respect to that.

So the Canonical OpenStack is called "CDO" meaning "Canonical Distribution of OpenStack": you can get a fully supported installation at https://www.ubuntu.com/openstack, but also DIY with all the bits of software is very, very, possible, as everything is Free Software/Open Source.

So the Stack is MaaS running the servers, using Juju to deploy and manage the lifecycle of OpenStack:

On Tue, May 21, 2019 at 4:42 PM Jay See <jayachander.it@gmail.com> wrote:
Hi,

I am trying to deploy OpenStack cloud , before proceeding with deployment I wanted to take suggestion from people using some of these technologies.

Setup / plan: I will be deploying OpenStack cloud using 3 nodes (servers), later on I will be adding more nodes. I want automatically install and provision the OS on the new nodes. I want scale up my cloud with new nodes in near future. If there are any issues in existing OpenStack, I would like to fix them or patch the fixes without much trouble. (I might be using wrong terminology - sorry for that)

3 nodes for a full, production, deployment might be a bit tight.  However, if this is just exploration, then it would be an acceptable starting point.  Most of the CDO OpenStack Juju bundles start at 4 machines.


1. Which tool is better for Bare Metal OS installation?
     I have looked around and found Foremen and MaaS. All the servers we are going to deploy will be running on Ubuntu (16.04 /18.04 LTS). If you have any other suggestions please let me know.

Well, I'd obviously say MaaS (https://maas.io/)  :)  MaaS itself needs a small server for itself exclusive of the nodes, if you'd like the hardware managed in that form.  This means that for a 3 node cluster, you'd need a 4th machine for MaaS itself to run on.


2. Do you suggest me to use Juju to deploy the OpenStack or do all the manual installation for the OpenStack as mentioned in OpenStack installation guide?

So that depends on what you are trying to achieve.  The Juju OpenStack charms work together to install and configure OpenStack to provide an (up to and including an HA) solution.   They take a coordinated view on how to configure a system (including a set of defaults that the OpenStack charms team have arrived at as provided solid solutions), and offer some higher level config values (in the charms) to modify those systems.

The charms also deal with upgrading OpenStack systems between versions and generally deal with most of the lifecycle stuff.  MaaS, Juju and the charms are very much "managing" the system with you; you are not configuring individual config files on nova, neutron, ceph, rabbitmq-server, vault, barbican, swift, etc.

It could feel constraining, as you can't go in and change individual config files, but the charms solution is designed to work as a 'set'.


3. I am bit confused about choosing Kubernetes. If I am going with Juju, can I still use Kubernetes? If yes, if there any documentation please guide me in right direction.

I'm not entirely sure what you mean here?  Do you mean "running Kubernetes alongside OpenStack for other users to use docker on the same hardware", or "running the OpenStack control plane in kubernetes/docker"?

If you mean the former:

There are a set of charms that do Kubernetes (or K8s as it's often called) that work with Juju / MaaS.  So kubernetes can be installed/managed by Juju on a MaaS cluster.  This model (as Juju deployments are called) can be run alongside other models, and CDO is also a Juju model.  More info here: https://www.ubuntu.com/kubernetes

If you mean the latter (i.e. running the control plane in containers), then Juju charms take a different approach.  Many of the services can be run in LXD containers, so that multiple control plane services can be run on the same physical server.  The Juju tool knows how to 'talk' to MaaS and LXD to seamlessly run charms inside containers.

4. I was thinking of going with OpenStack installation over Kubernetes. Is this a right decision?
or
Do I need to do some research between Kubernetes and Docker, find out which one is better?
or
Just install OpenStack without any containers.

Or MaaS + Ubuntu 18.04 machines with LXD + Juju + OpenStack charms -- gives you services in LXD containers :)
 

5. I could not find installation of OpenStack with Kubernetes or Docker. If you know something, could you share the link?

I don't have bigger picture at the moment. If some tools might help in near future. or If you can give any other suggestions, please let me know. 

Well, configuring OpenStack is pretty complicated :) And that's because there is a lot there.  There are multiple ways of configuring it, and there is also the Ansible installation, Docker (kolla), and TrippleO.   Please see here for more details: https://docs.openstack.org/stein/deploy/

For further details on deploying Maas, Juju and the OpenStack charms, then 

1. Welcome to the OpenStack charm guide: https://docs.openstack.org/charm-guide/latest/
2. OpenStack Charms Deployment Guide: https://docs.openstack.org/project-deploy-guide/charm-deployment-guide/stein/ 

Also, feel free to come to #openstack-charms on Freenode where there are always devs/support for the OpenStack charms available.

Hope this helps,
Best regards
Alex.
 

Thanks and Best regards,
Jayachander.


--
Alex Kavanagh - Software Engineer
OpenStack Engineering - Data Centre Development - Canonical Ltd