목차

kolla-ansible general configuraion

/etc/kolla/config/global.conf

[DEFAULT]
# rpc_response_timeout (def: 60)
rpc_response_timeout: 600
api_limit_max = 1000

# oslo.db config
# https://docs.openstack.org/oslo.db/latest/reference/opts.html
[database]
# Maximum number of SQL connections to keep open in a pool. Setting a value of 0 indicates no limit. Default) 5
max_pool_size = 10

/etc/kolla/config/cinder.conf

[DEFAULT]
sf_volume_create_timeout = 600
verify_glance_signatures = disabled

/etc/kolla/config/nova.conf

[DEFAULT]
block_device_allocate_retries = 1800
block_device_allocate_retries_interval = 3

/etc/kolla/config/neutron/ml2_conf.ini

Openvswitch(OVS)환경의 경우

[ml2]
type_drivers = flat,vlan,vxlan,geneve
tenant_network_types = vxlan
mechanism_drivers = openvswitch,l2population
extension_drivers = port_security

[ml2_type_vlan]
network_vlan_ranges = physnet1

[ml2_type_flat]
flat_networks = physnet1

[ml2_type_vxlan]
vni_ranges = 1:1000

OVN 환경의 경우

[ml2]
type_drivers = flat,vlan,vxlan,geneve
tenant_network_types = geneve
mechanism_drivers = ovn,l2population
extension_drivers = port_security

[ml2_type_vlan]
network_vlan_ranges = physnet1

[ml2_type_flat]
flat_networks = physnet1

[ml2_type_vxlan]
vni_ranges = 1:1000

/etc/kolla/config/masakari/masakari-monitors.conf

[host]
monitoring_interval = 20

[callback]
retry_max = 2

[introspectiveinstancemonitor]
guest_monitoring_interval = 10
guest_monitoring_timeout = 2
guest_monitoring_failure_threshold = 2

배포 스크립트

deploy.sh

#!/bin/bash

CURR="0"
RELEASE="2024.1"
while true; do

    echo "########################";
    echo -n "0) ping nodes"; if [ $CURR == 0 ]; then echo -n " <== Current"; fi; echo "";
    echo -n "1) bootstrap"; if [ $CURR == 1 ]; then echo -n " <== Current"; fi; echo "";
    echo -n "2) precheck"; if [ $CURR == 2 ]; then echo -n " <== Current"; fi; echo "";
    echo -n "3) deploy"; if [ $CURR == 3 ]; then echo -n " <== Current"; fi; echo "";
    echo -n "4) post-deploy"; if [ $CURR == 4 ]; then echo -n " <== Current"; fi; echo "";
    echo -n "5) install client tools"; if [ $CURR == 5 ]; then echo -n " <== Current"; fi; echo "";
    echo -n "d) destroy"; if [ "$CURR" == "d" ]; then echo -n " <== Current"; fi; echo "";
    echo -n "p) purge images"; if [ "$CURR" == "p" ]; then echo -n " <== Current"; fi; echo "";
    echo -n "u) update os"; if [ "$CURR" == "u" ]; then echo -n " <== Current"; fi; echo "";
    echo -n "r) reboot nodes"; if [ "$CURR" == "r" ]; then echo -n " <== Current"; fi; echo "";
    echo -n "s) shutdown nodes"; if [ "$CURR" == "s" ]; then echo -n " <== Current"; fi; echo "";
    echo -n "c) ceph purging"; if [ "$CURR" == "c" ]; then echo -n " <== Current"; fi; echo "";
    echo -n "m) mariadb recovery"; if [ "$CURR" == "m" ]; then echo -n " <== Current"; fi; echo "";
    echo "exit) quit";
    echo "########################";
    echo "Choice) ";

    read x
    if [[ $x = "" ]]; then continue; fi
    CURR=$x;
    case $x in
        exit) break ;;

        0) echo ping nodes...;
	ansible -i multinode all -m ping;
	;;

        1) echo Bootstraping...;
        kolla-ansible -i ./multinode bootstrap-servers;
        ;;

        2) echo Prechecking... ;
        kolla-ansible -i ./multinode prechecks;
        ;;

        3) echo Deploying... ;
        kolla-ansible -i ./multinode deploy;
        ;;

        4) echo post-deploy... ;
        kolla-ansible -i ./multinode post-deploy;
        ;;

        5) echo install client tools... ;
        pip install python-openstackclient python-cinderclient python-glanceclient python-novaclient python-neutronclient python-ironicclient python-designateclient python-heatclient python-manilaclient  python-swiftclient -c https://releases.openstack.org/constraints/upper/${RELEASE};
        ;;

        d) echo Destroying.. ;
	while true; do
	read -p "Do you wish to DELETE ALL? " yn
	case $yn in
        	[Yy]* ) 
		ansible -m shell -a 'killall qemu-kvm' -i multinode compute;
        	kolla-ansible -i ./multinode destroy --yes-i-really-really-mean-it;
		break;;
	        [Nn]* ) break;;
	        * ) echo "Please answer yes or no.";;
	esac
	done
        ;;

        p) echo image purging..;
        ansible -m shell -a 'docker rmi $(docker images -q)' -i multinode all;
        ;;

        u) echo update os..;
        ansible -m shell -a 'yum -y update; sync;' -i multinode all;
        ;;

	r) echo reboot nodes..;
	ansible -m shell -a 'sync;reboot' -i multinode control;
	ansible -m shell -a 'sync;reboot' -i multinode compute;
	;;

	s) echo shutdown nodes..;
	ansible -m shell -a 'sync;shutdown -h now' -i multinode control;
	ansible -m shell -a 'sync;shutdown -h now' -i multinode compute;
	;;

	c) echo ceph purging..;
        ansible -m shell -a 'for i in `rados lspools`; do rados purge ${i} --yes-i-really-really-mean-it; done' -i '192.168.41.31,' all
        ;;

        m) echo MariaDB recovery.. ;
        while true; do
        read -p "Do you wish to run MariaDB Recovery? >" yn
        case $yn in
                [Yy]* )
		cd ~;
		echo 'stop control1 mariadb container...';
		ansible -m shell -a 'docker stop mariadb' -i multinode control;
		if [ $? -eq 0 ]; then
			echo "mariadb stop successfully"
			kolla-ansible -i multinode mariadb_recovery;
		else
			echo "mariadb stop failed"
		fi
		break;;

                [Nn]* ) break;;
                * ) echo "Please answer yes or no.";;
        esac
        done
        ;;

        *) echo "Unknown response, enter a number or type 'exit' to quit" ;;
    esac
done

DB 복구용 스크립트

mariadb_recovery.sh

#!/bin/bash

##############
# recovery 시작하기 전에 control1~3 에서 mariadb container를 종료하여야 한다.
# docker stop mariadb

echo "#################################################################################"
echo "###### Mariadb Recovery 전에 controller에서 mariadb container를 종료하십시오."
echo "###### mariadb container MUST STOP on all contoller node before run this script."
echo "command: docker stop mariadb"
echo ""
echo "진행하시겠습니까?"
echo "Do you wish to run MariaDB Recovery?"

select yn in "Yes" "No"; do
    case $yn in
        Yes )
	cd ~;
	echo 'stop control1 mariadb container...';
	ansible -m shell -a 'docker stop mariadb' -i multinode control;
	if [ $? -eq 0 ]; then
		echo "mariadb stop successfully"
		kolla-ansible -i multinode mariadb_recovery;
	else
		echo "mariadb stop failed"
	fi
	break;;

        No ) exit;;
	* ) exit;;
    esac
done