[확인하고싶은 것]
root@sooyeon 0727]# virsh domifaddr test1
Name MAC address Protocol Address
-------------------------------------------------------------------------------
vnet0 52:54:00:50:aa:2e ipv4 192.168.122.66/24
[root@sooyeon 0727]# virsh domifaddr test1 | grep -v Name
-------------------------------------------------------------------------------
vnet0 52:54:00:50:aa:2e ipv4 192.168.122.66/24
[root@sooyeon 0727]# virsh domifaddr test1 | grep -v Name | gawk '{print $4}'
192.168.122.66/24
[root@sooyeon 0727]# virsh domifaddr test1 | grep -v Name | gawk '{print $4}' | sed '/^$/d'
192.168.122.66/24
[root@sooyeon 0727]# virsh domifaddr test1 | grep -v Name | gawk '{print $4}' | sed '/^$/d' | gawk -F/ '{print $1}'
192.168.122.66
top
yum -y install sysstat
sar 1 3 : 1초마다 CPU상태 3번점검하고 평균값 보여줌
가상머신들의 CPU 상태를 강제로 100%로 만들기 위한 구성내용
`virsh console test1 # 가상머신 test1으로 들어가는 것
yum -y install epel-release
yum -y install stress
stress -c 1 # 1개의 CPU를 100%로 만들겠다(2개였다면 50%)
yum -y install virt-top
virt-top
원래 host로 돌아오려면 : ctrl + ]

25%는 host 용량 중 25% 쓰고있다는 뜻
빠져나오려면 q
stress 끄기 : ctrl + c
ssh-keyscan localhost > ~/.ssh/known_hosts
실습
/usr/bin/allvm 의 내용을 확인하여 undefine은 인스턴스를 삭제하는 명령이다. 단, 인스턴스가 삭제되고 디스크는 여전히 /cloud 상에 남아있게 된다. undefine했을 때 다음의 옵션을 추가하여 디스크까지 삭제되도록 해 보세요
—remove-all-storage
allvm undefine → virsh undefine test1 —remove-all-storage
다음의 조건을 만족하는 스크립트를 작성
인스턴스 생성 프로그램
-설치할 이미지를 선택하세요.
CentOS7
Ubuntu 18.04
선택 : 1
-설치할 인스턴스의 이름을 입력하세요 : test
-설치할 인스턴스의 개수 선택[1~4] : 3
-CPU개수 선택[1~4] : 1
-메모리 사이즈 선택[1~4G] : 1
설치를 진행하겠습니다.
[결과안내]
test1의 IP 주소 : 192.168.122.201
test2의 IP 주소 : 192.168.122.202
현재 호스트의 CPU 사용률 : 23.03%
설치가 완료되었습니다. 계속 진행하시려면 아무 키나 입력하세요
조건 : 잘못된, null값이 입력되면 화면에는 잘못된 입력입니다. 다시 입력하세요가 나오도록
기존 작성 코드에서 gawk 정규식 활용
인스턴스 이름 → 반드시 소문자만 이용(최소 5~10)
CPU → 반드시 숫자 (1~4)
RAM - 반드시 숫자 (1~4) 잘못된입력입니다 GB단위로 입력하세요
-------------- 인스턴스 생성 ---------------------
#!/bin/bash
clear
echo -e "\t\t\t인스턴스 생성 프로그램 "
echo
# 설치할 이미지 선택
PS3="설치할 이미지를 선택하세요 : "
select comm in "CentOS7" "Ubuntu18.04"
do
case $comm in
CentOS7)
name="CentOS7-Base.qcow2"
break ;;
Ubuntu18.04)
name="Ubuntu1804.qcow2"
break ;;
*)
echo "잘못된 번호 선택. 다시 입력하세요." ;;
esac
done
# 인스턴스 이름 입력
echo
echo -n "인스턴스 이름 입력 : "
read instancename
# 설치할 인스턴스 개수 선택
echo -n "설치할 인스턴스 개수 선택[1~4] : "
read num
while [ 1 ]
do
if [ $num -ge 1 ] && [ $num -le 4 ]
then
break
else
echo "잘못된 입력입니다. 다시 입력하세요"
echo -n "설치할 인스턴스 개수 선택[1~4] : "
read num
fi
done
echo
echo -n "CPU 개수 선택(1~4) : "
read vcpus
while [ 1 ]
do
if [ $vcpus -ge 1 ] && [ $vcpus -le 4 ]
then
break
else
echo "잘못된 입력입니다. 다시 입력하세요"
echo -n "CPU 개수 선택 (1~4) : "
read vcpus
fi
done
echo
echo -n "메모리 사이즈 선택(1~4GB) : "
read tempmem
while [ 1 ]
do
if [ $tempmem -ge 1 ] && [ $tempmem -le 4 ]
then
break
else
echo "잘못된 입력입니다. 다시 입력하세요"
echo -n "메모리 사이즈 선택(1~4GB) : "
read tempmem
fi
done
ram=$(expr $tempmem \* 1024 )
echo
echo "설치가 진행됩니다"
for (( i=1; i<=$num; i++ ))
do
cp /cloud/$name /cloud/${instancename}${i}.qcow2
#echo "$instancename$i $vcpus $ram"
virt-install --name ${instancename}${i} --vcpus $vcpus --ram $ram --network network:default,model=virtio --disk /cloud/${instancename}${i}.qcow2 --import --noautoconsole > /dev/null
done
echo "설치 완료"
#확인
virsh list --all
sleep 120
# 결과안내
for (( i=1; i<$num+1; i++))
do
ip=$(virsh domifaddr ${instancename}${i} | grep -v Name | gawk '{print $4}' | sed '/^$/d' | gawk -F/ '{print $1}')
echo "${instancename}${i} 의 IP 주소 : $ip"
done
var=$(sar 1 3 | tail -1 | gawk '{print $8}')
cpuutil=$(echo "scale=4; 100 - $var" | bc)
mysql -h 192.168.1.199 -u testuser -ptest123