Try   HackMD

CloudStack 4.17.2 Installation Guide

Tags: CloudStack past

Requirement

OS:Ubuntu 22.04

Configure SSH

Update apt

apt update

Install SSH

apt install openssh-server -y

Configure SSH config

Install vim to edit files

apt install vim -y

Edit SSH config

vim /etc/ssh/sshd_config

Apend to end

PermitRootLogin yes
KexAlgorithms=+diffie-hellman-group-exchange-sha1
PubkeyAcceptedKeyTypes=+ssh-dss
HostKeyAlgorithms=+ssh-dss
KexAlgorithms=+diffie-hellman-group1-sha1

Restart SSH let config take effect

systemctl restart ssh

Configure Network

Install Net-Tools first

apt install net-tools -y

You need to know your network card name, ip, gateway, subnet mask to continue to the next step

Get network card detail

ifconfig

Edit configure files

vim /etc/netplan/01-network-manager-all.yaml

Modify it as follows

network:
  renderer: networkd
  ethernets:
    NATNIC:
      dhcp4: false
      dhcp6: false
    NATNIC.200:
      dhcp4: false
      dhcp6: false
  bridges:
    cloudbr0:
      dhcp4: no
      dhcp6: no
      mtu: 1500
      interfaces: [NATNIC]
      addresses: [LANIP/CIDR]
      routes:
       - to: default
         via: GATEWAY
      nameservers:
        addresses: [8.8.8.8,8.8.4.4]
      parameters:
        stp: false
        forward-delay: 5
    cloudbr1:
      dhcp4: no
      dhcp6: no
      interfaces: [NATNIC.200]
      parameters:
        stp: false
        forward-delay: 5

NATNIC is your network card name
LANIP is your network card ip
CIDR is your network card subnet mask
GATEWAY is your network card gateway

Check and apply

Check config correct

netplan try

Let config take effect

netplan apply

Install & Configure NFS

Install NFS

apt install nfs-kernel-server nfs-common -y

Make directory for NFS mount

mkdir -p /export/primary
mkdir /export/secondary
mkdir /mnt/primary
mkdir /mnt/secondary

Set directory permissions

chmod -R 777 /export/primary
chmod -R 777 /export/secondary
chmod -R 777 /mnt/primary
chmod -R 777 /mnt/secondary
echo "/export/secondary *(rw,async,no_root_squash,no_subtree_check)" >> /etc/exports
echo "/export/primary *(rw,async,no_root_squash,no_subtree_check)" >> /etc/exports

Configure NFS

vim /etc/default/nfs-kernel-server

Append to end

LOCKD_TCPPORT=32803
LOCKD_UDPPORT=32769
MOUNTD_PORT=892
RQUOTAD_PORT=875
STATD_PORT=662
STATD_OUTGOING_PORT=2020

Enable NFS

systemctl enable nfs-kernel-server

Mount NFS

exportfs -a

Auto mount in startup

vim /etc/fstab

Append to end

LANIP:/export/primary    /mnt/primary   nfs defaults 0 0
LANIP:/export/secondary    /mnt/secondary   nfs defaults 0 0

LANIP is your network card IP

Mount NFS to debug

mount -a

Install & Configure CloudStack Management

Install MySQL

Install database before install cloudstack management

apt install mysql-server -y

Configure MySQL

vim /etc/mysql/conf.d/cloudstack.cnf
[mysqld]
server-id=master-01
innodb_rollback_on_timeout=1
innodb_lock_wait_timeout=600
max_connections=350
log-bin=mysql-bin
binlog-format = 'ROW'

Enable and Start MySQL

systemctl enable mysql.service
systemctl start mysql.service

Initialize MySQL

mysqlRPassword is password you want to change

mysql -u root
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by 'mysqlRPassword';
exit
mysql_secure_installation

Enter password first then, You will see selections

Would you like to setup VALIDATE PASSWORD component? N
Change the password for root ?  N
Remove anonymous users?  N
Disallow root login remotely?  Y
Remove test database and access to it? Y
Reload privilege tables now? Y

Install CloudStack Managment

Add CloudStack Managment to apt source

echo deb http://download.cloudstack.org/ubuntu focal 4.17  > /etc/apt/sources.list.d/cloudstack.list
wget -O - http://download.cloudstack.org/release.asc|apt-key add -

Then update apt

apt update

Install JAVA before install CloudStack Managment

apt-get install chrony openjdk-11-jre-headless -y

Install CloudStack Managment

apt-get install cloudstack-management -y

Setup CloudStack database

cloudstack-setup-databases cloud:mysqlCPassword@localhost \
--deploy-as=root:mysqlRootPassword \
-e file \
-m managementServerKey \
-k databaseKey \
-i LANIP

mysqlCPassword is the password of the account created by cloudstack
managementServerKey is the management server key
databaseKey is database key

Complate configure CloudStack Managment

cloudstack-setup-management

Install SystemVM for CloudStack Managment

/usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt \
-m /mnt/secondary \
-u http://download.cloudstack.org/systemvm/4.17/systemvmtemplate-4.17.2-kvm.qcow2.bz2 \
-h kvm \
-s managementServerKey \
-F

managementServerKey is the key you just set

Set sudoers to make sure everything works

vim /etc/sudoers

Append to end

Defaults:cloud !requiretty

Install CloudStack Agent

apt install cloudstack-agent -y

Configure QENU

vim /etc/libvirt/qemu.conf

Find the identifier and ucomment or change or append to config

vnc_listen = "0.0.0.0"

Configure Hypervisor

vim /etc/libvirt/libvirtd.conf

Find the identifier and ucomment or change or append to config

listen_tls = 0
listen_tcp = 1
tcp_port = "16509"
auth_tcp = "none"
mdns_adv = 0
vim /etc/default/libvirtd

Find the identifier and ucomment or change or append to config

LIBVIRTD_ARGS="--listen"

Mask libvirt for listening

systemctl mask libvirtd.socket libvirtd-ro.socket \
libvirtd-admin.socket libvirtd-tls.socket libvirtd-tcp.socketd

Disable Apparmor

ln -s /etc/apparmor.d/usr.sbin.libvirtd /etc/apparmor.d/disable/
ln -s /etc/apparmor.d/usr.lib.libvirt.virt-aa-helper /etc/apparmor.d/disable/
apparmor_parser -R /etc/apparmor.d/usr.sbin.libvirtd
apparmor_parser -R /etc/apparmor.d/usr.lib.libvirt.virt-aa-helper

All Done

Some problem solution

If you get a secondary not found error

systemctl restart nfs-server.service
exportfs -a
mount -a
systemctl restart cloudstack-agent.service

Then restart systemvm in manager