Environment

Hostname vCPU Memory Storage NIC Management VLAN 10 Boot Order
jh-maas001 4 4GiB 40GiB 1 10.10.0.10 - Disk
jh-juju-controller001 2 4GiB 40GiB 1 10.10.0.11 - PXE
jh-openstack-controller001 4 8GiB 40GiB 2 10.10.0.12 192.168.10.12 PXE
jh-hyperconverge001 6 8GiB/16GiB 40GiB Root, 3x 25GiB OSD 2 10.10.0.13 192.168.10.13 PXE
jh-hyperconverge002 6 8GiB/16GiB 40GiB Root, 3x 25GiB OSD 2 10.10.0.14 192.168.10.14 PXE
jh-hyperconverge003 6 8GiB/16GiB 40GiB Root, 3x 25GiB OSD 2 10.10.0.15 192.168.10.15 PXE
Operating System Ubuntu 20.04 LTS (Focal)
OpenStack Version Yoga
Ceph Version Pacific
Hypervisor KVM
MAAS Version 3.2
Juju Version 2.9.35

Topology

OpenStack Lab.png

MAAS Introduction

MAAS, which stands for metal-as-a-service, is a tool developed by Canonical for server provisioning which has reliability to deliver a fast and optimized operating system installation. MAAS is also an open source software mostly build in python language. MAAS treats bare metal (physical server) like virtual machines or instances in the cloud, so think of MAAS like KVM virt manager but it used for provisioning bare metal.

MAAS supports major system BMCs and chassis controllers, MAAS implements all the standard features of a public cloud — like instance metadata and cloud-init.

MAAS-diagram-grey.svg

Juju Introduction

Juju is also an open source tool developed by Canonical which is an orchestration tool that can build and manage software-based infrastructure on cloud or bare metal. Juju allows you to model, configure, manage, maintain, deploy and scale cloud services quickly and efficiently on public clouds as well as on MAAS, OpenStack, and LXD containers.

Juju uses charms to deliver applications to the machines, charms are software bundled with operational knowledge such as install, maintain, upgrade, pause, configure and integrating with other applications.

MAAS & Juju have high reliability at the enterprise level as they make it easy for you to manage your bare metal as well as the software.

Untitled

Initialize MAAS

Configure SSH config file

cat << 'EOF' > $HOME/.ssh/config
# Global Config
Host *
  User ubuntu
  StrictHostKeyChecking no
  UserKnownHostsFile /dev/null
  ServerAliveInterval 10
  TCPKeepAlive yes
  LogLevel ERROR
# Global Config
EOF

Create new SSH keypair

# If you want passwordless keypair just hit enter till the end
ssh-keygen

Install MAAS

Add the repository and then install MAAS packages

apt-add-repository ppa:maas/3.2
apt-get -y install maas maas-region-controller maas-rack-controller net-tools jq
apt-mark hold maas maas-region-controller maas-rack-controller postgresql-12

Configure PostgreSQL

Create temporary statistic file

bash -c cat << 'EOF' > /etc/tmpfiles.d/postgresql-part.conf
## Directory for PostgreSQL temp stat files
d /run/postgresql/12-main.pg_stat_tmp 0700 postgres postgres - -
EOF

systemd-tmpfiles --create /etc/tmpfiles.d/postgresql-part.conf